好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

对比分析python下识别二维码用法和识别率

最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar 、zbarlight、zxing。

1、三个模块的用法:

#-*-coding=utf-8-*-import os 
import loggingimport zbar 
from PIL import Image 
import zxingimport randomimport 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.dataelse:
        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 

查看更多关于对比分析python下识别二维码用法和识别率的详细内容...

  阅读:49次