Tesseract 训练识别字符的思路

2018-07-18  本文已影响0人  丁鸿辉

Tesseract 是一个很流行的 OCR 软件,能够用来较好的识别印刷字体。
在默认情况下,通过该软件识别字符,其准确率不是很高,就需要额外做些优化。
优化思路如下:

  1. 限定要识别的字符范围,方法是通过参数:tessedit_char_whitelist,类似的还有黑名单
  2. 优化识别单个字符的准确率

其中中对于第二点,从工作原理上,OCR 获取到的是图片。其操作步骤为:

  1. 通过二值化和去噪点使得图片的内容更加突出,为下一步定位字符做预备
  2. 从图片中定位出文字,理想情况下能够定位到单个字符
  3. 获取定位到的字符,将其特征和特征数据进行对比,从而判断是什么字符

这里的对比关键有两个。

对于上述中增加一种字体的支持,可以参考官方文档。这里简述其步骤。

  1. 获取或者生成包括这种字体的图片,转化成 tif 格式(注意,最好每个字符出现频率不少于10次)
  2. 通过 tesseract 的 makebox 命令定位和识别字符,生成 box 文件(注意:可以限定要识别的字符清单以提高准确性和效率)
    box 文件里包括了识别出来的字符以及其在图片中的位置
  3. 通过 jTessBoxEditor 等工具矫正识别出来的字符,也可以手动编辑 box 文件来修复
  4. 更具 box 文件和 tif 文件进行特征提取和训练
  5. 生成训练数据

参考链接:
https://github.com/tesseract-ocr/tesseract/wiki/Training-Tesseract-3.03%E2%80%933.05#generate-training-images-and-box-files
https://michaeljaylissner.com/posts/2012/02/11/adding-new-fonts-to-tesseract-3-ocr-engine/

上一篇下一篇

猜你喜欢

热点阅读