Python自动字体识别
你可能听说过一个在线字体识别服务,叫做WhatTheFont。
我对这个工具背后的技术很感兴趣。我觉得可以把它分成两个部分来理解:
从各种格式的字体文件生成图片,关于字体文件的扩展名,可以参考这个链接:http://www.fileinfo.com/filetypes/font。
将提交的图片与所有生成的图片进行比较。
如果你能分享一些建议或者用Python实现这两个步骤的代码,我会很感激。
3 个回答
这个问题有点旧了,所以我来给个更新版的回答。
你可以看看这篇论文 DeepFont: 从图片中识别你的字体。简单来说,它是一个经过大量图片训练的神经网络。这个技术在 这个视频中有商业展示。
不过,遗憾的是没有现成的代码可以用。不过,有一个独立的实现可以在 这里找到。你需要自己训练,因为没有提供权重,但代码非常容易理解。此外,这个实现只支持几种字体。
还有一个链接提供了数据集和生成更多数据的仓库。
希望这对你有帮助。
我不能提供Python代码,但这里有两种可能的方法。
“特征字符”。在面部识别中,如果你有很多经过处理的面部图片,可以用一种叫做主成分分析(PCA)的方法来得到一组“特征脸”。当你把训练好的面孔放到这个特征空间里时,它们会显示出最大的差异。然后,你可以用测试面孔在特征脸空间中的“坐标”作为分类的特征向量。对于文本字符也是一样,比如不同版本的字母'A'。
动态时间规整(DTW)。这个技术有时用于手写字符识别。它的意思是,铅笔尖的移动轨迹(也就是在x和y方向上的变化)对于相似的字符是相似的。DTW可以消除同一个人写字时的一些变化。类似地,一个字符的轮廓也可以表示一个轨迹。这个轨迹就成为每种字体的特征向量。我想在字体识别中,DTW的部分可能不那么必要,因为字符是机器生成的,而不是人手写的。但它可能仍然有助于消除空间上的模糊。
根据提问者的说法,这里有两个部分(可能还有第三部分):