识别图片中的文字并不是很困难。如果自己训练一个文字识别的深度学习程序去识别也是可以,但是太费劲。
Tesseract-OCR是一个开源的文字识别引擎,并且支持包括中文在内的多国语言。只要将语言配置上去,就可以识别对应的语言。
如果是印刷字体,识别是没有问题的,几乎是100%准确识别,一般用于识别印刷体的话是不需要再另外训练的,如果要识别手写体就需要额外的训练,这部分以后有时间再研究。
下面是项目下载地址:
源文件地址:https://github.com/tesseract-ocr/tesseract
安装文件地址:https://github.com/UB-Mannheim/tesseract/wiki
我们先安装测试Tesseract-OCR,看看到底是怎么使用的。
>语言包:首先下载下来,双击安装,安装过程中注意选择语言包,要勾选chinese-simple;
>配置环境变量:安装完成之后,会生成文件夹:C:\Program Files (x86)\Tesseract-OCR,将此路径添加到环境变量;
ouput_5是文件名,如果后面有pdf则生成双层pdf,如果后面没有则生成txt。
页码识别时整个页面输入识别效果不好。最好是切四个角保存成图片然后分别识别,选取有识别出来的页码。
在做页码识别的时候一开始让他生成hocr格式的,参数如下:
list<<"-l"<<"Digital1"<
这样会生成“.hocr”文件,识别效果基本上还是可以的,考虑到这里面会有box信息以及置信度,尽管解析这个html比较困难,还是做了。但是发现个位数的数字识别不到,可能是块太小?
我在做字库训练的时候,发现也是个位数的数字识别不到,在网上找到了解决方案,添加“--psm 6”参数就解决了,相当于是碎块识别吧,他不会把没有粘连的字识别为整体,而识别为不同个体。这样数字的话他也不会识别为一个整体数字,而是其中每个数字分别识别。
但是此参数添加进上述命令行参数中没有效果,可能是因为hocr格式限制。尝试用不同方法,比如txt,确实是可以识别了,但是没有box信息,无法进一步判断是有效页码还是污点。
因为他这个识别没有提供置信度,也没有提供设置置信度高于多少才识别出来的方法(阈值),而是每个污点他都会识别为数字(字库里只有数字,如果用eng或者其他的综合字库则识别效果也不好,数字都识别不好。)
所以用box来判断文字的大小方位进一步确定是否有效识别是很重要的。
如下:
list<<"-l"<<"Digital1"<<"--psm"<<"6"<
解决了页码识别的问题。
https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
下载对应tesseract版本的训练器。下载之后有version文件,可以看对应的版本。
合并方法是:
选择之后马上弹窗让你填写保存的文件名称,这个交互效果不太好,以为是没选好,其实选完了。
tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox
注意,因为我们识别不了单个的数字,因此要加个参数在这里:
tesseract num.font.exp0.tif num.font.exp0 --psm 6 batch.nochop makebox
加了个psm参数,不然在进行编辑校正的时候单个的数字无法识别到!
内容为:
font 0 0 0 0 0
这是进行一个校正。做好之后保存,会保存为新的box。
在本目录下创建一个文本文件do.bat,内容如下:
echo Run Tesseract for Training..
tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train
echo Compute the Character Set..
unicharset_extractor.exe num.font.exp0.box
mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr
echo Clustering..
cntraining.exe num.font.exp0.tr
echo Rename Files..
rename normproto num.normproto
rename inttemp num.inttemp
rename pffmtable num.pffmtable
rename shapetable num.shapetable
echo Create Tessdata..
combine_tessdata.exe num.
echo. & pause
这样就生成字库了。参考了这篇文字,在此致谢:
https://blog.csdn.net/qq_40147863/article/details/82290015