Tesseract 3.X 训练

本文详细介绍了Tesseract 3.x的训练过程,包括下载jTessBoxEditor,合并样本图片,生成box文件,修改box文件,创建训练文件,字符集文件,shape文件,以及最终合并为traineddata文件的步骤。此外,还提供了如何合并多个模型文件的方法。
摘要由CSDN通过智能技术生成

       Tesseract4.0 训练是基于LSTM + CTC,可以获得较高的准确率,而且Tesseract-ocr官网上也说了,Tesseract 3.X的训练方式目前保留,以后可能会废弃,所以看似好像这里介绍3.X好像是多余的,但是为了让Tesseract介绍更系统些,而且目前很多人也是在使用Tesseract 3.x在训练,所以这里再啰嗦下。

  • Tesseract 3.X训练

      1.下载jTessBoxEditor   https://sourceforge.net/projects/vietocr/postdownload(必须保证在此之前已经安装JDK)

      2.合并样本图片

           打开jTessboxeditor,点击Tools->Merge Tiff ,按住shift键选择你要训练的图片文件,并把生成的tif合并到指定下,命名为langyp.fontyp.exp0.tif

            注意:langyp 是本人定义的语言名称,fontyp是本人定义的字体名称,exp0指该语言,字体对应的合并图片序号,一般是exp0,exp1,exp2,...依次递增

      3.生成box文件

            执行命令生成langyp.fontyp.exp0.box文件

           tesseract langyp.fontyp.exp0.tif langyp.fontyp.exp0 -l eng --psm 7 --oem 3 batch.nochop makebox

            【语法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox  

            lang为语言名称,fontname为字体名称,num为序号;在tesseract中,一定要注意格式。

           最好把box文件和合并的tiff文件放到同一个目录下,这时你能看到langyp.fontyp.exp0.tif和langyp.fontyp.exp0.box文件      

    4.修改box文件

        切换到jTessBoxEditor工具的Box Editor页,点击open,打开前面的tiff文件langyp.fontyp.exp0.tif,工具会自动加载对应的box文件。检查box数据,如下图所示,

数字8被误认成字母H,手工修改H成8,并保存。点击下图红色框的按钮,逐个核对tif文件的box数据,全部检查结束并保存。

        

5.  生成font_properties

             执行echo命令生成font_properties。

            echo "fontyp 0 0 0 0 0" > font_properties   

        也可以手工新建一个名为font_properties的文本文件,内容为字体名fontyp,后面带5个0,分别代表字体的粗体、斜体等属性,这里全部是0

         注意一定要把font_properties编码格式改为UTF-8

        font_properties中的fontyp 和文件名两个点中间的fontyp对应langyp.fontyp.exp0

 6.生成训练文件

          执行命令,生成langyp.fontyp.exp0.tr训练文件

           tesseract langyp.fontyp.exp0.tif langyp.fontyp.exp0 -l eng --psm 7 --oem 3 nobatch box.train

  7.生成字符集文件

         执行命令,生成名为unicharset的字符集文件。

        unicharset_extractor langyp.fontyp.exp0.box

  8.生成shape文件

            执行命令,生成shape文件

        shapeclustering -F font_properties -U unicharset -O langyp.unicharset langyp.fontyp.exp0.tr

 9.生成聚集字符特征文件

          执行命令,生成3个特征字符文件,unicharset、inttemp、pffmtable

        mftraining -F font_properties -U unicharset -O langyp.unicharset langyp.fontyp.exp0.tr

 10.生成字符正常化特征文件

            执行命令,生成正常化特征文件normproto。

            cntraining langyp.fontyp.exp0.tr

  11.更名

          执行命令,把步骤9,步骤10生成的特征文件进行更名。

             mv normproto fontyp.normproto

             mv inttemp fontyp.inttemp

             mv pffmtable fontyp.pffmtable 

            mv unicharset fontyp.unicharset

            mv shapetable fontyp.shapetable

   12.合并训练文件

    执行命令,生成fontyp.traineddata文件。

       combine_tessdata fontyp.

备注:

combine_tessdata 命令将fontyp.normproto,fontyp.inttemp,fontyp.pffmtable ,fontyp.unicharset,fontyp.shapetable文件合并为一个文件,命名规则为 languagecode.file_name,其中languagecode按ISO 638-3标准,也可以使用任意字符串。

 

注意:

a、fontyp.traineddata文件最终要拷贝tesseract安装目录的tessdata目录下,才能被tesseract找到。

b、命令行最后必须带一个点。

13.测试和使用

使用新的fontyp语言

 

       

 

由以上过程可以看出,Tesseract 3.X训练是基于图片的,如果我们有很多图片,但是一次只取其中一部分来训练,这样就会得到多个模型文件,有没有什么办法让多个模型文件合并起来,方便使用。

  • 合并多个模型文件

        前提条件是必须有 图片样本.tif文件,位置文件.box ,只要有这两个文件在,就可以合并字典。

1.利用jTessboxeditor和Tesseract相关命令生成需要合并的图片样本.tif文件,位置文件.box(过程参考上面)

    假设已经存在的图片样本文件和修正过的box文件为:

   langyp.fontyp.exp0.tif   langyp.fontyp.exp0.box

   langyp.fontyp.exp1.tif   langyp.fontyp.exp1.box

2.生成相应的.tr文件

    tesseract  langyp.fontyp.exp0.tif  langyp.fontyp.exp0 -l eng --psm 7 --oem 3 nobatch box.train

    tesseract   langyp.fontyp.exp1.tif  langyp.fontyp.exp1  -l eng --psm 7 --oem 3 nobatch box.train

3.从所有的文件中提取字符

   unicharset_extractor langyp.fontyp.exp0.box  langyp.fontyp.exp1.box

4.生成font_properties文件

    echo "fontyp 0 0 0 0 0" > font_properties

    注意把font_properties转为UTF-8编码格式

5.生成shape文件

     shapeclustering -F font_properties -U unicharset -O langyp.unicharset langyp.fontyp.exp0.tr  langyp.fontyp.exp1.tr

6.生成字符特征文件

     mftraining -F font_properties -U unicharset langyp.fontyp.exp0.tr langyp.fontyp.exp1.tr

7.聚集所有的.tr文件

    cntraining langyp.fontyp.exp0.tr langyp.fontyp.exp1.tr

8.重命名文件

     unicharset, inttemp, normproto, pfftable 这几个文件加个前缀,比如前缀为myFont

     mv normproto myFont.normproto

     mv inttemp myFont.inttemp

     mv pffmtable myFont.pffmtable 

     mv unicharset myFont.unicharset

     mv shapetable myFont.shapetable

9.合并所有文件,生成一个大的字库文件

     combine_tessdata myFont.

我写了个批处理便于模型文件合并,下载地址:

https://download.csdn.net/download/yixinuestc/11017122

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neil_baby

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值