为了提高Tesseract库的中文识别率,可以对它进行中文字的训练。
1.首先安装Tesseract。这里注意要安装,因为安装的程序里面包含其他训练用到的程序,编译版本没有这些工具。
2.下载jTessBoxEditor工具。这个工具是Java写的,运行需要JRE。这个工具主要是用来修改BOX文件的,用来校对文字。下图为该工具的目录,直接点击红框中的程序即可跑起来。
这次准备让库可以识别取消这两个字,准备了5张图:
3.生成tif格式的文件
最好将图片都放在Tesseract库的安装目录下,然后就在这个目录下进行操作。点击jTessBoxEditor的Tools按钮中的Merge TIFF。然后将我们做样本的5张图片全部选中,点击打开。这时候会弹出另一个保存对话框,就是我们想要的tif文件,对于tif文件命名规则 [lang].[fontname].exp[num].tif。其中lang是语言,fontname是字体。按自己需求自行设定即可。点击保存,这时候目录下就有我们的tif文件了。
4.生成BOX文件
首先打开命令行,进入Tesseract目录,输入命令:tesseract.exe chi.myself.exp0.tif chi.myself.exp0 batch.nochop makebox
5.校对文字
用jTessBoxEditor打开刚才生成的tif文件
我们会发现,文字显示的信息是不对的。
我们需要把每张图片的Char目录下的字符都改正过来。现在的Tesseract库将 取消 识别成了四部分,所以有1,2,3,4四行,我们需要它校正对两行,而且字符应该是 取消 。如下操作:
这个时候这两部分就合在一起了。但是Char这列显示的是 H,应该改成取。如下操作:
其他的字符同样操作,最后的效果就是这样了:
我这里一共有5张图,都把他们改好以后,点击Save即可。这时候我们可以看一下chi.myself.exp0.box文件(记事本打开即可),会发现里面做好了校正。
注:这步校正工具也可以在box文件里直接进行,但容易出错。
6.生成.tr文件
tesseract.exe chi.myself.exp0.tif chi.myself.exp0 nobatch box.train
7.生成unicharset文件。
unicharset_extractor chi.myself.exp0.box
7.新建font_properties文件
用记事本新建一个明文font_properties文件,内容格式为:
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
用记事本如:myself 0 0 0 0 0 记住是5个0。
7.运行下面三条命令:
shapeclustering.exe -F font_properties.txt -U unicharset chi.myself.exp0.tr
mftraining.exe -F font_properties.txt -U unicharset -O unicharset chi.myself.exp0.tr
cntraining.exe chi.myself.exp0.tr
8.重命名
把目录下的unicharset、inttemp、pffmtable、shapetable、normproto这五个文件前面都加上myself. 注意有 点 。如下图:
执行命令
combine_tessdata myself.
生成这个文件,说明我们成功了。
将该文件拷贝到tessdata文件里,就可以进行测试使用了