批量识别提取核酸检测二维码信息的实现
文章目录
文章目录前言
如图,班级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("识别完成,按回车键结束")
总结
比较简单,但是确实能解放双眼。
下一篇:
Java后端实现批量删除
