• [大笑]一群老蚕的小萌们想阻挡大势?没门儿! 2019-08-17
  • 澳媒编辑被诉诽谤华裔商人 庭审闪烁其词状态窘迫 2019-08-17
  • 西南铁路端午假期发送400余万人次 两人不文明乘车或受失信惩戒 2019-08-11
  • 故宫设文创华夏产业基金 2019-08-11
  • 湖南高校:将十九大精神融入基础课教学建设 2019-08-09
  • 美国三大航空公司为何拒改涉台表述 英媒:是白宫要求死扛 2019-08-07
  • 希望在线教育公益平台获第十二届人民企业社会责任奖年度案例奖 2019-08-07
  • 姚晨马伊琍首次对戏大银幕 2019-08-03
  • 第526期:北方春饼PK南方春卷,你更喜欢吃哪一种? 2019-07-28
  • 生活-热门标签-华商生活 2019-07-27
  • 陈海滢的专栏作者中国国家地理网 2019-07-27
  • 王蒙严歌苓刘心武等12位文化名家推荐12本好书[图] 2019-07-23
  • 男子7楼楼顶建游泳池蓄水40吨 官方进入处罚程序 2019-07-17
  • 网络投票刷礼物能不能帮孩子“争上游”? 2019-07-17
  • 秒级人脸识别让被拐孩子早回家 动态人像识别技术给答案 2019-07-16
  • 你好,游客 登录 注册 搜索
    背景:
    阅读新闻

    辽宁体彩十一选五加奖:有关python下二维码识别用法及识别率对比分析

    [日期:2017-07-11] 来源:  作者:朝花夕拾 [字体: ]

    十一选五精准人工计划 www.91ggj.com  最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个??椋簔bar 、zbarlight、zxing。

    1、三个??榈挠梅ǎ?/h2>
    复制代码
    #-*-coding=utf-8-*-
    import os 
    import logging
    import zbar 
    from PIL import Image 
    import zxing
    import random
    import zbarlight
    
    logger=logging.getLogger(__name__)
    if not logger.handlers :logging.basicConfig(level=logging.INFO)
    DEBUG= (logging.getLevelName(logger.getEffectiveLevel())=='DEBUG')  
    
    
    def ocr_qrcode_zbar(filename):
        img=Image.open(filename)
        width, height = img.size
        raw = img.tobytes()
        
        scanner = zbar.ImageScanner()
        scanner.parse_config('enable')        
        #把图像装换成数据
        zarimage = zbar.Image(width, height, 'Y800', raw)    
        #扫描器进行扫描
        scanner.scan(zarimage)
        
        data = '' 
        for symbol in zarimage:
            # 对结果进行一些有用的处理
            data += symbol.data 
        if data:
            logger.debug(u'识别二维码:%s,内容: %s' %(filename ,data))
        else:
            logger.error(u'识别zbar二维码出错:%s' %(filename))
            img.save('%s-zbar.jpg' %filename)  
        return data 
    
    def ocr_qrcode_zbarlight(filename):
        img=Image.open(filename)
    
        width, height = img.size
        raw = img.tobytes()
            
        #把图像装换成数据
        data = zbarlight.qr_code_scanner(raw, width, height)    
    
        if data:
            logger.debug(u'识别二维码:%s,内容: %s' %(filename ,data))
        else:
            logger.error(u'识别zbarlight二维码出错:%s' %(filename))
            img.save('%s-zbar.jpg' %filename)  
        return data 
    
    def ocr_qrcode_zxing(filename):
        #在当前目录生成临时文件,规避java的路径问题
        img= Image.open(filename)
        ran= int(random.random()*100000)
        img.save('%s%s.jpg' %(os.path.basename(filename).split('.')[0],ran))
        zx = zxing.BarCodeReader()
        data =''
        zxdata = zx.decode('%s%s.jpg' %(os.path.basename(filename).split('.')[0],ran))
        #删除临时文件
        os.remove('%s%s.jpg' %(os.path.basename(filename).split('.')[0],ran))
        if zxdata:
            logger.debug(u'zxing识别二维码:%s,内容: %s' %(filename ,zxdata.data))
            data = zxdata.data
        else:
            logger.error(u'识别zxing二维码出错:%s' %(filename))
            img.save('%s-zxing.jpg' %filename)  
        return data
    
        
    if __name__ == '__main__': 
        filename =r'D:\python\00025328.jpg'
     
        #zbar二维码识别
        ltext = ocr_qrcode_zbar(filename)
        logger.info( u'[%s]Zbar二维码识别:[%s]!!!' %(filename,ltext))
        print ltext
        
        #zbarlight二维码识别
        ltext = ocr_qrcode_zbarlight(filename)
        logger.info( u'[%s]Zxing二维码识别:[%s]!!!' %(filename,ltext))
        print ltext 
    
        #zxing二维码识别
        ltext = ocr_qrcode_zxing(filename)
        logger.info( u'[%s]Zxing二维码识别:[%s]!!!' %(filename,ltext))
        print ltext
    复制代码

     

    2、使用对比

    1、zbar和zbarlight内核一致,都是基于zbar的dll编译加载的。

    2、zbarlight使用比zbar更简单,不过是在zbar的基础又做了一点点封装而已。

    3、zxing是基于java的zxing核心的python分支,其原理是调用javaw 加载zxing的core.jar包,再获取输出结果。

    zxing的调试是一个大坑,网上的资料都存在这样那样的信息过时问题,加上zxing对java的依赖问题更多,这篇博客 //www.cnblogs.com/oucsheep/p/6269813.html 相对来说比较清晰,但是估计初学者看起来会比较累。

     

     

    3、总结:

    1、项目的图片来源于是纸质文件的扫描件(qrcode),实际情况相对复杂,存在打印偏移,与其他文字重叠、图片变形、色带缺墨导致图片残缺等多种可能性。虽然经过一系列的图片处理,但目前来看三个包在容错性都不算太好。

    2、但是,但是…… 微信中的“扫一扫”,却可以做到正常识别,应该是微信的二维码识别是有自己的独到算法,遗憾微信没有开放接口,也没有查到相关资料。

    3、支付宝的"扫一扫",识别率略次于微信,但是也比开源的几个包要强的多。

    4、网上有一些付费api,识别率也一般,怀疑也是基于zxing和zbar的二次封装。

    5、三流无名厂家的二维码扫描头硬件,直接扫描该纸质文件,识别率基本可以做到90%以上,当然这不排除是扫描转换时产生的信息丢失这个重要因素。

    综上,以识别能力排序,硬件>微信>支付宝>zxing>zbarlight(zbar)。

    收藏 推荐 打印 | 录入:Cstor | 阅读:
    本文评论   查看全部评论 (0)
    表情: 表情 姓名: 字数
    点评:
           
    评论声明
    • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
    • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
    • 本站管理人员有权保留或删除其管辖留言中的任意内容
    • 本站有权在网站内转载或引用您的评论
    • 参与本评论即表明您已经阅读并接受上述条款
  • [大笑]一群老蚕的小萌们想阻挡大势?没门儿! 2019-08-17
  • 澳媒编辑被诉诽谤华裔商人 庭审闪烁其词状态窘迫 2019-08-17
  • 西南铁路端午假期发送400余万人次 两人不文明乘车或受失信惩戒 2019-08-11
  • 故宫设文创华夏产业基金 2019-08-11
  • 湖南高校:将十九大精神融入基础课教学建设 2019-08-09
  • 美国三大航空公司为何拒改涉台表述 英媒:是白宫要求死扛 2019-08-07
  • 希望在线教育公益平台获第十二届人民企业社会责任奖年度案例奖 2019-08-07
  • 姚晨马伊琍首次对戏大银幕 2019-08-03
  • 第526期:北方春饼PK南方春卷,你更喜欢吃哪一种? 2019-07-28
  • 生活-热门标签-华商生活 2019-07-27
  • 陈海滢的专栏作者中国国家地理网 2019-07-27
  • 王蒙严歌苓刘心武等12位文化名家推荐12本好书[图] 2019-07-23
  • 男子7楼楼顶建游泳池蓄水40吨 官方进入处罚程序 2019-07-17
  • 网络投票刷礼物能不能帮孩子“争上游”? 2019-07-17
  • 秒级人脸识别让被拐孩子早回家 动态人像识别技术给答案 2019-07-16
  • 福建快三提前开奖软件 快赢481开奖新版视频 北京幸运28是不是假的 体彩p3近二年走势图 中彩网图表走势图 大乐透第19058开奖结果 专家解说江苏十一选五 大乐透中奖奖金计算 2014上市的体彩顶呱刮 快3稳赚公式 广西11选5如何中奖 体彩20选5 澳洲幸运5是正规的彩票吗 大乐透开结果 11选5贵州