在基于tesseract-ocr的图片文字识别中,可以通过jTessBoxEditor 进行训练,以提高图片文字的识别率。本文简单记录下训练的方法与步骤。
从网站https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/下载jTessBoxEditor,解压到本地即可。运行jTessBoxEditor依赖java环境,因此需要安装配置jre。
一、基于jTessBoxEditor训练
1、生成tif和box文件
执行jTessBoxEditor目录下的train.bat批处理文件打开jTessBoxEditor,选中“TIFF/Box Generator”,如下图:
在面板输入待训练的内容后,再执行以下动作:
1)、点击图中标注的1,设置文件生成后保存的目录;
2)、修改图中标注的2的内容为自定义训练标志(最终生成训练文件的前缀);
3)、修改图中标注3的文件名,生成的文件名由 2的内容 + 3的内容,如上图最终生成的tif文件和box文件名分别为hz.font.exp0.tif、hz.font.exp0.box
4)、点击图中标注4的按钮Generate,生成tif和box文件。
注:tif文件命名格式需规范,格式为“[lang].[fontname].exp[num].tif”,lang为语言名称,fontname为字体名称,num为序号。
5)、检查生成的字符配置文件hz.font_properties
字符配置文件内容为:font 0 0 0 0 0
内容语法说明:<fontname> <italic> <bold> <fixed> <serif> <fraktur>
fontname为字体名称,italic为斜体,bold为黑体字,fixed为默认字体,serif为衬线字体,fraktur德文黑字体,1和0代表有和无,精细区分时可使用
2、字符矫正
打开“Box Editor”页面,如下图:
点击上图中的“Open”按钮,选择上一步生成的tif文件,检查字符是否正确,针对错误的修改Char列里面的内容,再点击“Save”保存修改。
3、开始训练
打开“trainer”页面,如下图:
点击图中标注的1,选择前面步骤生成的tif文件。修改图中标注2的语言与前面一致。图中标注3的地方选择“Train with Exsiting Box”,点击“run”按钮开始训练。训练成功后会在当前目录下生成tessdata目录,训练结果文件就在tessdata目录下hz.traineddata。就可以使用该训练文件去识别相关的图片。
二、通过写bat脚本训练
从https://digi.bib.uni-mannheim.de/tesseract/下载tesseract版本完成安装。配置好环境变量,打开命令行窗口执行tesseract -v 看到相关版本信息,则表示安装配置成功。
1、生成tif和box文件
可参照第一种方法生成。但这里介绍通过自定义图片使用jTessBoxEditor 合并tif,并用命令行生成box文件。
手动增加几张样图文件(通过画图软件写入内容,保存为tif格式)作为训练数据,打开jTessBoxEditor,点击tools菜单选择Merge Tiff,在弹出框选择训练图片(如下图的01-04,数据越多训练效果越好),点击“打开”按钮,弹出保存多张tif文件的名称输入框(如下图标注的3),按上面提到的tif文件命名格式填入文件名,如下图:
点击上图中的保存按钮,则将多张tif文件合并为一个tif文件num.font.exp0.tif。
2、生成box文件
打开命令行执行命令tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox生成box文件,执行命令后输出如下:
D:\wspace\tess4j-demo2\test-data\num>tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox
Tesseract Open Source OCR Engine v4.0.0.20181030 with Leptonica
Page 1
Page 2
Page 3
Page 4
3、字符配置文件font_properties
新建文件名为font_properties,内容填入font 0 0 0 0 0。
4、字符矫正
参照第一种方法“基于jTessBoxEditor训练”里面内容操作即可。
5、执行bat脚本生成训练数据
新建.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
双击bat文件,执行后会生成很多文件,找到num.traineddata文件即是训练结果。拷贝到tessdata目录,即可使用该训练结果识别图片文字。