下载jTessBoxEditor
https://sourceforge.net/projects/vietocr/files/
unzip jTessBoxEditor-2.0-Beta.zip
cd jTessBoxEditor
java -Xms128m -Xmx1024m -jar jTessBoxEditor.jar #打开可视化界面
—- 训练 —-
预处理
把所有待训练的图像转换为tiff格式(可使用ubuntu下的imageMagick的convert命令或mogrify命令批量处理)
mogrify -path ./TIFF/ -format tiff *.jpg
然后采用jTessBoxEditor中的tools/Merge Tiff
功能,将待训练的tiff图像合并为一个tiff文件,在可视化界面中先选中所有tiff文件,然后点击OK,然后在再次弹出的窗口中输入要合并的tiff文件的名称,例如chi.wang.exp0.tif,chi表示中文,wang表示字体。
生成.box 文件
sudo tesseract chi.wang.exp0.tif chi.wang.exp0 batch.nochop makebox
or
sudo tesseract chi.wang.exp0.tif chi.wang.exp0 -l chi_smi -psm 7 digits batch.nochop makebox # 数字
会生成一个名为chi.wang.exp0.box文件
使用jTessBoxEditor校正字符
在可视化界面中,在Box Editor
面板中点击open按钮打开合并的tiff文件,然后每一页每一页的去矫正矩形框的位置以及正确的识别字符,亦可以同时修改chi.wang.exp0.box文件来添加一下empty pages的识别框!
生成自制语言库
sudo tesseract chi.wang.exp0.tif chi.wang.exp0 nobatch box.train #生成字符特征文件
sudo unicharset_extractor chi.wang.exp0.box #产生字符集
vim font_properties
wang 0 0 0 0 0 #向新生成的文件font_properties中录入此内容,普通字体,不加粗,不倾斜
sudo shapeclustering -F font_properties -U unicharset chi.wang.exp0.tr #生成shapetable
sudo mftraining -F font_properties -U unicharset chi.wang.exp0.tr #聚集字符特征
sudo cntraining chi.wang.exp0.tr #生成字符形状正常变化特征文件normproto
重命名如下文件:
inttemp
├──
normproto
├──
pffmtable
├──
shapetable
└──
unicharset
为
wang.inttemp
├──
wang.normproto
├──
wang.pffmtable
├──
wang.shapetable
└──
wang.unicharset
生成语言库
sudo combine_tessdata wang.
此时得到了训练好的wang.traineddata
sudo cp wang.traineddata /usr/share/tesseract-ocr/tessdata/wang.traineddata #复制到安装目录
测试
tesseract 1.jpg 1 -l wang
上述命令可能会出错,得到如下输出:
FAIL!
APPLY_BOXES: boxfile line 22/园 ((1108,4637),(1150,4686)): FAILURE! Couldn't find a matching blob
FAIL!
APPLY_BOXES: boxfile line 25/园 ((1258,4641),(1300,4689)): FAILURE! Couldn't find a matching blob
APPLY_BOXES:
Boxes read from boxfile: 40
Boxes failed resegmentation: 2
Found 38 good blobs.
Generated training data for 4 words
Warning in pixReadMemTiff: tiff page 1 not found
意味着园
字的块没找到,tr文件中就缺失了园
字的特征。如果出现FATALITIES错误,必须先修正box文件修订错误才能继续。FATALITY通常意味着没有找到box文件中的任何字体。要么是坐标错误,要么是字符图像出了问题。如果字符没有可供使用的样本,它就不能被识别,那么得到的inttemp文件和unicharset文件就不匹配,Tesseract会退出。
如果tif/box文件对是通过jTessBoxEditor可视化工具得到的,那么生成文件时选定Anti-Aliasing
可消除上述错误。
参考link:
http://qianjiye.de/2015/08/tesseract-ocr