最近用到Tesseract,先是下载了版本3.02,经过测试3.02对中文的识别效果不如3.01,又换成了3.01,下面是3.01对字库的训练步骤
这是官方的训练步骤http://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3,可对照查看,更易理解。
1.将用来训练的图片名改为如下格式:[lang].[fontname].exp[num].tif
其中lang为语言名称,fontname为字体名称,num为序号,可以随便定义。(若图片格式不是.tif,可用
windouws自带画图工具另存为.tif格式)
如,我的图片命名为 chi.song.exp0.tif (语言:中文 字体:宋体 序号:0)
2.生成Box文件(*.box)
命令格式:
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] -l language batch.nochop makebox
图片名为 chi.song.exp0.tif ,故相应命令为
tesseract chi.song.exp0.tif chi.song.exp0 batch.nochop makebox
生成文件 chi.song.exp0.box
3.校正。
下载jTessBoxEditor,下载链接为http://sourceforge.net/projects/vietocr/files/jTessBoxEditor/。
(使用jTessBoxEditor需要先安装jdk,jdk1.7下载地址http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html)
打开jTessBoxEditor(双击.jar),打开图片chi.song.exp0.tif(chi.song.exp0.tif与chi.song.exp0.box需在同一文件夹中),进行校正,然后保存。
4.产生字符特征文件(*.tr)
tesseract chi.song.exp0.tif chi.song.exp0 nobatch box.train
生成两个文件 chi.song.exp0.txt 与 chi.song.exp0.tr(字符特征文件)
5.计算字符集(unicharset)
unicharset_extractor chi.song.exp0.box
6.聚集字符特征
① 新建文件,命名为 font_properties ,文件内容格式如下:
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
前面给图片命名时字体设为 song ,故此处文件内容为 song 0 0 0 0 0 (后面几个变量是字体参数,有没有加粗等,若有将相应0改为1)
② mftraining -F font_properties -U unicharset -O chi.unicharset chi.song.exp0.tr
此命令根据5中产生的unicharset 来生成当前新语言的字符集文件 chi.unicharset
同时还会产生两个其他数据文件:inttemp(图形原型文件)和pffmtable(每个字符对应的特征数)。第三个文件是Mircofeat,没什么用。
③ cntraining chi.song.exp0.tr
生成文件 normproto (字符形状正常化特征文件)
7.合并训练文件(.traineddata)
把 文件inttemp , normproto , pffmtable加上前缀chi.
命令: combine_tessdata chi.
生成文件chi.traineddata,为新的字库
8.测试
将chi.traineddata拷贝到文件夹tessdata中,使用命令tesseract chi.song.exp0.tif output -l chi
查看使用新字库的输出结果