美文网首页
Tesseract 训练识别字符的思路

Tesseract 训练识别字符的思路

作者: 丁鸿辉 | 来源:发表于2018-07-18 09:40 被阅读0次

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

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

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

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

    这里的对比关键有两个。

    • 判断是什么语言,譬如是中文还是日文还是英文,这包括有哪些字符,有哪些单词(词语),这个会限定和优化匹配结果。
    • 判断字形对应的字符。如我们所知道的那样,对指定的字而言,不同的字体其表现出来的样子是非常不一样的。OCR的任务就是将定位到的字符字形特征和其自己已知的特征进行比较,从而判断出来该字符是什么。以我的了解,OCR本身在识别的时候是无法指定要识别的字体,而且其所有的字体的特征都放在同一个文件里面。如果要识别的字体特征不在 OCR 本身的特征列表里面,那么识别的准确率肯定就堪忧了。

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

    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/

    相关文章

      网友评论

          本文标题:Tesseract 训练识别字符的思路

          本文链接:https://www.haomeiwen.com/subject/fxsgpftx.html