1.在Tesseract中训练字库的时候非常麻烦,输的指令又多,而且容易出错!于是就想着把字库生成的指令整合起来,在MFC上进行实现!程序界面如下:

Mac tesseract训练字库 tesseract训练自己的字库_C++

原来训练字库的步骤可以参考本博客中的Tesseract-OCR 训练自己的中文字库,从步骤可知,只能从第5步开始写起,前面的生成tif格式的文件,生成.box文件,进行识别纠正这三步只能手动执行了!

2.从控制台上手动输出生成指令可知(不太明白的朋友可以根据结合指令看下,高手路过...),生成字库时要通过cmd指令进入到Tesseract的安装目录,因为训练生成过程中用到的程序是在Tesseract的安装目录中,所以写出来的程序要么就拷贝到Tesseract的安装目录上运行,要么就在生成命令中加上完整的路径,我偷下懒,就采用了前者的方式!

3.以下就列举下程序中遇到的一些问题:


A.重命名unicharset、inttemp、pffmtable、shapetable、normproto这五个文件失败,如下图:

Mac tesseract训练字库 tesseract训练自己的字库_tesseract.exe_02

调试下程序,发现程序代码书写时对的,猜想是权限问题,结果重新以管理员身份运行程序,更名成功了!但是又遇到另一个问题,详情看B!


Mac tesseract训练字库 tesseract训练自己的字库_一键生成字库_03



B.文件是有的,但是就是更名失败,唯独就只有一个normproto!排除了重命名代码的问题,猜想因为训练指令生成需要时间,可能是由于在执行重命名的时候normproto文件还没有生成成功,它是在执行重命名的代码之后才生成出来的!于是就在重命名改文件名之前sleep了一下,结果发现成功了!

Mac tesseract训练字库 tesseract训练自己的字库_tesseract.exe_04



C.定义字体特征文件(font 0 0 0 0 0  )中的字体名称输入有误的时候,会出现以下错误:

这个要从.box文件中进行截取,保持一致:

Mac tesseract训练字库 tesseract训练自己的字库_tesseract.exe_05



D.  .BOX文件的命名需要有一定的规则(下面图片是某博客的命名说明!),格式如下:

[lang].[fontname].exp[num].tif  。其中 其中lang为语言名称,fontname为字体名称,num为序号,可以随便定义! 例如:chi.myself.exp0.tif  word.font.exp0.tif  (为了程序处理方便,在程序中.tif的文件的命名格式我也要求跟.box文件的命名格式一样!)


Mac tesseract训练字库 tesseract训练自己的字库_Mac tesseract训练字库_06




E.如果生成失败,建议将指令运行间隔时间调整大点再重新试下!

F.最终生成及测试结果如下图,已在其他电脑上试过,可用:

Mac tesseract训练字库 tesseract训练自己的字库_一键生成字库_07

Mac tesseract训练字库 tesseract训练自己的字库_一键生成字库_08






程序环境:

1.VS2013 + Tesseract-Ocr 3.02.02 + Win7 旗舰版 64位


2.拷贝到其他电脑上测试可用;

3.工具下载(亲测可用):Tesseract 一键生成字库