作者 | 欣一
来源 |Python爱好者集中营
不久前,复旦大学一名博士生写了130行Python
人民日报微信官方账号广泛报道了批量识别核酸截图的代码和故事,称赞其将所学知识技术应用到现实生活中,大大降低了人力投入,提高了效率。它被使用OCR
技术识别图表中的数据,但对于不懂技术的童鞋不懂如何操作,所以今天小边做了一个UI
一键提取图片中的数据。
首先,我们需要安装easyocr
模块,通过pip
命令
pipinstalleasyocr
而用来制作UI
界面框架小编选择PyQt
框架,因为它支持手动绘制控件,可以动态加载,我们在Pycharm
当中添加上QtDesigner
界面设置作为外部工具生成ui
步骤如下
完成一系列配置后,我们打开它QtDesigner
的初始界面,整体的过程就是将我们需要的控件拖到界面当中即可,
我们希望最终的功能是在上传图片后点击开始提取数据按钮。后端代码可以识别上传图片中的数据,并保存数据Excel将其下载到桌面上,并在程序运行结束后弹出提示框。UI
界面设计如下
代码如下:
#上传本地图片 defuploadImages(self): globalimgNamepath_list#图片路径他地方引用图片路径,将其设置为全局变量 #弹出文件选择框,第一个返回值imgName记录所选文件路径 文件名,第二个返回值imgType记录文件类型 #QFileDialog第一个参数是上下文,第二个参数是弹框的名称,第三个参数是默认打开的路径,第四个参数是所需的格式 imgNamepath_list,imgType=QFileDialog.getOpenFileNames(self.ui,"上传文件",r"C:\Users","*.png;;*.jpg;;AllFiles(*)") #print("imgNamepath_list:",imgNamepath_list) #显示所选图片的路径 self.ui.lineEdit.setText(",".join(imgNamepath_list))
我们将在文本框中打印图片的所有路径,当我们点击开始按钮时,尝试提取上传图片中的数据。上传的图片如下:
我们需要提取姓名、出生日期、地址信息等,代码如下
data=[] forimgNamepathinimgNamepath_list: content=ocr.readtext(f'{imgNamepath}',detail=0) print(f"正在识别:{imgNamepath}") name=content[0][4:] gender=content[1][-1] country=content[2][-1] date_of_birth=content[-5] address=content[-4][4:] content[-3] id_number=content[-1] data.append([name,gender,country,date_of_birth,address,id_number])
最后,我们保存了数据Excel表格当中并且放置在桌面上,代码如下:
df=pd.DataFrame(data,columns=["姓名","性别","民族","出生","住址","身份证号"]) df.to_excel(r"C:\Users\PC120\Desktop\识别结果.xlsx",index=False)
当所有任务完成时,提示框将弹出,提示任务已完成,代码如下:
msg_box=QMessageBox(QMessageBox.Information,'完成',提取完成,QMessageBox.Yes) msg_box.exec_()
最后,让我们来看看最终的效果
太卷了!AI 81%的高考准确率
这个Python神器能让你摸半天鱼!
2D变身3D,看看英伟达AI新魔法!
如何用 Python 实现景区安全系统?
分享 点收藏 点点赞 点在看