掌桥专利:专业的专利平台
掌桥专利
首页

一种字体检测方法

文献发布时间:2023-06-19 11:26:00


一种字体检测方法

技术领域

本发明属于字体检测技术领域,具体涉及一种字体检测方法。

背景技术

目前,一张图片中的字体主要是通过人工识别出为何种字体,需要通过多种字体相互对比才能判别出来,而且准确率低,效率慢;字体检测技术是根据所给出的文字图案,在字体库中查找到相对应的字体,主要应用于设计师等职业人群,为了快速识别图片中文字使用何种字体,急需提出一种字体识别技术。

发明内容

有鉴于此,本发明提出一种字体检测方法,能够快速识别图片中的字体,而且准确率高。

为了达到目的,本发明提供的技术方案为:

本发明涉及一种字体检测方法其包括以下步骤:

(1)创建字体库,读取大量字体文件,根据文件内包含的字符数据,生成各字符对应图案,所有字体组合成为字体库;

(2)将字符对应的图案生成对比字符指纹;

(3)将需检测的图片文字生成检测字符指纹;

(4)将检测字符指纹与字体库中的对比字符指纹进行比对,得到最接近的字体。

优选地,所述的字体文件为ttf或otf格式文件

优选地,所述生成对比字符指纹的具体步骤包括:

(2.1)将带有字体的图案M转换为灰度图G;

(2.2)通过计算全图像素值均值将灰度图G进行二值化处理,生成二维数组A;大于等于均值的像素点置为1,小于均值的像素点置为0,最终成为只有0和1的二值化二维数组;

(2.3)将二维数组扩展为一维向量,得到对比字符指纹V。

通过特定软件包(如Python可使用Pillow模块)可以将字体文件中的数据以图案显示,输入法根据用户输入的文字+字体文件在计算机上显示文字图案。生成对比字符指纹可节约存储成本,并且便于计算。一般图案数据都是KB级别,生成指纹后为B级别,降低了3个数量级。

优选地,所述生成检测字符指纹的具体步骤包括:

(3.1)圈选出需检测的图片M2中文字部分;

(3.2)将文字部分转换为灰度图Mwg;

(3.3)将灰度图通过OTSU算法进行二值化,得到二维数组A2;

(3.4)根据二维数组A2边缘像素值生成文字部分的二维数组A3;

(3.5)将二维数组A3扩展为一维向量,得到检测字符指纹V2。

通过观测A2边缘像素值(边缘一般为背景而非文字部分),可确定二值化的A2数组中0、1的值是否设置正确。如果边缘像素值为0,则认为背景部分已被置0,文字部分已被置1如果边缘像素值为1,则认为OTSU算法设置错误,需要将A2中的所有0置为1,所有1置为0。二维数组A3是边缘像素值为1的数组。

采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:

1、本发明通过引入字体指纹,将图片中的文字转化成字体指纹与字体库中的字体指纹比对,快速找出需检测的字体类型,准确率高,且效率快。

2、本发明采用灰度图+OTSU算法+二值化的步骤对图片文字进行去背景噪声,正确提取字符本体,提高字体检测的正确率。

3、本发明通过处理图片,将KB级别的图案数据,降维成B级别的一维向量,比对更加方便。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明方法的流程框图;

图2为步骤二的流程框图;

图3为步骤三的流程框图。

具体实施方式

为进一步了解本发明的内容,结合实施例对本发明作详细描述,以下实施例用于说明本发明,但不用来限制本发明的范围。

如图1所示,本实施例涉及一种字体检测方法其包括以下步骤:

(1)创建字体库,读取大量ttf或otf格式的字体文件,根据文件内包含的字符数据,生成各字符对应图案,所有字体组合成为字体库;

(2)将字符对应的图案生成对比字符指纹;

(3)将需检测的图片文字生成检测字符指纹;

(4)将检测字符指纹与字体库中的对比字符指纹进行比对,得到最接近的字体。

参照图2,所述生成对比字符指纹的具体步骤包括:

(2.1)将带有字体的图案M转换为灰度图G,缩放灰度图G到合适大小;

(2.2)通过计算全图像素值均值将灰度图G进行二值化处理,生成二维数组A;大于等于均值的像素点置为1,小于均值的像素点置为0,最终成为只有0和1的二值化二维数组;

(2.3)将二维数组扩展为一维向量,得到对比字符指纹V。

通过特定软件包(如Python可使用Pillow模块)可以将字体文件中的数据以图案显示,输入法根据用户输入的文字+字体文件在计算机上显示文字图案。生成对比字符指纹可节约存储成本,并且便于计算。一般图案数据都是KB级别,生成指纹后为B级别,降低了3个数量级。

参照图3,所述生成检测字符指纹的具体步骤包括:

(3.1)圈选出需检测的图片M2中文字部分Mw;

(3.2)将文字部分Mw转换为灰度图Mwg;

(3.3)将灰度图通过OTSU算法进行二值化,得到二维数组A2;

(3.4)根据二维数组A2边缘像素值生成文字部分的二维数组A3;

(3.5)将二维数组A3扩展为一维向量,得到检测字符指纹V2。

通过观测A2边缘像素值(边缘一般为背景而非文字部分),可确定二值化的A2数组中0、1的值是否设置正确。如果边缘像素值为0,则认为背景部分已被置0,文字部分已被置1如果边缘像素值为1,则认为OTSU算法设置错误,需要将A2中的所有0置为1,所有1置为0。二维数组A3是边缘像素值为1的数组。

在进行比对过程中,通过计算两个一维向量的汉明距离(2个向量进行异或运算,统计结果为1的数量),距离越小的表示向量越接近。

本实施例基于3755个字体搭建字体库进行测试,发现给出的第1个结果就是正确答案的概率为76%,前五个结果中有正确答案的概率为89%,前十个结果中有正确答案的概率为97%。

以上示意性的对本发明及其实施方式进行了描述,该描述没有限制性,附图中所示的也只是本发明的实施方案,实际的结构并不局限于此。所以本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。

相关技术
  • 基于卷积神经网络的字体图像中字体种类检测方法及系统
  • 一种字体检测方法、装置、电子设备及存储介质
技术分类

06120112922552