Tesseract-OCR识别中文与训练字库实例

转自:https://www.aliyun.com/jiaocheng/18274.html?spm=5176.100033.2.15.GFuia4

  • 摘要:关于中文的识别,效果比较好而且开源的应该就是Tesseract-OCR了,所以自己亲身试用一下,分享到博客让有同样兴趣的人少走弯路。文中所用到的身份证图片资源是百度找的,如有侵权可联系我删除。一、准备工作1、下载Tesseract-OCR引擎,注意要3.0以上才支持中文哦,按照提示安装就行。2、下载chi_sim.traindata字库。要有这个才能识别中文。下好后,放到Tesseract-OCR项目的tessdata文件夹里面。3、下载jTessBoxEditor,这个是用
  • 关于中文的识别,效果比较好而且开源的应该就是Tesseract-OCR了,所以自己亲身试用一下,分享到博客让有同样兴趣的人少走弯路。

     

    文中所用到的身份证图片资源是百度找的,如有侵权可联系我删除。

    一、准备工作

     

    1、下载Tesseract-OCR引擎,注意要3.0以上才支持中文哦,按照提示安装就行。

     

    2、下载chi_sim.traindata字库。要有这个才能识别中文。下好后,放到Tesseract-OCR项目的tessdata文件夹里面。

     

    3、下载jTessBoxEditor,这个是用来训练字库的。

     

    以上的几个在百度都能找到下载,就不详细讲了。

     

    Tesseract-OCR识别中文与训练字库实例

     

    二、识别

     

    1、进入cmd,进入到要识别的图片的路径下。

     

    2、输入命令

     

    1

     

    tesseract 图片名称 生成的结果文件的名称 字库

     

    例如我的图片识别就是:

     

    1

     

    tesseract test.jpg result -l chi_sim

     

    Tesseract-OCR识别中文与训练字库实例

     

    识别完后会生成result.txt文件

     

    Tesseract-OCR识别中文与训练字库实例

     

    当然啦效果不太理想。所以我们要训练自己的字库。

    三、训练

     

    1、将图片转换成tif格式,用于后面生成box文件。可以通过画图,然后另存为tif即可。

     

    更改图片名字,这个是有要求的=。=

     

    tif文面命名格式[lang].[fontname].exp[num].tif lang是语言 fontname是字体 比如我们要训练自定义字库 mjorcen字体名normal 那么我们把图片文件重命名 mjorcen.normal.exp0.jpg在转tif。

    2、生成box文件。

     

    1

     

    tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l chi_sim batch.nochop makebox

     

    Tesseract-OCR识别中文与训练字库实例

     

    box文件和对应的tif一定要在相同的目录下,不然后面打不开。

    3、打开jTessBoxEditor矫正错误并训练

     

    打开train.bat

     

    Tesseract-OCR识别中文与训练字库实例

     

    找到tif图,打开,并校正。

     

    Tesseract-OCR识别中文与训练字库实例

    4、训练。

     

    只要在命令行输入命令即可。

     

    1

     

    tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 nobatch box.train

     

    1

     

    unicharset_extractor mjorcen.normal.exp0.box

     

    Tesseract-OCR识别中文与训练字库实例

     

    在这我明明已经矫正好了,但是还是有1个字符不能识别出来,报的错跟实际上完全没有相关性,不知道是不是bug,到后面的结果就是“园”字没有识别出来。

     

    先不管,毕竟只有一个样本。

    新建一个font_properties文件

     

    里面内容写入 normal 0 0 0 0 0 表示默认普通字体

    继续敲命令

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

     

    shapeclustering -F font_properties -U unicharset mjorcen.normal.exp0.tr

    mftraining -F font_properties -U unicharset -O unicharset mjorcen.normal.exp0.tr

    cntraining mjorcen.normal.exp0.tr



     

    最后会生成五个文件,把目录下的unicharset、inttemp、pffmtable、shapetable、normproto这五个文件前面都加上normal.

     

    如图:

     

    Tesseract-OCR识别中文与训练字库实例

    命令行输入,合并五个文件:

     

    1

     

    combine_tessdata normal.

     

    得到训练好的字库。

     

    Tesseract-OCR识别中文与训练字库实例

    四、测试

     

    1、把 normal.traineddata 复制到Tesseract-OCR 安装目录下的tessdata文件夹中

    2、识别命令:

     

    1

     

    tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l normal



     

    3、效果

     

    Tesseract-OCR识别中文与训练字库实例

    对比:

     

    Tesseract-OCR识别中文与训练字库实例

     

    总结:肯定要自己训练过后的字库识别效果好,接下来要把整个项目弄进android,还要研究怎么将多个字库合并成一个字库,因为我不可能一次训练完所有的图片文字的。到时候有什么成果了再分享博文。希望大家可以点赞!谢谢。

    更新:没有错误的话命令行的提示应该是这样的

     

    Tesseract-OCR识别中文与训练字库实例

  • 以上是Tesseract-OCR识别中文与训练字库实例的内容,更多 字库 中文 Tesseract 实例 识别 训练 ocr 的内容,请您使用右上方搜索功能获取相关信息。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值