文章目录
文章目录
前言
如图,班级50余名学生提交的核酸检测二维码和其他图片混合,需要逐一验证二维码信息是否填写正确。用Python编写一个小程序来实现批量识别提取,导入数据到电子表格,可以直接看电子表格核对。能极大减轻工作量。
一、工具
Python 3.8.6
二、实现
1.思路
1.导入os模块,用os.walk()函数进行文件遍历,将类型为jpg,gif,png的文件名读取出来。 2.用pyzbar模块进行二维码识别,获取二维码信息。 3.导入urllib模块,对识别的内容进行解码。 4.导入xlwt模块将解码的内容写入excel文件中。 需要解决的问题:非二维码图片信息要过滤掉。 好了,将程序放到图片目录中运行,得到电子表格。打开电子表格,基本一眼就能看出哪位同学的二维码有问题。结果如下图:
2.代码
代码如下(示例):
# -*- coding: utf-8 -*- from pyzbar import pyzbar from PIL import Image import os import urllib.parse import xlwt def shibie(filename): global i if len(filename) != 0: img = Image.open(filename) # 含有条形码或二维码的图片 results = pyzbar.decode(img) # 对图片进行解码 for result in results: s=urllib.parse.unquote(result.data.decode(utf-8)) ls=s.split(&) if ls[0]!="": i+=1 worksheet.write(i,0,i) worksheet.write(i,1,ls[0]) worksheet.write(i,2,ls[2]) worksheet.write(i,3,ls[5]) worksheet.write(i,4,ls[6]) if __name__ == __main__: print("开始识别……") workbook = xlwt.Workbook() worksheet = workbook.add_sheet(Sheet1) worksheet.write(0,0,"序号") worksheet.write(0,1,"姓名") worksheet.write(0,2,"身份证号") worksheet.write(0,3,"联系电话") worksheet.write(0,4,"地址") i=0 Epath=os.walk(os.getcwd()) for path,dir,filelist in Epath: for filename in filelist: filename=os.path.join(path,filename) if filename[-3:] in ["jpg","png","gif"]: shibie(filename) workbook.save("MyExcel.xls") input("识别完成,按回车键结束")
总结
比较简单,但是确实能解放双眼。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/291726.html