自动化办公有些场景会用到OCR文字识别, 不是很复杂的场景Tesseract-OCR就够用, 当然, 比较复杂的比如发票,合同, 表格等识别建议还是购买商用的基于AI训练的OCR识别接口.
Tesseract,一款由HP实验室开发由Google维护的开源OCR引擎。它可以读取和识别多种图像格式,包括jpeg, png, gif, bmp, tiff等。它还可以将识别的文本输出为字符串、边界框、数据、方向和脚本等信息
安装Tesseract-OCR
官方网站:https://github.com/tesseract-ocr/tesseract
官方文档:https://github.com/tesseract-ocr/tessdoc
下载地址:https://digi.bib.uni-mannheim.de/tesseract/
1.下载安装Tesseract
Tesseract-OCR支持很多操作系统,如windows、linux、MacOS等等。
注意尽量不要下载带dev,alpha,beta等版本,这些版本不稳定,也可能是测试版本。这里选择5.0版本, 以windows系统为例
https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v5.0.0.20211201.exe
双击下载的安装包,一路Next。
安装过程可以附带选择要安装的语言包,如果你要识别简体中文, 可以选择简体中文, 之后自动会从服务器下载该语言包下来。也可以不选择下载语言包, 下载离线包进行安装。
由于在线安装比较慢且不太稳定, 我们这里不勾选在线安装语言包
点下一步后会有安装路径的选择,你可以选择要安装C盘D盘等, 但记住这个路径, 之后设置环境变量会用, 我这里选择在默认路径C:\Program Files\Tesseract-OCR
点击下一步直至完成安装
2.下载语言包
进入tesseract的github文档页(https://tesseract-ocr.github.io/tessdoc),找到5.0.0.x目录下的Traineddata Files目录:
该目录下有tessdata,tessdata_best,tessdata_fast等5种语言包,其中tessdata是检测速度和准确度居中的语言包,后缀best对应最慢和最准确的语言包,后缀fast对应最快和准确度较差的语言包,这里我们选择tessdata。进入到tessdata语言包的github仓后,可以用git命令拉到本地,或者网页版下载到本地后解压,就可以看到很多以语言简称为文件名、traineddata为后缀的文件,其中eng.traineddata和chi_sim.traineddata一般足够应对中文和英文场景:
下载后将该包直接放在程序安装目录就是刚才的C:\Program Files\Tesseract-OCR
目录, 放入目录下的的tessdata
文件夹里面即可。
3.设置环境变量
在左下角的windows图标上点击右键, 选择系统
, 在设置选择高级系统设置
, 选择环境变量
按图所属选择编辑, 填入tesseract的安装路径C:\Program Files\Tesseract-OCR
, 点确定保存
打开cmd命令行, 输入tesseract -v
检查查看是否安装成功
命令行使用 tesseract --list-langs
命令可查看当前软件支持的语言:
出现上面信息即代表安装成功了
在Python中使用Tesseract
安装pytesseract包
pip install pytesseract
进行图片文字识别
from PIL import Image
import pytesseract
img = Image.open('xxx.jpg')
# 识别文字,并指定语言
string = pytesseract.image_to_string(img, lang='chi_sim')
print(string)
命令行使用
下面这个例子解析单个文件test.png(第1个参数),在标准输出(命令行界面)打印解析结果(第2个参数为stdout),用-l参数带chi_sim表示使用简体中文语言:
tesseract.exe test.png stdout -l chi_sim
也可以将stdout改为其他的字符串(第2个参数改为输出文件名称,不用带txt后缀),这样会将识别的结果写入到以该字符串命名的txt文件中:
tesseract.exe test.png result -l chi_sim
在当前目录下就会生成一个result.txt的文件,文件内容就是识别出来的文字内容。
扩展
对于发票合同之类比较复杂的场景, 可以利用OpenCV对发票图像进行预处理滤波、自适应阈值等一系列预处理得到二值图像;然后利用形态学中的开运算提取表格全域线段,进行表格位置提取,并结合表格交点坐标与自定义模板,实现表头与内容自适应适配;最后利用jTessBoxEditor对表格区域内容进行字库训练优化,最终实现基于Tesseract-OCR的字符识别。
发票文档由中英文、数字和特殊符号共同组成,Tesseract-OCR引擎自带的字库识别准确率并不高,引入jTessBoxEditor来训练专门针对发票识别的字库。通过修正坐标,将内容与表格边框分隔开,使表头与内容精准匹配,从而实现任意区域下对特定表格进行内容提取,并高效精准识别。
如果嫌麻烦又不差钱的, 可以选择使用阿里云发票票据识别、护照识别、名片识别、等复杂场景的接口.
评论 (0)