一种用于自动识别验证码中空心字符的方法与流程

文档序号:15447548发布日期:2018-09-14 23:33阅读:922来源:国知局

本发明涉及互联网安全技术领域,具体涉及一种用于自动识别验证码中空心字符的方法。



背景技术:

验证码(captcha)是一种区分计算机和人类的全自动图灵测试技术。在一个验证码测试中,系统会自动生成一个问题并评判用户的答案,这个测试只有人类很容易给出答案,而计算机程序则很难成功。因此被广泛用于邮箱注册、网上银行登录、在线交易、订票系统等验证环节,系统要求用户必须输入验证码上所显示的字符信息才可完成相关操作,这样可以有效防止机器通过暴力破解方式不断的进行登陆以对用户密码进行破解盗取相关信息,还可以保证在线投票的真实性,防止垃圾邮件,网站广告泛滥等,提高网站运行的稳定性和安全性。

验证码技术因便捷高效而被很多网站采用。相应的,在网站上线运行之前,测试工程师通常会采用一些验证码自动识别方法对网站中的验证码进行破解,以检测网站的安全性。若其中大部分验证码能被机器自动识别,则表明该网站所使用的验证码安全性较低,需要相关技术人员增大验证码图像的复杂度等,以保证网站上线运行后不被恶意用户攻击。

早期的验证码中有效信息均以实心字符形式呈现,虽在背景中加入了一些干扰但仍易被机器自动识别。空心验证码作为一种新型的复杂验证码,是近几年刚刚出现的一种基于文本类型的验证码,它是实心字符验证码的优化变形。因为其只由简单的轮廓线组成、图像中包含的信息少,字符的有效特征信息会被大幅度弱化。若当图像背景中再有干扰线加入时,在预处理过程中部分字符轮廓还会被误当作噪声去除,这些都极大地提高了机器自动识别的难度。因此,空心验证码受到了许多大型网站的青睐,但其是否能真正有效地抵制自动识别程序,是否真正安全还亟需得到验证。



技术实现要素:

鉴于上述问题,提出了本发明,以便提供一种克服上述问题或者至少部分地解决上述问题的用于自动识别验证码中空心字符的方法。

进一步技术方案如下:

本发明提供了一种在识别空心字符验证码过程中通过填充技术将空心字符填充为实心字符并去除背景干扰后进行字符识别的方法。该方法主要包括:在图片进行预处理转换为黑白图后,对发生断裂的字符轮廓线进行修复;将得到的所有白色封闭区域进行颜色填充;对填充后得到的所有不同颜色块,依据其形状特性及横纵向特性进行三次检测去干扰处理,提取有效字符块;提取字符块中有效特征信息并进行检测识别。

所述对预处理得到的黑白图中发生断裂的字符轮廓线进行修复部分,是从原点开始,按照一定顺序依次查找黑色轮廓线像素点,若以该点为中心的相应邻域范围内存在黑色点,则将此黑色点进行标记并沿此路径继续探索,未形成闭环的路径终点即为轮廓线断点。在找到的所有轮廓线断点中筛选得到真正断点后,依据点间距离最近原则匹配得出属于同一条轮廓线的断点,进行连接。

所述对所有白色封闭区域进行颜色填充部分,是在对轮廓线修复后形成的每个封闭连通区域按照一定顺序依次查找,每找到一个连通区域便将其颜色转变为一个新的灰度值。最终保证所有白色封闭区域被填充为不同灰度值,且按照封闭区域在图像中的位置其灰度值也呈现一定关系

所述依据颜色块形状特性及横纵向特性进行三次检测去干扰处理部分,首先在每个颜色块的边界坐标点中找出横坐标相同、纵坐标不连续的点数量,每个横坐标中此点数量大于一定值则计入横向特性值;找出纵坐标相同、横坐标不连续的点数量,每个纵坐标中此点数量大于一定值则计入纵向特性值。当某颜色块的横纵向特性值满足预定条件时则认为该色块为有效字符块。对所有颜色块进行第一次横纵向特性检测,找出部分有效字符块后依据边界点颜色信息确定发生粘连的颜色块并进行修复、连接处理。随后进行第二次横纵向特性检测,找出第一次检测修复得到的字符块,并依据其余颜色块所占矩形区域长宽比确定字符发生断裂的色块,同时与相应字符进行匹配连接。最后进行第三次横纵向特性检测,找出所有字符块。

所述提取字符块中有效特征信息并进行检测识别部分,首先对所有检测得到的字符块,依据其颜色信息依次分割得到单个字符。随后进行细化,提取每个字符的骨架图像,去除冗余,归一化后逐行提取像素点,按一定规则将图像信息转换为数值特征向量。最后利用机器学习方法对已正确识别的字符所建立的特征训练集进行自学习后得出有效识别模型进行其他字符的识别。

本发明能够达到的有益效果如下:

(1)在对所有空心区域进行颜色填充后,可以使空心字符转换为实心字符,使有效字符信息得到强化,以便在后续处理中不易受到干扰。同时,将背景干扰线转换为干扰噪块,使得去噪处理过程更加简单,效果更加理想。

(2)在查找轮廓线断裂点过程中,依次将黑色点设置为搜索起始点并对其邻域内所有路径进行搜索,这样可以保证能找出图像中所有轮廓线断点。在修复前对断点进行选择、匹配还可以有效避免背景图像与字符轮廓产生误连。

