引言: Tesseract虽然功能强大,但是依然由于图片本身诸多的干扰因素和识别能力,存在诸多的识别率不高和信息不准确的问题,Training的过程则可以提升起识别的准确率, 本文将介绍如何train tesseract-ocr。
1. 关于Training
Tesseract虽然很强,且可以处理各类的文字转换,但是我们的目标图片并非如我们所期没有各类的干扰因素;在实际的情况下,各类的干扰因素将导致我们的识别准确率和效果大幅度下降;针对这类问题,Tesseract提供了Training的各类工具和过程,以期提升其识别率和正确率,提供可定制化的灵活性。
- 如何来提升输出的质量(Improve the quality of output), https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality
- Traing的介绍 https://github.com/tesseract-ocr/tesseract/wiki/Training-Tesseract#introduction
- Testdata https://github.com/tesseract-ocr/tessdata
- Training Tesseract https://github.com/tesseract-ocr/tesseract/wiki/Training-Tesseract-3.00%E2%80%933.02
2. jTessEditorBox
jTessEditorBox是第三方提供了一个关于自定义用户识别结合的工具,非常的好用强大,其本身是基于Java开发而成的,需要依赖JRE的运行环境,推荐使用JDK8 u40+以上版本,具体信息可以参考其官网信息。
这里做一个小说明: 直接从其官网下载非常慢,且非常容易断线,故直接使用了baidu的离线下载,秒级下载成功;然后绕道从百度云盘上下载。
3. 安装好tesseract
这里假定已经安装好了tesseract,如果安装有问题,可以参考我之前写的一篇文字,关于如何安装tesseract的简明教程。
4. 创建用户自定义的原始图片文件
这里笔者自行使用window自带的工具,创建以下4个图片,分别写了简单的数字:
5. 运行jTessEditorbox工具,merge图片
点击打开Tool菜单,点击merge,选择多个文件,另存在一个合成之后的文件:
在生成另外一个merged文件之后,进行编辑和错误信息的纠偏:
另存文件或者保存文件之后,保存到当下目录。
6.. 运行tesseract命令,生成box文件
>>>> tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox
结果会生成一个名称为num.font.exp0的文件,在命令运行的当下目录。BOX文件为Tessercat识别出的文字和其坐标。
注:Make Box File 文件名有一定的格式,不能随便乱取名字,命令格式为:
7. 定义字体特征文件。Tesseract-OCR3.01以上的版本在训练之前需要创建一个名称为font_properties的字体特征文件。font_properties不含有BOM头,文件内容格式如下:
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
其中fontname为字体名称,必须与[lang].[fontname].exp[num].box中的名称保持一致。<italic> 、<bold> 、<fixed> 、<serif>、 <fraktur>的取值为1或0,表示字体是否具有这些属性。
这里在样本图片所在目录下创建一个名称为font_properties的文件,用记事本打开,输入以下下内容: