python识别二维码(3.6环境下的zxing包进行识别并解决中文报错问题)

python用于识别二维码的主要有三个包,zbar 、zbarlight、zxing。
从网上down了一个关于zxing的代码下来试试,程序报错是编码问题。重新学习了一下好像对伸手党不是很友好。于是重新开始学习其他两种包。

zbar:
zbar和zbarlight内核一致,都是基于zbar的dll编译加载的。
由于zbar只有32位的版本,听闻64位python最后会出现“ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。"错误,暂时无解。

zbarlight:
zbar和zbarlight内核一致,都是基于zbar的dll编译加载的。安装过程中出现
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/
但是检查过我的系统环境,根据网上教程重新装过一次,也没用,还是同样的问题,暂时没有想到解决方法。

zxing:
zxing是基于java的zxing核心的python分支,其原理是调用javaw 加载zxing的core.jar包,再获取输出结果。按照网上所说的,识别能力来说,zxing>zbarlight(zbar)。所以我又回来了!

下载:
pip3 install zxing
或者直接在pycharm中导入,ctrl+回车
实现代码:

import os
import logging
from PIL import Image
import zxing    #导入解析包
import random


logger=logging.getLogger(__name__)
if not logger.handlers :logging.basicConfig(level=logging.INFO)
DEBUG= (logging.getLevelName(logger.getEffectiveLevel())=='DEBUG')

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))
    print(zxdata)
    #删除临时文件
    os.remove('%s%s.jpg' %(os.path.basename(filename).split('.')[0],ran))
    if zxdata:
        logger.debug(u'zxing识别二维码:%s,内容: %s' %(filename ,zxdata))
        data = zxdata
    else:
        logger.error(u'识别zxing二维码出错:%s' %(filename))
        img.save('%s-zxing.jpg' %filename)
    return data

if __name__ == '__main__':
    filename = r'G:\wx\ww\c5a9367c3df1d2c8d64f1dc28bdb279.png'
    #zxing二维码识别
    ltext = ocr_qrcode_zxing(filename)
    logger.info( u'[%s]Zxing二维码识别:[%s]!!!' %(filename,ltext))
    print(ltext)

注意,以上代码识别的二维码信息中不能为中文。不然会报错,解决方法需要另外学习,稍等我一会。
打印出来的信息就是原始的二维码信息了。以上代码也是从同行处借鉴而来,学习参考。。

其他两种方法暂时么有尝试过,电脑位数实在令望而却步。

中文报错问题解决:
找到python3安装路径下的zxing包,进去在init修改源码,将barcode函数中的decode(),加上“gkb”,运行即可。

从另外大牛那里学习到的是将函数直接return utf-8,尝试过,没有用,不知道为什么。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342