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


本文摘自php中文网,作者巴扎黑,侵删。

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

1、三个模块的用法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

#-*-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

2、使用对比

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

阅读剩余部分

相关阅读 >>

Python之网页爬虫教程

ipad 能做Python开发吗

Python中的条件语句怎么写01:单个和多个条件判断

使用Python进行手机号和数字的随机生成方法

《流畅的Python》怎么样

Python实现二分查找与快速排序实例详解

Python什么时候用类方法

Python语言支持中文吗

Python中matplotlib库的用法介绍

Python中randint函数的用法是什么?

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...