首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python自动识别字体

用Python自动识别字体
EN

Stack Overflow用户
提问于 2009-11-10 15:37:36
回答 3查看 8.1K关注 0票数 6

您可能听说过,有一个名为WhatTheFont的在线字体识别服务。

我对这个工具背后的技术很好奇。我想基本上我们可以把它分为两部分:

  1. 从各种格式的字体文件生成图像,有关字体文件扩展名的列表,请参阅http://www.fileinfo.com/filetypes/font
  2. 将提交的图像与所有生成的图像进行比较

我感谢您分享一些建议或python代码来实现上面的两个步骤。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-10 16:11:08

正如“任择议定书”所述,有两部分(可能还有第三部分):

  1. 使用PIL生成字体图像
  2. 使用图像分析工具包,比如OpenCV (它有Python )来比较不同的形状。有各种各样的标准技术来比较不同的对象,看看它们是否相似。例如,尺度不变矩工作得相当好,并且是OpenCv工具包的一部分。
  3. #2中的大多数标准工具都是为寻找相似但不一定相同的形状而设计的,但是对于字体比较而言,这可能不是您想要的,因为字体之间的差异可以基于非常精细的细节。要进行详细的分析,请尝试比较每个字母周围的周边路径的x和y配置文件,当然,也要适当地标准化。(在字体分析中使用了这个或更复杂的数学变体,取得了很好的效果。)
票数 5
EN

Stack Overflow用户

发布于 2009-11-11 05:14:16

我不能提供Python代码,但这里有两种可能的方法。

  1. “特征字符”在人脸识别中,给定大量的归一化人脸图像训练集,可以利用主成分分析(PCA)得到一组“特征脸”,当训练人脸投影到该子空间时,这些特征人脸的方差最大。输入测试面相对于特征面空间的“坐标”可以作为分类的特征向量。对于文本字符,也可以做同样的事情,即字符'A‘的许多版本。
  2. 动态时间偏差(DTW)这种技术有时用于手写字符识别。这个想法是,铅笔尖端的轨迹(即d/dx,d/dy)对于相似的字符是相似的。DTW使单个人的写作实例之间的某些变化不变。同样,字符的轮廓可以表示一个轨迹。然后,这个轨迹成为每个字体集的特征向量。我想DTW部分与字体识别不一样必要,因为机器创建字符,而不是人。但是,消除空间歧义仍然是有用的。
票数 3
EN

Stack Overflow用户

发布于 2020-03-03 18:39:57

这个问题有点老了,所以这是一个最新的答案。

你应该看看这篇论文,DeepFont:从图像中识别字体。基本上,这是一个神经网络,训练成吨的图像。它是在这段视频上进行商业展示的。

不幸的是,没有可用的代码。然而,有一个独立的实现可用的这里。您需要自己训练它,因为没有提供权重,但是代码非常容易理解。此外,请考虑此实现仅适用于少数字体。

还有一个指向数据集的链接和一个回购来生成更多的数据。

希望能帮上忙。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1708858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档