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

关于中文识别,效果不错并且开源的应该就是Tesseract-OCR了,在Mac下试用了一下,参考了网络上其他人的一些资源,在这里分享一下。

Quick Start

准备工作

  1. 下载Tesseract-OCR引擎,到github下查看安装过程,Tesseract-OCR WebSize
  2. 下载chi_sim.traindata字库,没有这个默认不能识别中文。
  3. 下载JTessBoxEditor,用来训练字库。

开始识别

进入要识别的目录下,键入命令:

1
tesseract <picture_file> <output_file_name> -l chi_sim

如果源图是电脑上的生成的,如HTML / PS等在这里效果会不错,但是如果你的源图是拍摄所得,那么效果就不太理想了,因此在这里自己训练字库文件。

训练

  1. 将原图转换成tif格式的图片文件,用于后面生成box文件。

    tif文件的命名格式 ..exp.tif

    eg: fiveplus.normal.exp0.tif

    • lang: 语言
    • fontname: 字体(normal即可)
    • num: 下标
  2. 生成box文件

    1
    tesseract fiveplus.normal.exp0.jpg fiveplus.normal.exp0 -l chi_sim batch.nochop makebox

    box文件与tif需要在相同目录下。

  3. 打开JTessBoxEditor纠正错误,并训练

    打开tif文件,开始矫正数据,包括x, y, width, height, char

  4. 开始训练

    1
    tesseract fiveplus.normal.exp0.jpg fiveplus.normal.exp0 nobatch box.train unicharset_extractor fiveplus.normal.exp0.box

    新建一个font_properties文件,写入 normal 0 0 0 0 0 表示默认字体。

    继续运行:

    1
    2
    3
    4
    5
    shapeclustering -F font_properties -U unicharset fiveplus.normal.exp0.tr

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

    cntraining fiveplus.normal.exp0.tr

    然后我们合并生成的5个文件:

    1
    combine_tessdata normal.

    得到文件:normal.traineddata

  5. 开始测试结果

    1
    tesseract <picture_file> <output_file> -l normal

结束

自己训练过后的字库识别效果会好很多,之后就是怎么把多个字库合并成一个字库了,因为不可能一次训练完所有的图片文字的,字库文件是一个叠加过程,在线上环境中我们只需要不停的更新这个字库文件就好了。

Fiveplus wechat
扫一扫上方二维码,关注微信公众号:阿五编程
如果这篇文章对你有所帮助,请点击下方的打赏按钮。