健康码批量识别GUI版(4月11日超级更新)
一、软件介绍
此前作者吾爱@d8349565 制作了一个简单的Python代码,便于高效的收集健康码截屏中的文本信息,但是仍有很多不足,所以花了几天时间进行整理,重新制作了一版带有GUI界面的软件。(也可以用于健康码以外的同类工作)
主要功能
- 调用百度【通用文字识别(标准版)】对图片进行ocr识别,将结果返回到【结果输出框】;
- 自定义正则表达式,从结果中获取需要的文本内容;(可设置在正则表达式返回的结果中选取第几个文本)
- 完成以上调试后,可将方案保存到本地的 '***.ff' 文件;
- 右键点击进度条,可对文件夹内的图片批量执行ocr、正则表达式获取,保存到Excel中;(最后一列为图片文件的超链接)
- 其他功能详见下图,<u>红色文本为介绍,蓝色为操作指导</u>。
界面介绍
二、操作指导GIF
设置默认文件夹
识别图片、正则获取
保存方案
批量执行
以下是旧版本是,使用Python写的,可略过知悉即可
软件介绍
最近听到小伙伴在讨论目前防疫政策下,天天都要收集健康码截图,然后要一个个识别,手工记录,非常繁琐且耗时,然后我就制作了一个针对此业务场景的软件。
作者 吾爱@d8349565
原理介绍
1、申请百度OCR识别token,调用SDK对每张图片逐一识别,返回message;(软件中已使用我自己的token)
2、将百度OCR返回的列表转换为一个字符串,使用re正则表达式逐一获取姓名、截屏时间、末次核酸检测时间(人事部同事说只需要这几个信息);
3、使用dict和pandas将数据转存到Excel文件中。
演示GIF
旧版本下载地址:(GUI重构版请在附件下载)
百度网盘:https://pan.baidu.com/s/1uwF9PFqd9uie6VzOPj0gug 提取码:t0u6
天翼网盘:https://cloud.189.cn/t/J3E3ui6vyUzi|tq=u6yx
旧版本Python 源码
import os
from aip import AipOcr
import re
from pandas import DataFrame
from easygui import diropenbox
from tqdm import tqdm
print('程序开始运行,进度如下:')
""" 你的 APPID AK SK """
APP_ID = '23539899' # 申请应用获取的 ID,下同
API_KEY = '自行获取'
SECRET_KEY = '自行获取'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
path=diropenbox('请选择需要处理的文件夹')
filelist = os.listdir(path) # 设定图片目录
result = []
for file in tqdm(filelist):
a = {}
file_path=f'{path}\\{os.path.basename(file)}'
img = get_file_content('{}\\'.format(path) + file)
message = client.basicGeneral(img)['words_result']
x = [str(list(i.values())[0]) for i in message]
x_str = ','.join(x).replace('(请尽快接种新冠疫苗)','')
# 获取最新的检测时间
核酸检测时间 = re.compile(r',((.){12})检测,').findall(x_str)
num = len(核酸检测时间) - 1
核酸检测时间 = 核酸检测时间[num][0]
# 获取截屏时间
time = re.compile(r',(2022-(.){5})').findall(x_str)
num = len(time) - 1
time = time[num][0]
# 获取姓名
name = re.compile(r',([\u4e00-\u9fa5]{2,4}),')
name = name.findall(x_str)
try:
name.remove('场所码')
except:
pass
a['截屏时间'] = time
a['末次核酸检测时间'] = 核酸检测时间
a['姓名'] = name[0]
a['文件名'] = file
a['文件夹名称'] = os.path.abspath(file)
# print(' 截屏时间为:', time, ' 末次核酸检测时间为:', 核酸检测时间, '姓名为:', name[0],file)
result.append(a)
print(result)
result=DataFrame(result).to_excel('result.xlsx')
os.startfile('result.xlsx')
input('程序运行完成')
感谢老铁
感觉很厉害的样子
建议出个百度OCR接口教程?
是不是自己购买token 添加进去 就会默认扣除自己购买的识别次数?
你好这个有限制识别次数吗
百度OCR接口有免费的调用次数,如需更多次数使用可以选择按量付费或者使用次数包,可以前往官网了解一下
高手
想要试试
看看能否正常使用。
很实用啊,这个对上海那疫情严重的地方很有用,减轻基层工作量!
试用一下
感谢提供。
很实用啊,这个对上海那疫情严重的地方很有用,减轻基层工作量!