番外篇:基于tesseract的光学字符训练

番外篇:基于tesseract的光学字符训练

前提环境

  1. Tesseract
  2. jTessBoxEditor
  3. java运行环境

附图为jTessBoxEditor执行目录所有的文件:
在这里插入图片描述

制造字体

制造字体需要明确需要检测的字体类型,例如需要检测的目标字体为宋体,那么就可以在输入文字的时候把字体的系列改成宋体,如下为笔者需要OCR识别的字体。
在这里插入图片描述

制造makebox文件

  1. 命令提示符下进入需要制作图片的路径。
  2. 输入以下命令。
> tesseract zh_CN6.song.exp0.tif zh_CN6.song.exp0 batch.nochop makebox.

在这里插入图片描述

纠正字体

  1. jTessBoxEditor 打开tif文件(makebox)。
    在这里插入图片描述
  2. 点键钮 open。
    在这里插入图片描述
  3. 修改字体。
    具体细节:左边是系统自带字库识别出来的字符,右边是实际的字符
    字符训练就是把这些识别错误的改为正确的。
    如下图,点击选框 ,选框内的字符为‘数’,系统识别出来的为英文字母 ‘n’,
    我们需要把左边选框‘n’改为‘数’,并保存。修改字符后,点按纽save 保存修改后的结果。
    在这里插入图片描述
    下面辅助功能:
    Merge 融合 :将右边实际字符两个选区合并成一个选区
    Split:分割右边字符区域
    Insert:右边实际字符插入选区
    Delete:右边实际字符删除选区
    在这里插入图片描述
  4. 例如
    在这里插入图片描述
    vivo 这里识别为四个字符
    可以通过merge,将其改为一个字符区域
    在这里插入图片描述
    选中四个区域点击merge。
    在这里插入图片描述
    此处是英文,所以分开识别没有问题, 但是对于汉字识别这个功能有意义了。
    中文汉字左右偏旁可能被识别为两个字,因此我们需要把两个字符选取合并为一个字符选区。
    其他Split: Insert: Delete:用法类似,自己可以尝试。

修改box文件

执行下面命令。

> tesseract zh_CN6.song.exp0.tif zh_CN6.song.exp0 nobatch box.train

在这里插入图片描述

> unicharset_extractor zh_CN6.song.exp0.box

在这里插入图片描述

>  shapeclustering -F font_properties -U unicharset -O unicharset zh_CN6.song.exp0.tr

在这里插入图片描述

>  mftraining -F font_properties -U unicharset -O unicharset zh_CN6.song.exp0.tr

在这里插入图片描述

>   cntraining zh_CN6.song.exp0.tr

在这里插入图片描述

重命名文件

重名名以上5个文件,手动修改文件名也可

mv normproto zh_CN6.normproto
mv inttemp zh_CN6.inttemp
mv pffmtable zh_CN6.pffmtable
mv shapetable zh_CN6.shapetable
mv unicharset zh_CN6.unicharset 

合并文件

>  cntraining zh_CN6.song.exp0.tr

在这里插入图片描述
如果过程没问题,最终会有一个traineddata 文件。

转载请标明出处

https://blog.csdn.net/qq_49710945/article/details/107688109

猜你喜欢

转载自blog.csdn.net/qq_49710945/article/details/107688109