1.在Tesseract中训练字库的时候非常麻烦,输的指令又多,而且容易出错!于是就想着把字库生成的指令整合起来,在MFC上进行实现!程序界面如下:
原来训练字库的步骤可以参考本博客中的Tesseract-OCR 训练自己的中文字库,从步骤可知,只能从第5步开始写起,前面的生成tif格式的文件,生成.box文件,进行识别纠正这三步只能手动执行了!
2.从控制台上手动输出生成指令可知(不太明白的朋友可以根据结合指令看下,高手路过...),生成字库时要通过cmd指令进入到Tesseract的安装目录,因为训练生成过程中用到的程序是在Tesseract的安装目录中,所以写出来的程序要么就拷贝到Tesseract的安装目录上运行,要么就在生成命令中加上完整的路径,我偷下懒,就采用了前者的方式!
3.以下就列举下程序中遇到的一些问题:
A.重命名unicharset、inttemp、pffmtable、shapetable、normproto这五个文件失败,如下图:
调试下程序,发现程序代码书写时对的,猜想是权限问题,结果重新以管理员身份运行程序,更名成功了!但是又遇到另一个问题,详情看B!
B.文件是有的,但是就是更名失败,唯独就只有一个normproto!排除了重命名代码的问题,猜想因为训练指令生成需要时间,可能是由于在执行重命名的时候normproto文件还没有生成成功,它是在执行重命名的代码之后才生成出来的!于是就在重命名改文件名之前sleep了一下,结果发现成功了!
C.定义字体特征文件(font 0 0 0 0 0 )中的字体名称输入有误的时候,会出现以下错误:
这个要从.box文件中进行截取,保持一致:
D. .BOX文件的命名需要有一定的规则(下面图片是某博客的命名说明!),格式如下:
[lang].[fontname].exp[num].tif 。其中 其中lang为语言名称,fontname为字体名称,num为序号,可以随便定义! 例如:chi.myself.exp0.tif word.font.exp0.tif (为了程序处理方便,在程序中.tif的文件的命名格式我也要求跟.box文件的命名格式一样!)
E.如果生成失败,建议将指令运行间隔时间调整大点再重新试下!
F.最终生成及测试结果如下图,已在其他电脑上试过,可用:
程序环境:
1.VS2013 + Tesseract-Ocr 3.02.02 + Win7 旗舰版 64位
2.拷贝到其他电脑上测试可用;
3.工具下载(亲测可用):Tesseract 一键生成字库