批量识别程序"/>
案例:身份证批量识别程序
身边人有个小任务,翻译成prompt如下:
“我有一个文件夹,内部有好几张身份证照片。我想让你直接给我一段python代码,用来将这个文件夹内的所有照片里面的个人信息OCR识别,提取出来,并且新建一个excel表,存到其中。要求这段代码可以直接在pycharm中执行并生成excel文件。”
接到此任务,当时考虑到三个做法:
一、让bing现场生成代码制作。(1.5hr)
二、在github上找代码模板修改。(1.5hr)
三、调用成熟商业接口搞。(to-be-continued)
以上三个做法,前两个第一次尝试,大约花了3hrs。凸显出AI助手在新位置领域里的代码开发角色。
方案一、直接生成法, 用bing生成。
代码很少(<20行),效果不好,身份证除了数字,大部分都是乱码。
方案二、Github法。
Bing推荐了一个Github,地址如下:
虽然识别不完全正确,但效果大大好于方案一。
下载后做了两件事:
一、跑通原程序。
遇到的唯一障碍是:tesseract is not installed or it's not in your path。
解决方法:在项目README.md中有常见错误1的解决办法。只是现在最新的Tesseract-OCR不需要单独下字体,安装的时候选择字体包,里面手动勾选包含中文几个语言包就好。更方便了。
跑通后,程序会识别单个图片,并且将结果pring出来。
二、问bing如何把程序,改写成批量处理文件,并且把结果汇总到excel中。
已知github中的识别函数identity_OCR_Chine(pic_path),问bing如下prompt:
“已知我有一个函数identity_OCR_Chine(pic_path)可以输入图片.jpg,并且返回图片内的内容。现在我想利用这个函数将一个文件夹内的所有图片用该函数处理一遍,并且将每个图片识别到的内容都按照一行存到excel表格中。请给出全部代码,代码要求用python编写。”
Bing很快给出代码,并把该函数的地方空出来,便于改写。把两段代码攒一起,然后项目第一版就BingGo了。
三、调用商业接口(20231017)
按道理来说:
Bing直接利用Tsseract写的效果 < Github有人利用Tsseract写的项目 < 成熟API
今天正好有机会试验了,效果远好于单机版。我给了个demo,基本上错误率为0.
一般来说可以使用POSTMAN软件来简化调试GET、POST等函数的步骤。【但我这次用没调试成功】
虽然用python写代码更难些,终究调试成功了,一次用会有些使用问题,故列到下面:
已知list | 1,URL:不同的步骤,需要不同的URL,一般会严格注明。 2.appID:程序的ID号 2.Static_Token:静态Token,可认为是程序的密码 3,各个POST和GET动作的格式规范说明 |
STEP1、POST获取动态密码 dynamic_token | 1,准备好静态Token->静态Token_base64 2,按照说明填好url、headers、body并进行请求response = requests.post(url, headers=headers, json=body),自动得到回复result=response.json()。 3,将字典result中的动态密码提取出来,如result['result'] |
STEP2、POST发送识别图片请求 | 1,准备好dynamic_token、要识别的图片。 2,按照说明填好url、headers、body等并进行请求response = requests.post(url, headers=headers, json=data),自动得到回复:result = response.json() 3,将字典result中的taskID提取出来,如result['taskID'],这个地方存储了该识别任务识别后的文本,每次执行识别任务,系统都给分配了独立的taskID。 |
STEP3、GET发送结果查询请求 | 1,准备好dynamic_token、要调取的识别任务的taskID。 2,按照说明将taskID合成进url中、headers、body等并进行请求response = requests.get(url, headers=headers),自动得到回复:result = response.json() 3,返回结果有两种可能:一,系统提示的正在分析的句段。二、结果。 如果返回result还是pending,就等待一会再次查询,直到得到正确的返回结果。 |
新手遇到的问题:
STEP1:静态Token还没先转化为二进制数,再处理成base64格式,就去POST,结果返回值不对。
STEP2:dynamic_token还没正确拿到,就做第二步。/照片没有按照要求base64就去post。
STEP3:该处的URL需要合成,但没有合成功。 解决方案 (Solution):print出来合成后的url来检测。
/没有将https 的s去掉导致鉴权报错. 解决方案 (Solution): 将获取接口的https的s去掉
/GET成功了,但是还在pending中,所以只返回状态码,需要过一会再去GET一遍。
更多推荐
案例:身份证批量识别程序
发布评论