使用Tesseract-OCR获取可识别字符的字体

sas*_*alm 4 tesseract

是否可以使用Tesseract-OCR从命令行或使用API​​获取识别的字符的字体,即是Arial还是Times New Roman。

我正在扫描可能具有不同字体的不同部分的文档,拥有此信息将很有用。

szu*_*ken 7

根据nguyenq 的 回答,我编写了一个简单的 python 脚本,用于打印每个检测到的字符的字体名称。此脚本使用 python 库tesserocr

from tesserocr import PyTessBaseAPI, RIL, iterate_level

def get_font(image_path):
    with PyTessBaseAPI() as api:
        api.SetImageFile(image_path)
        api.Recognize()
        ri = api.GetIterator()
        level = RIL.SYMBOL
    
        for r in iterate_level(ri, level):
            symbol = r.GetUTF8Text(level)
            word_attributes = r.WordFontAttributes()

            if symbol:
                 print(u'symbol {}, font: {}'.format(symbol, word_attributes['font_name']))

  get_font('logo.jpg')
Run Code Online (Sandbox Code Playgroud)

  • 使用的 tesseract、tessdata 和其他依赖项的配置和版本是什么?我得到的 word_attributes 为 None (5认同)

ngu*_*enq 5

Tesseract具有可WordFontAttributesResultIterator类中定义的API 函数。

  • 在最新的Tesseract版本中,无论如何,“ WordFontAttributes”似乎都将返回“ None”。https://github.com/tesseract-ocr/tesseract/issues/1074 (2认同)
  • 是的,我明白为什么,因为它现在正在使用神经网络。如有任何更多更新,我们将不胜感激。 (2认同)