一种空心验证码的识别方法与流程

文档序号:12272283阅读:1226来源:国知局
一种空心验证码的识别方法与流程

本发明涉及验证码识别技术领域,具体地说是一种实用性强、空心验证码的识别方法。



背景技术:

验证码作为一种区分用户是计算机还是人类的安全技术,已被大多数网站采用。验证码的出现是为了防止某些恶意程序对网站的破坏,如批量注册、批量发帖、同时也防止爬虫程序进行资源抓取。目前主要采用基于图像的字符验证码。空心字符验证码作为一种验证码设计方式,设计为一条干扰线穿过空心字符,使用户的视觉体验不像实心的粘连干扰造成的用户体验下降。空心字符验证码作为一种比较新颖的设计方式,已被各大公司网站应用到其用户登录、邮箱验证、论坛评论等模块中。

因此,验证码给网站带来安全的同时,也给某些从事数据分析获取工作的人们带来了一定的不便,验证码识别算法正是为解决此问题。目前,空心字符验证码作为一种比较新颖的方式,目前还没有一种有效的方法来识别它。基于此,现提供一种空心验证码的识别方法。



技术实现要素:

本发明的技术任务是针对以上不足之处,提供一种实用性强、空心验证码的识别方法。

一种空心验证码的识别方法,该方法的实现过程为:

首先提取字符图像,对提取的字符进行预处理,提取出去除字符干扰的字符区域;

对字符区域进行切割,分割出字符;

对字符进行训练,得到相应识别模型,进行识别。

所述字符预处理过程通过图像预处理模块完成,该模块的处理过程为:

步骤一、首先对提取字符进行二值化处理,根据字符特征提取干扰线区域;

步骤二、然后对干扰线区域去除字符区域影响,得到干扰线所在位置;

步骤三、沿着干扰线方向,根据周围字符的特征,去掉部分干扰线;

步骤四、对其进行连通区域标记,找出所有的字符断裂部分及干扰线与字符形成的干扰区域,去除干扰区域。

所述步骤一的具体过程为:

对提取的字符图像,首先使用包括高斯滤波的滤波算法,中值滤波滤除图像中的噪声点;

然后依据图像的像素特征,使用自适应阈值或者固定阈值算法,对图像进行二值化处理;

依据空心验证码的生成特征,对有字符有断裂的情况,修复字符轮廓线,保证字符外边缘的完整性,从而完成干扰线区域的提取。

步骤二中根据干扰线区域提取干扰线是指依据空心验证码的像素特征,提取出干扰线,并记录下它所在的位置。

步骤三中去掉部分干扰线是指断开干扰线的过程,即依据空心验证码的像素特征,对干扰线的领域像素进行分析,断开明显干扰线位置。

步骤四中标记的连通区域包括断裂字符的连通区域、字符与字符形成的连通区域、字符与干扰线形成的连通区域以及字符本身内部的连通区域;

去除干扰连通区域是指去除除断裂字符外所有的连通区域,具体为:通过分析连通区域外在的分布特征,区别出断裂字符连通区域和干扰连通区域,进行分类,去除。

上述预处理步骤中还包括断裂连接和旋转矫正的步骤,具体为:

断裂连接步骤是指断裂字符连通区域部分连接,分析干扰线对字符的截断影响特征,设计对应的连接模板,连接断裂部分;

旋转矫正步骤是指找出每字符每部分的最小外接矩形,去除干扰矩形,统计计算得出旋转角度,旋转验证码图像。

对字符区域进行切割通过空心字符分割模块完成,该模块通过对每个字符区域进行合并分类,得到每个字符所在的区域,切割每个字符输出,具体为:

对得到的字符连通区域,进行合并分类,计算出每个字符所在的中心位置,在此位置附近设置阈值,计算得出与字符所在位置的距离,如果小于预设阈值,则归入此字符,否则,属于其他字符,从而得到了每个字符所在的具体位置;通过上述计算得到的每个字符的具体位置,对每个字符进行切割输出,用于下一步的字符识别。

字符识别通过字符识别模块实现,该模块把字符用神经网络进行训练,训练出符合本类字符特征的模型,用该模型来进行字符判断识别。

