使用Python自动识别字体

jac*_*ack 5 python fonts image-processing

您可能已经听说过,有一个在线字体识别服务呼叫WhatTheFont

我对该工具背后的技术感到好奇。我认为基本上可以将其分为两个部分:

  1. 从各种格式的字体文件生成图像,有关字体文件扩展名的列表,请参阅http://www.fileinfo.com/filetypes/font

  2. 比较提交的图像和所有生成的图像

感谢您分享一些建议或python代码以实现上述两个步骤。

tom*_*m10 5

正如 OP 所述,有两部分(可能还有第三部分):

  1. 使用PIL从字体生成图像

  2. 使用图像分析工具包,如OpenCV(具有 Python 绑定)来比较不同的形状。有多种标准技术可以比较不同的对象以查看它们是否相似。例如,尺度不变矩工作得相当好,并且是 OpenCv 工具包的一部分。

  3. #2 中的大多数标准工具旨在寻找相似但不一定相同的形状,但对于字体比较,这可能不是您想要的,因为字体之间的差异可能基于非常精细的细节。对于精细细节分析,尝试比较每个字母周围的周长路径的 x 和 y 轮廓,当然,适当归一化。(这个,或者它的一个更复杂的数学变体,已经在字体分析中取得了很好的成功。)