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

How to get the font style from an image with text?

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

有没有人有解决方案来获取那条数据?

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

What Amazon Textract returns(可惜没有字体类型):

{'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': ...}

到目前为止我做了什么

我实现了一个计算文本比率 width/height 的解决方案,并通过使用 Python 的枕头包和不同字体类型以编程方式绘制相同文本然后比较比率来比较它。然而,这种启发式方法往往会导致错误的结果。

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

  1. DeepFont:从图像中识别您的字体
  1. Typefont:第一个检测图像中文本字体的开源库。(现在只读。)