(3)在字符识别阶段,可依据每个字符的颜色信息将其按顺序依次分割出来,降低因分割而引入的误差,提高识别正确率。提取字符骨架信息后建立特征向量,可有效减少冗余信息,节省所占空间。

附图说明

图1为本发明的用于自动识别验证码中空心字符的方法的流程图;

图2为本发明的进行三次检测确定有效字符的一个具体例子的流程图;

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本发明公开的示例性实施例,然而应当理解,可以以各种形式实现本发明公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明的技术方案,并且能够将本发明公开的范围完整的传达给本领域的技术人员。

在一个具体实施例中,本发明提供了一种用于自动识别验证码中空心字符的方法。该方法的流程如图1所示,图1中的方法主要包括:步骤s10、步骤s11、步骤s12、步骤s13以及步骤s14。下面对本实施例的方法所包括的各步骤分别进行详细说明。

s10、对发生断裂的字符轮廓线进行修复。

作为示例,本实施例在对图像进行二值化等预处理得到黑白图后首先查找轮廓线断点。将整个轮廓线看作一个迷宫,从原点开始,按照从左至右的顺序依次查找未被标记的黑色轮廓线像素点,并以此为起点进行搜索,若以该点为中心的八邻域范围内存在黑色轮廓线点,则将该点进行标记,接着探索其八邻域范围内的下一个轮廓线点,若最终没有回到起始点位置且没有新的未曾探索过的像素点时,该终点则为轮廓线终点。继续查找下一个未被标记的黑色轮廓线点作为起点进行探索,直至所有轮廓线全部探索完毕。在得出所有终点后,有些点并非真正断点,本实施例依据所有终点的八邻域范围内点分布情况找出真正轮廓线断点。随后对轮廓线断点按一定匹配原则进行匹配、连接处理,完成断裂线的修复。

作为示例,本实施例中的匹配原则可以具体为两点间欧氏距离最小原则,当然,本实施例也不排除匹配原则为其他形式的可能性。

s11、对所有封闭的白色连通区域进行颜色填充。

作为示例,本实施例在修复轮廓线后,从原点开始按照从左至右、从上至下的顺序依次遍历图像中的每一个像素点,寻找白色像素点。将该白色点作为种子点向四周迭代搜索找出其所在的白色连通域,将该连通域填充为其它颜色后,继续寻找下一个白色像素点所在的连通域并进行颜色填充,直至所有白色区域全部填充为不同颜色。为保证颜色填充后每个连通域中颜色信息能有效反映该连通域在图像中所处的位置,本实施例在填充过程中将不同封闭区域填充为不同灰度值的颜色,且按填充的先后次序其灰度值依次增大。

s12、对得到的颜色块,依据其形状特性及横纵向特性进行三次检测去干扰处理,提取有效字符块。

作为示例,本实施例在计算横纵向特性值过程中,首先找出同一灰度值连通区域中所有边界点坐标。在边界点坐标中找出横坐标相同但纵坐标不连续的点,若对同一个横坐标,纵坐标不连续点个数大于一定值则横向特性值加1,遍历所有横坐标,计算横向特性值;在边界点坐标中找出纵坐标相同但横坐标不连续的点,若对同一个纵坐标,横坐标不连续点个数大于一定值则纵向特性值加1,遍历所有纵坐标,计算纵向特性值。

本实施例中一个三次检测去干扰处理具体过程如图2所示。

对所有颜色块进行第一次横纵向特性检测,通过上述方法计算横纵向特性值,若其横纵向特性值满足预定条件,则此颜色块为有效字符块,将其灰度信息放入字符集中。计算其余颜色块外部轮廓点中背景点所占比例,若比例满足预定条件,则将此颜色块确定为属于同一字符相互粘连的颜色块,对相互粘连的颜色块进行修复,置为同一颜色。随后进行第二次横纵向特性检测,对第一次检测中除确定字符块外其余颜色块进行横纵向特性值计算,若横纵向特性值满足预定条件,则此颜色块为有效字符块,将其灰度信息放入字符集中。计算余颜色块所占矩形区域长宽比例,若比例满足预定条件,则将此颜色块确定为某一字符发生断裂的颜色块并与相应字符块进行匹配连接,置为同一颜色。最后进行第三次横纵向特性检测,计算此时所有颜色块的横纵向特性值,将特性值满足预定条件的颜色块保留,其余颜色块去除。此时图像中仅存在有效字符块。

s13、分割字符块并提取有效特征信息。

作为示例,在本实施例处理得到的图像中,字符块按照从左至右的顺序其灰度值依次增大,因此可以根据灰度值信息依次将每个字符块分割、提取出来。对每个字符块利用细化算法将线条固定在单像素宽度以去除冗余、获得字符骨架图像。随后将每个字符的骨架拓扑结构放置在统一大小的白色图像中央,归一化后从原点开始逐行依次读取每个坐标点颜色信息,转换为一条数值特征向量。

s14、利用机器学习方法对字符信息进行检测识别

作为示例,本实施例中采用支持向量机对字符特征向量进行检测识别。首先选取一定数量的特征字符进行人工识别,并按照上述处理过程得到特征向量后建立训练集。利用其对支持向量机进行训练,得出识别模型。随后利用此模型对上述过程处理验证码后得到的字符特征向量进行检测识别,输出验证码中字符信息。

应该注意的是,上述实施例是对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出其他替换实施例。上述具体实施例仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种用于自动识别验证码中空心字符的方法的权利要求书的且任何所属技术领域人员对其所做的适当变换或替代,皆应落入本发明的专利保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1