首页 » 99链接平台 » 制作一个练习题生成软件的全过程(3)-orc文字识别(识别文字图片生成的是)

制作一个练习题生成软件的全过程(3)-orc文字识别(识别文字图片生成的是)

南宫静远 2024-11-03 15:31:21 0

扫一扫用手机浏览

文章目录 [+]

​首先我选用的是别人做好的ORC软件,我先尝试了用一些老版的公司的ORC软件,但发现都差强人意,后来找到一款手机上的白描APP,发现识别率十分高,大概能到99%,于是我就用这个软件来将文字从图片中识别出来。

手机只要与台式机在同一wifi,就可以在台式机上打开了个本地网址,每次拖入50张图片进行识别。
后来该APP又新增了个网站,可以在线识别,这时通过调出浏览器的开发者工具,我才知道其实这软件调用的是有道的文字识别API。
单独识别1页时,正确率极高,但我有20几本书,有近一万页,这1%也就比较可观了,于是我就边识别边向软件方报告需要改正的地方。

但是等着别人去改,并且我知道他是调的别人的API,那我不如自己编个程序来调用,这次我选用的是百度大脑里的通用文字识别,原因就是上面写的每天免费调用50000次-_-。

制作一个练习题生成软件的全过程(3)-orc文字识别(识别文字图片生成的是) 99链接平台
(图片来自网络侵删)

我这段代码的作用是从指定的path里读取所有jpg文档,将其提交给百度API识别,然后返回文字,然后将其生成docx文档(所有内容放到一个文档中),生成docx时,可用模版文件来生成,也可使用默认模版文件,只需要在doc = Document()这不填入templateFile即可。

from aip import AipOcrimport osfrom docx import Documentclass BiduOrc(): # 这几个key需要到百度去自己生成 def __init__(self): APP_ID = '' API_KEY = '' SECRET_KEY = '' self.client = AipOcr(APP_ID, API_KEY, SECRET_KEY) # 无参数识别 def imgLocalOrc(self,imgFile): image = self.get_file_content(imgFile) return self.client.basicGeneral(image) # 带参数的识别 def imgLocalOrcParam(self,imgFile): image = self.get_file_content(imgFile) """ 如果有可选参数 """ options = {} options["language_type"] = "CHN_ENG" options["detect_direction"] = "false" options["detect_language"] = "false" options["probability"] = "true" """ 带参数调用通用文字识别, 图片参数为本地图片 """ return self.client.basicGeneral(image, options) # 读取图片 def get_file_content(self,imgFile): with open(imgFile, 'rb') as fp: return fp.read()if __name__ == '__main__':​# 最后保存的文件名 saveFile = os.path.join(os.getcwd(),"文档/儿科护理学(baiduorc).docx")​# 模版文件名 templateFile = os.path.join(os.getcwd(),"template/模版.docx")​# 要识别的图片所在的位置,至于图片是如何生成的,请见本系列第2部分 path = "K:/tk/职称考试/资料/jpg/aa/" startNumber = 0​# 有时识别会中断,方便断点继识 index = 0 # 实例化对象 obj = BiduOrc() # 新建docx doc = Document(templateFile)​# 遍历jpg图片 for file in os.listdir(path): try: if index<startNumber: index += 1 print("跳过 {}".format(file)) continue # 判断是否为jpg文件 if file[-3:] != "jpg": continue # 得到图片文件路径 imgFile = os.path.join(path,file) # 调用实例对象的imgLocalOrc方法识别文本 orctext = obj.imgLocalOrc(imgFile) # 得到识别文本的字符串形式 paras_text = "\n".join([row["words"].strip() for row in orctext["words_result"] if len(row["words"].strip()) > 0])​​​# 将字符串添加到docx中 doc.add_paragraph(paras_text.strip()) print("正在识别 {}".format(file)) except: break doc.save(saveFile) print("保存完成:{}".format(saveFile))

由于有时会中断,那第二次再识别时,可能会将第一次的文件覆盖,所以可以在最后准备保存文件时对saveFile变量判断该文件是否存在,如果存在,则另外换个文件名,可以在后面随机一个数字。

这样就有了我们自己的文字识别的皮包公司了,哈哈,方便以后的一些处理,在此要感谢百度这样的大公司,提供了现成的功能给我们使用。

标签:

相关文章

从常规产品到爆品(产品品红农产品策划品牌)

为什么你的农业产品卖不了高价?为什么你的产品做不成爆品?为什么你到处寻找外脑,找对用心负责的,合适的策划公司很难?一款农村的红薯干...

99链接平台 2025-02-16 阅读1700 评论0