【问题标题】:Get font of recognized character with Tesseract-OCR使用 Tesseract-OCR 获取已识别字符的字体
【发布时间】:2013-03-18 17:23:15
【问题描述】:

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

我正在扫描可能有不同部分和不同字体的文档,拥有这些信息会很有用。

【问题讨论】:

    标签: tesseract


    【解决方案1】:

    Tesseract 在 ResultIterator 类中定义了一个 API WordFontAttributes 函数,您可以使用它。

    【讨论】:

    • 在最近的 Tesseract 版本中,WordFontAttributes 似乎无论如何都会返回None。 github.com/tesseract-ocr/tesseract/issues/1074
    • 是的,我明白为什么,因为它现在使用的是神经网络。感谢您提供更多更新。
    【解决方案2】:

    基于nguyenq'sanswer,我编写了一个简单的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')
    

    【讨论】:

    • 使用了什么配置和版本的 tesseract、tessdata 和其他依赖项?我将 word_attributes 设为 None
    猜你喜欢
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 2012-10-20
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    相关资源
    最近更新 更多