本发明的一种空心验证码的识别方法,具有以下优点:

该发明的一种空心验证码的识别方法,在数据分析人员需要获取大量网络数据时,针对空心验证码,能够自动迅速的识别出验证码中的字符,进行准确的获取,不会因验证码的阻碍及识别错误,出现没法获取数据,另外,由于本字符模型是针对于本类的字符训练得到,识别率大大提高,实用性强,适用范围广泛,易于推广。

附图说明

附图1为本发明的实现结构示意图。

附图2为本发明的实现流程图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步说明。

如附图1、图2所示,本发明提供一种空心验证码的识别方法,用来针对带干扰线的空心字符的验证码进行识别。该方法利用二值化提取字符的边缘,根据字符特征提取干扰线区域,去除字符区域影响,得到干扰线所在位置,沿着干扰线方向,根据周围字符的特征,去掉部分干扰线,然后对其进行连通区域标记,找出所有的字符断裂部分及干扰线与字符形成的干扰区域,采用本发明提出的一种算法,去除干扰区域。采用本发明提出的几个邻域模型连接断裂部分,通过对每个连通区域的统计分析,计算旋转角度,旋转图像,对每个字符区域进行分类合并,得到每个字符所在的区域,最后切割每个字符输出。然后把字符用神经网络进行训练,训练出符合本类字符特征的模型,用本模型来进行字符判断识别。

其实现过程为:

首先提取字符图像,对提取的字符进行预处理,提取出去除字符干扰的字符区域;

对字符区域进行切割,分割出字符;

对字符进行训练,得到相应识别模型,进行识别。

所述字符预处理过程通过图像预处理模块完成,该模块的处理过程为:

使用滤波算法如高斯滤波,中值滤波滤除图像中的噪声点。

依据图像的像素特征,使用自适应阈值或者固定阈值算法,对图像进行二值化处理。

依据空心验证码的生成特征,对有字符有断裂的情况,需要修复字符轮廓线,保证字符外边缘的完整性。

提取干扰线,依据空心验证码的像素特征,提取出干扰线,并记录下它所在的位置。

断开干扰线,依据空心验证码的像素特征,对干扰线的领域像素进行分析,断开明显干扰线位置。

连通区域标记,找出所有的连通区域,并标记处位置,此时的连通区域,不仅包括断裂字符的连通区域,还包括字符与字符形成的连通区域,字符与干扰线形成的连通区域以及字符本身内部的连通区域,都需要标记出来。

去干扰连通区域,主要包括上述除断裂字符外所有的连通区域,主要通过分析连通区域外在的分布特征,根据某种策略,区别出断裂字符连通区域和干扰连通区域,进行分类,去除。

断裂字符连通区域部分连接,分析干扰线对字符的截断影响特征,设计对应的连接模板,连接断裂部分。(此步一般不能把所有的字符断裂部分连接起来)

旋转矫正,找出每字符每部分的最小外接矩形,去除干扰矩形,统计计算得出旋转角度,旋转验证码图像。

对字符区域进行切割通过空心字符分割模块完成,该模块通过对每个字符区域进行合并分类,得到每个字符所在的区域,切割每个字符输出,具体为:

对上述得到的字符连通区域,进行合并分类,一般是计算出每个字符所在的大体中心位置,在此位置附近,根据某种策略,设置阈值,计算得出与字符所在位置的距离,如果小于预设阈值,则归入此字符,否则,属于其他字符,从而得到了每个字符所在的具体位置。

通过上述计算得到的每个字符的具体位置,对每个字符进行切割输出,用于下一步的字符识别。

字符识别通过字符识别模块实现,该模块把字符用神经网络进行训练,训练出符合本类字符特征的模型,用该模型来进行字符判断识别。本模块主要负责对上述得到的每个字符,进行识别,目前有许多已有的字符识别模块,但是识别效果都是不太理想,为此,用本类空心字符通过训练机器学习的神经网络,得到能够反映本类空心字符固有特征的模型,用此模型来识别,输识别字符,比用现有的识别模块,字符识别率大有提高。

上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种空心验证码的识别方法的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。

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