Python 如何从带有文本的图像中获取字体样式?

Python 如何从带有文本的图像中获取字体样式?,python,ocr,image-recognition,amazon-textract,Python,Ocr,Image Recognition,Amazon Textract,我正在通过AWS的Python API使用Amazon Textract API,从文档中提取文本(pdf或jpg)。我确实得到了它的边界框的文本和坐标,但我也希望有字体类型(只需要主要的字体:Arial、Helvetica、Verdana、Calibri、Times New Roman+其他一些) 有没有人有办法获取这段数据 最好的解决方案可能是一个包,它接受一个小图像,返回字体类型名称,我可以在我的服务器上运行它。一个外部API很可能太昂贵(金钱和时间方面),因为我必须在一秒钟内运行100多

我正在通过AWS的Python API使用
Amazon Textract API
,从文档中提取文本(
pdf
jpg
)。我确实得到了它的边界框的文本和坐标,但我也希望有字体类型(只需要主要的字体:Arial、Helvetica、Verdana、Calibri、Times New Roman+其他一些)

有没有人有办法获取这段数据

最好的解决方案可能是一个包,它接受一个小图像,返回字体类型名称,我可以在我的服务器上运行它。一个外部API很可能太昂贵(金钱和时间方面),因为我必须在一秒钟内运行100多次

Amazon Textract返回的内容(不幸的是,没有字体类型): 到目前为止我做了什么
我实现了一个解决方案,该解决方案计算文本的宽度/高度比率,并通过使用Python的pillow包和不同的字体类型以编程方式绘制相同的文本,然后比较比率来进行比较。然而,这种启发式方法往往会导致错误的结果。

目前,Amazon Textract不支持字体识别。这两个项目可能会帮助您:

  • DeepFont:从图像中识别字体
    • 论文:
    • GitHub:
  • Typefont:第一个检测图像中文本字体的开源库(现在是只读的)
    • GitHub:

    谢谢,我授予您奖金,因为您的回答肯定会有所帮助。在我将你的答案标记为被接受的答案之前,我正在等待一段时间,以便让其他人有机会参与进来,以防他们有其他选择。
    {'BlockType': 'LINE',
     'Confidence': 99.81985473632812,
     'Text': 'This is a text',
     'Geometry': {'BoundingBox': {'Width': 0.7395017743110657,
       'Height': 0.012546566314995289,
       'Left': 0.12995509803295135,
       'Top': 0.2536422610282898},
      'Polygon': [{'X': 0.12995509803295135, 'Y': 0.2536422610282898},
       {'X': 0.8694568872451782, 'Y': 0.2536422610282898},
       {'X': 0.8694568872451782, 'Y': 0.2661888301372528},
       {'X': 0.12995509803295135, 'Y': 0.2661888301372528}]},
     'Id': '59f42615-7f33-41d2-9f3c-77ae5e4b6e7a',
     'Relationships': ...}