使用JtessBoxEditor训练tesseract字库,加上调用总共分12步
一、将图片格式转换为tif格式
tif文件命名的格式为[语言].[字体].exp[数字].tif
其中语言和字体、数字均为自己设置,可随意,但格式必须是以上格式。后面调用会需要用到字体名称
假设语言为liang,字体为mx
1、打开JtessBoxEditor
2、点击Tools
3、点击Merge TIFF,然后在文件类型选择bmp(可一次性选择多个bmp,最终会合并成一个tif)
4、点击打开图片后,然后保存为liang.mx.exp0.tif
二、在cmd命令行输入命令,生成box文件
1、先cd进入到tesseract的目录下,输入:
tesseract.exe liang.mx.exp0.tif liang.mx.exp0 -l chi_sim batch.nochop makebox
其中第1个liang.mx.exp0.tif为合并的tif文件(这里也可以直接使用bmp文件,但只能识别一个),第2个liang.mx.exp0为生成box文件的文件名,第三个-l(L)指language,使用指定的语言库打开,chi_sim就是中文库,其他的是命令
当前文件下显示 liang.mx.exp0.box(新增),liang.mx.exp0.tif
三、校正图片
1、打开JtessBoxEditor
2、点击Box Editor
3、点击open
4、打开合并的tif图(工具会自动加载对应的box文件,所以tif和box文件必须在同一文件夹下)
5、在左边修改识别文字(尽可能一个框一个字),在右上角的地方可以修改框的大小和位置
Insert:新增框。Delete:删除框。Merge:合并框。Split:拆分框。
6、如果是多个bmp合并的tif,在下方有翻页,翻页处理其他错别字
7、校正完一定要点击save保存
四、生成字体特征文件font_properties
1、打开记事本在里面输入以下内容:
mx 0 0 0 0 0
2、保存后,重命名把名称里的后缀删掉,即把“.txt”删掉,文件名称必须是font_properties。其中mx指自己命名的字体名。0的属性是指字体的属性,比如字体为斜体、粗体等,0代表没有额外属性
当前文件夹下显示:font_properties(新增),liang.mx.exp0.box,liang.mx.exp0.tif
五、在cmd命令行输入命令,生成训练文件
1、先cd进入到tesseract的目录下,输入:
tesseract liang.mx.exp0.tif liang.mx.exp0 nobath box.train
执行完会生成liang.mx.exp0.tr
其中第一个liang.mx.exp0.tif为上述保存的tif文件,第二个liang.mx.exp0为生成tr文件的文件名(文件名尽可能保持一致)
其他的是命令
当前文件夹下显示:liang.mx.exp0.tr(新增),font_properties,liang.mx.exp0.box,liang.mx.exp0.tif
六、在cmd命令行输入命令,生成字符集文件
1、先cd进入到tesseract的目录下,输入:
unicharset_extractor liang.mx.exp0.box
执行完会生成unicharset
注意:unicharset必须和box文件同步更新,即后面生成新文件时,unicharset也必须重新生成
当前文件夹下显示:unicharset(新增),liang.mx.exp0.tr,font_properties,liang.mx.exp0.box,liang.mx.exp0.tif
七、在cmd命令行输入命令,生成shape文件
1、先cd进入到tesseract的目录下,输入:
shapeclustering -F font_properties -U unicharset -O unicharset liang.mx.exp0.tr
第1个-F font_properties指上述的font_properties文件,第2个-U unicharset 指上述的unicharset文件,第3个-O unicharset指新生成的unicharset名称(注意,-O会新生成unicharset文件,-O后面接新生成文件的文件名,此处输入的是unicharset和原来文件名一致,故会覆盖原来的unicharset文件),第4个liang.mx.exp0.tr为第五步生成的tr文件
当前文件夹下显示:shapetable(新增),unicharset(新增且覆盖原来的),
liang.mx.exp0.tr,font_properties,liang.mx.exp0.box,liang.mx.exp0.tif
八、在cmd命令行输入命令,生成聚集字符特征文件
1、先cd进入到tesseract的目录下,输入:
mftraining -F font_properties -U unicharset -O unicharset liang.mx.exp0.tr
执行完命令会生成unicharset(命名一样覆盖之前的unicharset文件)、inttemp、pffmtable、shapetable(覆盖之前的shapetable)
第1个-F font_properties指上述的font_properties文件,第2个-U unicharset 指上述的unicharset文件,第3个-O unicharset指新生成的unicharset,第4个liang.mx.exp0.tr为第五步生成的tr文件
当前文件夹下:inttemp(新增),pffmtable(新增),shapetable(新增且覆盖原来的),unicharset(新增且覆盖原来的),liang.mx.exp0.tr,font_properties,liang.mx.exp0.box,liang.mx.exp0.tif
九、在cmd命令行输入命令,生成字符正常化特征文件
1、先cd进入到tesseract的目录下,输入:
cntraining liang.mx.exp0.tr
执行完生成normproto文件
当前文件夹下显示:normproto(新增),
inttemp,pffmtable,shapetable,unicharset,liang.mx.exp0.tr,font_properties,liang.mx.exp0.box,liang.mx.exp0.tif
十、将文件改名,在cmd命令行输入命令,合并训练文件
1、将normproto、inttemp、pffmtable、shapetable、unicharset加字体名
我个人设置的是mx故将上述五个文件改名为mx.normproto、mx.inttemp、mx.pffmtable、mx.shapetable、mx.unicharset
2、先cd进入到tesseract的目录下,输入:
combine_tessdata mx.
注意命令行带【.】
执行完生成文件mx.traineddata
十一、将mx.traineddata放在tesseract安装目录的tessdata目录下
十二、python使用pytesseract调用tesseract识别功能
#打开图片(使用PIL库的Image)
image1=Image.open(r"D:\aaa.bmp")
#使用pytesseract.image_to_string识别图片,参数里的“mx”为上述训练文件mx.traineddata的前缀
word=pytesseract.image_to_string(im,lang=“mx”)
print(word)