在日常工作中,有时候,我们可能需要知道图片中的文字用的是哪种字体,本文介绍几种在线字体识别工具(从图片识别所用的字体),并且给出一些提高字体识别准确率的方法。

英文字体识别

由于英文字符较少,市面上英文字体远多于中文字体,而且很多英文字体之间的差异非常细微,所以查找英文字体比中文字体要困难。有两个网站可以试试,但是效果不敢恭维,这两个网站分别是 WhatTheFontWhat Font is.

使用方法:直接把包含英文字符的图片上传到网站,按照提示操作即可。包含字符的图片要尽可能大一些,识别的效果才会比较准确。

中文字体识别

本文主要介绍中文字体识别,有两个不错的字体在线识别网站,一个是 识字体网(likefont),另外一个是 求字体网

两个网站使用方法类似,个人感觉识字体网 的字体识别准确率更高。直接将包含字体的图片上传到网站,网站将会智能识别图片中包含的字符,如果智能识别的结果不理想,可以使用下面的“手动拼字”模式。在“手动拼字”模式下,一个字符可能被分成了多个图像,拖动图片把属于一个字的所有图像合并,直到拼成一个字。为了识别准确,可以多拼几个字,然后在所拼的字下方填入字符图像对应的真实字符(只能填写一个字符,注意简体 or 繁体区别)。

然后网站会根据字符的图像,从网站的数据库中找出与所给的字符图像相似的字体,并且会给出相似度的评分(见下图),非常不错。

如何处理背景和前景区分度不高的图片

这两个网站对输入的图片都有要求,不是所有图片的识别效果都很好: 如果图片中字符的颜色和背景的颜色不易区分,或者背景的颜色太过嘈杂,字体识别将无法工作。

如果输入一张不符合要求的图片,求字体网站直接提示图片不符合要求,识字体网则没有任何反应。例如对于下面的图片,

字体识别将不能工作,我们需要将背景和前景(即实际的字符)分得更清楚。

解决办法

可以使用这个网站提供的图像分割技术,把图像的前景背景分割开来,从而获得更加清晰的字体图像。

首先输入一张图片,然后直接用鼠标在前景上点击,标记一些前景像素点1,为了标注准确,可以更改笔尖大小(pen size)。

标记完成之后,点击 run,算法将会计算前景与背景,生成二值化的黑白分割图像。

点击 “Marker” 会显示之前标记的 marker,点击 “Segmentation result”,显示的是分割以后的结果,如下图所示:

最后,把分割后的图像输入字体识别网站,能够得到比较好的字体识别结果:

参考资料


  1. 这一步很重要!分割算法将利用标记的前景点来寻找所有前景像素,理论上标记的点越多,标记的越准确,分割的结果越好。 ↩︎