以前我以为训练就是通过将官方提供的中文字库将不准确的字库进行调整,然后达到自我修定这样的一个过程,其实是错了,所谓的训练其实就是制作一种新的语言而以。由于模拟器上的字体多变,官方提供的中文字库(训练好的字库)识别率很低,也不一定符合我们的要求,于是我们将制定自已的字库文件
首先需要找到相应的中文汉字大全,我在测试中在网上找到一个汉字库,不是很全。主要做为demo演示一下效果而以。比如我的“邹”字就没有!
然后由JTextBoxEditor产生一个Tif图象和一个Box文件。选择好字体,以及字体大小,Tesseract识别的核心就是通过这个box文件来校对字样。
E:\Tesseract-ocr\tesseract.exe chi.duomi.exp0.tif chi.duomi.exp0 batch.nochop makebox
运行以上命令也会产生一个box文件。产生box文件的过程是必须的,也是最重要的,没有box文件以下的内容都无法进行。
产生字符特征文件
tesseract chi.duomi.exp0.tif chi.duomi.exp0 nobatch box.train
这一步将会产生 chi.duomi.exp0.tr文件和一个 chi.duomi.exp0.txt文件,txt文件貌似没什么用,看看而以。
unicharset_extractor chi.duomi.exp0.box
这一步会产生一个unicharset字符集文件.
在运行mftraining这一步之前,需要手工建立一个文件font_property,内容为如下
duomi 0 0 0 0 0
格式为: <fontname> <italic> <bold> <fixed> <serif> <fraktur>
mftraining -U unicharset -O chi.unicharset chi.duomi.exp0.tr
使用上一步产生的字符集文件unicharset,来生成当前新语言的字符集文件chi.unicharset。同时还会产生图形原型文件inttemp和每个字符所对应的字符特征数文件pffmtable。最重要的就是这个inttemp文件了,他包含了所有需要产生的字的图形原型。
cntraining chi.duomi.exp0.tr
这一步产生字符形状正常化特征文件normproto。
freq.txt 存放出现频率较高的字符;wordList.txt存放所有字符集,但是这个在识别率上好像没多少用处,可能主要为提高识别效率做的吧。
同样的方法产生punc-dawg文件(符号)、number-dawg文件(数字)以及user-words文件(用户自定义字符,通常为空)。
如果没有这几个dawg文件,可以把官方的语言包解压,然后分离出这些文件,解压语言包的命令是combine_tessdata
combine_tessdata chi.
这一步会产生最终的chi.traineddata文件。将chi.traineddata复制到tessdata目录中就算完事了,可以进行测试了
tesseract image.png out -l chi
out表示输出结果 -l后面的参数表示使用我们刚才训练的chi字库。
我写了两个bat文件,可以做为参考:
http://pan.baidu.com/s/1qWBAmTI
先运行ready.bat 再运行run
关于一些命令的使用方法可以参考下:
联系客服