验证码识别方法、装置、计算机设备及计算机存储介质与流程

文档序号:13686107阅读:165来源:国知局
验证码识别方法、装置、计算机设备及计算机存储介质与流程

本发明涉及计算机技术领域,特别是涉及一种验证码识别方法、装置、计算机设备及计算机存储介质。



背景技术:

验证码是一种有效区分用户还是计算机的公共全自动程序,使用验证码可以有效防止他人对网站用特定程序不断登录,从而破解用户的账户和密码等恶意行为,目前验证码包括字符图像、语音识别、视频验证码等,由于字符图像易传输,使用较为广泛,一般当用户进行登陆时输入验证码之后,网站需要验证用户输入的验证码字符是否正确,则首先需要自动识别出验证码,然后将识别出的验证码与用户输入的验证码字符进行比对,从而保证用户的正常登陆。

一般地,在自动识别验证码的时候,会对验证码中的各字符进行预先分割,有些验证码的字符之间会出现一些连接线和字符的黏连,此时,会有严重的噪声干扰到导致分割不准确,在分割时操作难度大,导致识别验证码的准确性降低。



技术实现要素:

基于此,有必要针对验证码识别的过程中,对字符的分割操作难度大,从而导致识别的准确性低,提供一种验证码识别方法、装置、计算机设备及计算机存储介质。

一种验证码识别方法,所述方法包括:

获取验证码图像中当前字符的起始边界,并根据所述起始边界生成识别窗口,计算所述识别窗口中的当前字符为标准字符的概率;

固定所述识别窗口的高度,且按照预设步长增加所述识别窗口的宽度,并计算宽度增加后的识别窗口中的字符为标准字符的概率,直至所述识别窗口的高宽比小于等于第一阈值;

选取所计算的概率中的最大概率,并获取与所述最大概率对应的标准字符;

将所述最大概率对应的标准字符作为所述当前字符的识别结果输出。

在其中一个实施例中,在将所述最大概率对应的标准字符作为所述当前字符的识别结果输出的步骤之后,还包括:

根据所述最大概率对应的识别窗口的宽度以及所述当前字符的起始边界,计算下一字符的起始边界,并根据所述下一字符的起始边界识别所述验证码图像中的下一字符,直至所述验证码图像中的所有字符识别完成。

在其中一个实施例中,所述方法还包括:

识别所述验证码图像的边缘像素点,根据所述边缘像素点选取所述验证码图像的顶点像素点;

根据所述顶点像素生成所述验证码图像的第一边界,将所述第一边界作为所述验证码图像中的第一个字符的起始边界。

在其中一个实施例中,所述方法还包括:

根据顶点像素生成所述验证码图像的第二边界;

计算所述下一字符的起始边界与所述验证码图像的第二边界的距离;

当所述距离小于第二阈值时,则所述验证码图像中的所有字符识别完成。

在其中一个实施例中,所述根据所述起始边界生成识别窗口之后,还包括:

当所述验证码图像的高度与所述识别窗口的高度不匹配时,计算所述验证码图像的高宽比;

根据所述验证码图像的高宽比调节所述验证码图像的高度和宽度。

在其中一个实施例中,所述计算所述识别窗口中的当前字符为标准字符的概率之前,还包括:

对所述验证码图像进行二值化处理;

获取二值化处理后的验证码图像中的每个字符的边缘;

将获取到的每个字符的边缘进行平滑处理。

一种验证码识别装置,所述装置包括:

起始边界获取模块,用于获取验证码图像中当前字符的起始边界,并根据所述起始边界生成识别窗口,计算所述识别窗口中的当前字符为标准字符的概率;

识别窗口调节模块,用于固定所述识别窗口的高度,且按照预设步长增加所述识别窗口的宽度,并计算宽度增加后的识别窗口中的字符为标准字符的概率,直至所述识别窗口的高宽比小于等于第一阈值;

选取模块,用于选取所计算的概率中的最大概率,并获取与所述最大概率对应的的标准字符;

输出模块,用于将所述最大概率对应的标准字符作为所述当前字符的识别结果输出。

在其中一个实施例中,所述装置还包括:

边界计算模块,用于根据所述最大概率对应的识别窗口的宽度以及所述当前字符的起始边界,计算下一字符的起始边界,并根据所述下一字符的起始边界识别所述验证码图像中的下一字符,直至所述验证码图像中的所有字符识别完成。

一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。

一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法中的步骤。

上述验证码识别方法、装置、计算机设备及计算机存储介质,无需预先分割字符,只需根据初始边界设置识别窗口,固定识别窗口的高度,按照预设步长增加识别窗口的宽度,计算每次增加宽度的识别窗口中的字符为标准字符的概率,选取计算的识别窗口中的字符为标准字符的概率中的最大概率,将该最大概率对应的标准字符作为当前字符的识别结果,避免了操作难度大的字符分割操作,保证当前字符的识别准确性。

附图说明

图1为一实施例中验证码识别方法应用场景图;

图2为一实施例中验证码识别方法的流程图;

图3为一实施例中下一字符的第一识别窗口的示意图;

图4为一实施例中下一字符的第二识别窗口的示意图;

图5为一实施例中下一字符的第三识别窗口的示意图;

图6为一实施例中下一字符的第四识别窗口的示意图;

图7为一实施例中起始边界生成步骤的流程图;

图8为一实施例中字符识别步骤的流程图;

图9为一实施例中验证码图像调节步骤的流程图;

图10为一实施例中字符预处理步骤的流程图;

图11为一实施例中验证码识别装置的结构示意图;

图12为一实施例中计算机设备的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。

在详细说明根据本发明的实施例前,应该注意到的是,所述的实施例主要在于与验证码识别方法、装置、计算机设备及计算机存储介质相关的步骤和装置组件的组合。因此,所述装置组件和方法步骤已经在附图中通过常规符号在适当的位置表示出来了,并且只示出了与理解本发明的实施例有关的细节,以免因对于得益于本发明的本领域普通技术人员而言显而易见的那些细节模糊了本发明的公开内容。

在本文中,诸如左和右,上和下,前和后,第一和第二之类的关系术语仅仅用来区分一个实体或动作与另一个实体或动作,而不一定要求或暗示这种实体或动作之间的任何实际的这种关系或顺序。术语“包括”、“包含”或任何其他变体旨在涵盖非排他性的包含,由此使得包括一系列要素的过程、方法、物品或者设备不仅包含这些要素,而且还包含没有明确列出的其他要素,或者为这种过程、方法、物品或者设备所固有的要素。

请参见图1,图1提供一实施例中验证码识别方法应用场景图,其中包括验证码识别设备和网站服务器,验证码识别设备和网站服务器可以进行通信,验证码识别设备可以是常规服务器、计算机设备等,验证码识别设备其上运行有验证码识别程序,网站服务器上设置有相应的网站,验证码识别设备验证用户输入的验证码是否正确,当用户输入的验证码正确时,则向网站服务器发送访问请求,确保用户可以访问设置在网站服务器上的网站。验证码识别设备中存储有相应的验证码图像,用户输入验证码后,验证码识别设备识别出验证码图像中的字符,然后将识别出的字符与用户输入的验证码字符进行比对,当识别出的字符与用户输入的字符比对成功,则验证通过,进而向网站服务器发送访问请求。

请参见图2,提供一验证码识别方法的流程图,本实施例以该方法应用到上述图1中的验证码识别设备来举例说明,该验证码识别设备上运行有验证码识别程序,通过该网验证码识别程序来识别验证码。该方法包括如下步骤:

s202:获取验证码图像中当前字符的起始边界,并根据起始边界生成识别窗口,计算识别窗口中的当前字符为标准字符的概率。

具体地,识别窗口是指当对验证码图像中的字符进行识别时,针对每个字符设置的识别框,该识别框可以是矩形识别框,该矩形识别框的第一识别边固定不变,第二识别边可以移动,第二识别边与第一识别边可以相对设置。起始边界是指在对验证码图像中的字符进行识别时,对当前字符识别时的起始位置,该起始边界即上述的第一识别边。标准字符是指可以表征固定信息的数据,标准字符可以是字母、数字或符号等,例如,标准字符可以是26个英文字母中的任意一个,可以是数字0-9中的任意一个,也可以是符号,如句号、逗号或感叹号等。

具体地,验证码识别设备获取到验证码图像,进而获取验证码图像中对当前字符进行识别时的起始位置,该起始位置作为识别当前字符的起始边界,根据该起始边界,生成识别窗口,识别窗口的第一识别边设置的位置即为起始边界的位置,进而采用训练得到的模型计算位于识别窗口内的当前字符是标准字符的概率。例如,验证码识别设备根据验证码图像获取验证码图像中的当前字符的识别时的起始边界,根据起始边界,生成识别窗口,采用训练得到的模型计算位于识别窗口内的当前字符为每个标准字符的概率,如当前字符为标准字符a的概率是30%,当前字符为标准字符b的概率是60%,当前字符为标准字符3的概率是89%,当前字符为标准字符d的概率是92%等。

s204:固定识别窗口的高度,且按照预设步长增加识别窗口的宽度,并计算宽度增加后的识别窗口中的字符为标准字符的概率,直至识别窗口的高宽比小于等于第一阈值。

具体地,预设步长是指识别窗口预先设置的宽度的改变量,也即识别窗口的第二识别边移动时预先设置的移动距离,通过第二识别边的移动,增加识别窗口的宽度,预设步长可以设置的非常小,保证识别窗口连续移动,可以准确识别位于识别窗口内的当前字符,例如,预设步长可以设置为0.01厘米、0.02厘米、0.05厘米、0.07厘米或0.1厘米等。第一阈值是指预先设置的高宽比的值,该预先设置的高宽比的值可以使得识别窗口具有合理的大小,保证最多仅有一个当前字符位于识别窗口内部,第一阈值可以根据验证码中每个字符的宽度进行预先设置,例如,第一阈值可以设置为0.75、0.8、0.9、1、1.2等。

具体地,初始设置的识别窗口为第零识别窗口,该第零识别窗口的高度固定,按照预设步长,通过移动第二识别边改变识别窗口的宽度,当第一次改变识别窗口的宽度得到第一识别窗口时,且此时识别窗口的高宽比大于第一阈值,则计算位于第一识别窗口内的字符为每个标准字符的概率;进而按照预设步长,继续移动第二识别边,得到第二识别窗口,且此时识别窗口的高宽比仍大于第一阈值,计算位于第二识别窗口内的字符为每个标准字符的概率;继续按照预设步长移动第二识别边,直至识别窗口的高宽比小于等于第一阈值,且每次按照预设步长移动第二识别边得到新的识别窗口后,分别计算位于新的识别窗口中的当前字符为标准字符的概率。例如,将识别窗口的高度固定,识别窗口的高度为1厘米,此时识别窗口的初始宽度为0.1厘米,按照预设步长0.05厘米,移动识别窗口的第二识别边改变识别窗口的宽度得到第一识别窗口,此时第一识别窗口的高度为1厘米,宽度为0.15厘米,第一识别窗口的高宽比大于第一阈值0.8,计算位于第一识别窗口内的字符为每个标准字符的概率,即可以计算位于第一识别窗口内的字符为26个大写字母中的每个字母、26个小写字母中的每个字母以及10个数字中的每个数字的概率;进而继续按照预设步长0.05厘米移动第二识别边,直至识别窗口的高宽比小于等于第一阈值0.8时停止,且每次按照预设步长移动第二识别边得到新的识别窗口后,分别计算位于新的识别窗口中的当前字符为标准字符的概率,即可以计算位于新的识别窗口内的字符为26个大写字母中的每个字母、26个小写字母中的每个字母以及10个数字中的每个数字的概率。

s206:选取所计算的概率中的最大概率,并获取与最大概率对应的标准字符。

具体地,验证码识别设备计算每次按照预设步长增加宽度后的识别窗口中的当前字符为标准字符的概率,选择计算出的所有的概率中的最大概率,该最大概率对应的标准字符即为当前字符的识别结果。例如,将识别窗口的高度固定,识别窗口的高度为1厘米,该识别窗口的初始宽度为0.1厘米,每次按照预设步长0.05厘米,移动识别窗口的第二识别边改变识别窗口的宽度得到新的识别窗口,且每次得到新的识别窗口后,分别计算位于新的识别窗口中的当前字符为标准字符的概率,即每次得到新的识别窗口,可以计算位于新的识别窗口内的字符为26个大写字母中的每个字母、26个小写字母中的每个字母以及10个数字中的每个数字的概率,如最大概率为98%,此时该最大概率对应的为大写字母d,则该大写字母d即为识别窗口内的当前字符的结果。

s208:将最大概率对应的标准字符作为当前字符的识别结果输出。

具体地,当验证码识别设备选择计算出的所有的概率中的最大概率,该最大概率对应的标准字符即为当前字符的识别结果,将该识别结果输出。例如,最大概率为98%,此时该最大概率对应的为大写字母d,则该大写字母d即为识别窗口的当前字符的结果,将该大写字母d作为识别窗口输出。

需要说明的是,本实施例中,对每个识别窗口内的字符进行识别时,可以采用经过训练得到的识别模型对位于识别窗口内的当前字符进行识别,如可以采用经过bp(backpropagation,反向传播)神经网络算法经过训练得到的识别模型对位于识别窗口内的当前字符进行识别,也可以采用朴素贝叶斯算法经过训练得到的识别模型对位于识别窗口内的当前字符进行识别,还可以采用rmb(restritedboltzmannmachine,受限玻尔兹曼机)模型经过训练得到识别模型对位于识别窗口内的当前字符进行识别。

上述实施例中,只需获取验证码图像中当前字符的起始边界,根据起始边界设置识别窗口,固定识别窗口的高度,按照预设步长增加识别窗口的宽度,计算每次增加宽度的识别窗口中的字符为标准字符的概率,选取计算的识别窗口中的字符为标准字符的概率中的最大概率,将该最大概率对应的标准字符作为当前字符的识别结果只需根据初始边界设置识别窗口,固定识别窗口的高度,按照预设步长增加识别窗口的宽度,计算每次增加宽度的识别窗口中的字符为标准字符的概率,选取计算的识别窗口中的字符为标准字符的概率中的最大概率,将该最大概率对应的标准字符作为当前字符的识别结果,计算无需预先分割字符,避免了操作难度大的字符分割操作,保证当前字符的识别准确性,

在其中一个实施例中,提供一字符边界计算步骤,该步骤可以在图2所示实施例的步骤s208之后执行,步骤s208,即在将最大概率对应的标准字符作为当前字符的识别结果输出的步骤之后,还可以包括:

s302:根据最大概率对应的识别窗口的宽度以及当前字符的起始边界,计算下一字符的起始边界,并根据下一字符的起始边界识别验证码图像中的下一字符,直至验证码图像中的所有字符识别完成。

当验证码识别设备根据识别窗口,选取到计算的识别窗口内当前字符为标准字符的概率中的最大概率,进而获取最大概率对应的识别窗口的宽度,根据起始边界和识别窗口的宽度,计算下一字符的起始边界,根据下一字符的起始边界,对下一字符设置有下一字符的识别窗口,下一字符的识别窗口也设置有固定不变的第一识别边和可移动的第二识别边,下一字符识别窗口的第一识别边设置的位置即为下一字符的起始边界,计算该下一字符的识别窗口内的字符为标准字符的概率,按照预设的步长,增加下一字符的识别窗口的宽度,得到新的下一字符的识别窗口,且该下一字符的识别窗口的高宽比大于预设的高宽比的阈值,计算该下一字符的识别窗口内的字符为标准字符的概率,进而继续增加下一字符的识别窗口的宽度,直至下一字符的识别窗口的高宽比的阈值小于等于预设的高宽比的阈值,且每次得到新的下一字符的识别窗口时,都计算下一字符的识别窗口内的字符为标准字符的概率,选择最大的概率,最大概率对应的标准字符即为该下一字符,且获取该下一字符的识别窗口的宽度与该下一字符的起始边界,可以计算再下一字符的起始边界,根据再下一字符的起始边界,设置有再下一字符的识别窗口,进而识别再下一字符,直至验证码图像上的所有字符都识别完成。

具体地,可参见图3至图6,分别提供下一字符的第一识别窗口的示意图,下一字符的第二识别窗口的示意图,下一字符的第三识别窗口的示意图和下一字符的第四识别窗口的示意图。最大概率对应的识别窗口的宽度可以由识别窗口的初始宽度与按照预设步长增加若干次的宽度的和来计算,此时按照预设步长增加若干次的宽度的识别窗口内的字符为标准字符的概率最大,例如,识别窗口的初始宽度为0.1厘米,按照预设步长0.05厘米移动了十次,此时识别窗口内的字符为标准字符的概率最大,则该识别窗口的宽度增加了0.5厘米,识别窗口的宽度为0.1厘米与0.5厘米的和,为0.6厘米,则当前字符识别窗口的宽度为0.6厘米;然后,可以利用当前字符的起始边界以及识别窗口的宽度移动的距离得到下一字符的起始边界的位置,例如,当前字符的起始边界移动0.6厘米所在的位置即为下一字符的识别窗口的起始边界。

如图3至图6所示的起始边界a即为下一字符的起始边界a,根据下一字符的起始边界a,对下一字符设置有下一字符的识别窗口,下一字符的识别窗口可以用s表示,下一字符的识别窗口s的第一识别边即为起始边界a,该第一识别边固定不变,识别窗口s的第二识别边为b,第二识别边可以按照预设步长移动,进而可以增加识别窗口s的宽度。设置有下一字符的识别窗口的高宽比的预设值为1.3,如图3所示,根据下一字符的起始边界a,对下一字符设置有下一字符的第一识别窗口,且该第一识别窗口的高宽比为4,大于识别窗口的高宽比的预设值,计算位于第一识别窗口内的下一字符为标准字符的概率,如可以计算出该下一字符为a的概率是1%,为a的概率是1.2%,为l的概率是70%,为1的概率是75%等。

移动下一字符的第一识别窗口的第二识别边b,得到下一字符的第二识别窗口为s1,如图4所示,第二识别窗口的第一识别边仍为起始边界a,下一字符的第二识别窗口的第二识别边为b1,且第二识别窗口的高宽比为2,大于识别窗口的高宽比的预设值,计算位于第二识别窗口内的下一字符为标准字符的概率,如计算出下一字符为a的概率是0.5%,为b的概率是1%,为l的概率是60%等。

继续移动下一字符的第二识别窗口的第二识别边b,得到下一字符的第三识别窗口为s2,如图5所示,第三识别窗口的第一识别边仍为起始边界a,第三识别窗口的第二识别边为b2,且第三识别窗口的高宽比为1.5,大于识别窗口的高宽比的预设值,计算位于第三识别窗口内的下一字符为标准字符的概率,如计算出下一字符为c的概率是0.7%,为d的概率是1%,为l的概率是68%等。

继续移动下一字符的第三识别窗口的第二识别边b,得到下一字符的第四识别窗口为s3,如图6所示,第四识别窗口的第一识别边仍为起始边界a,第四识别窗口的第二识别边为b3,且第三识别窗口的高宽比为1.25,小于识别窗口的高宽比的预设值,计算位于第四识别窗口内的下一字符为标准字符的概率,如计算出下一字符为u的概率是97%,为f的概率是1%,为l的概率是20%等;选取识别窗口内最大的概率,即为97%,此时对应的字母为u,则该下一字符为u,此时该最大概率对应的识别窗口为第四识别窗口,第四识别窗口的宽度为0.8厘米,且根据该字符u的起始边界a与第四识别窗口的宽度,即可得到再下一字符的起始边界,此时再下一字符的起始边界可以是第四识别窗口的第二识别边b3,根据该起始边界,设置再下一字符的识别窗口,进而识别再下一字符,直至验证码上的所有字符都识别完毕。

需要说明的是,高宽比的预设值可以还可以设置为0.6、0.8、1.5等;对位于识别窗口内的字符计算为标准字符的概率可以分别计算为26个大写字母中每个字母的概率,并分别计算为26个小写字母中每个字母的概率,并分别计算为数字0-9中每个数字的概率;对于识别窗口,预设步长可以非常小,进而可以得到若干识别窗口,本实施例中仅举出四个识别窗口进行说明,本领域的技术人员应当理解,识别窗口的宽度可以改变的非常小,识别窗口的设置不限于此。

上述实施例中,根据最大概率对应的识别窗口的宽度及当前字符的起始边界,计算下一个字符的起始边界,并继续识别验证码图像中的字符,无需分割出所有字符,即可自动实现下一字符的识别,避免字符之间出现黏连等现象导致的分割不准确从而验证码识别不准确的情形。

在其中一个实施例中,可参见图7,提供一起始边界生成步骤的流程图,该步骤可以在图2所示实施例中步骤s202之前执行,步骤s202,即获取验证码图像中当前字符的起始边界,并根据所述起始边界生成识别窗口,计算所述识别窗口中的当前字符为标准字符的概率的步骤之前执行,该起始边界生成步骤可以包括:

s702:识别验证码图像的边缘像素点,根据边缘像素点选取验证码图像的顶点像素点。

具体地,边缘像素点是指验证码图像的边界的像素点,根据验证码图像的形状,边缘像素点相连接可以根据验证码图像的形状构成相应的形状轮廓,例如,可以构成矩形轮廓,正方形轮廓、平行四边形轮廓或五边形轮廓等。具体地,识别验证码图像的边缘像素点可以按照坐标顺序识别,例如,规定起始识别像素的坐标,起始识别像素可以是验证码图像横向边长上的像素之一,保证像素的横坐标不变,顺序改变纵坐标,按照顺序改变纵坐标时,当识别到下一个坐标处无像素点,进而保持识别像素的横坐标不变,改变纵坐标继续顺序识别,直至识别出验证码图像的所有边缘像素点;识别验证码图像的边缘像素点还可以采用边缘识别算法进行识别,如采用滴水算法、微分法或最优算子法,例如,可以规定识别的起点,进而规定识别的路径,按照识别的路径从识别的起点进行识别,直至验证码图像的所有边缘像素点被识别出来。

顶点像素点是指验证码图像的边缘像素点顺序连接时可以构成验证码图像的形状的轮廓的边缘像素点中的各个边的交点的像素,例如,当验证码图像为矩形时,顶点像素可以是验证码图像的四个顶点的像素。根据识别出的验证码图像的边缘像素点,选取验证码图像的顶点像素点,具体地,可以根据边缘像素点的坐标,选择验证码图像的顶点像素点,例如,可以是,当边缘像素点位置的横坐标不变,纵坐标按顺序改变,当下一个边缘像素点位置的纵坐标与当前边缘像素点位置的纵坐标相同,而横坐标改变,则当前边缘像素点即为顶点坐标之一,也可以是,当边缘像素点位置的纵坐标不变,横坐标按顺序改变,当下一个边缘像素点位置的横坐标与当前边缘像素点位置的横坐标相同,而纵坐标改变,则当前边缘像素点即为顶点坐标之一。还可以根据采用边缘识别算法检测出的验证码图像的边缘像素点,直接选择边缘像素点中的验证码图像中的顶点像素。

s704:根据顶点像素生成验证码图像的第一边界,将第一边界作为验证码图像中的第一个字符的起始边界。

具体地,当识别出验证码图像的顶点像素时,选择其中的一个顶点像素作为第一顶点像素,将与第一顶点像素相邻的每个像素点顺序连接,形成验证码图像的第一边界,具体地,可以是,当验证码图像的字符是横向排列时,当识别出验证码图像的顶点像素时,选择其中的一个顶点像素作为第一顶点像素,按照竖直方向,将与第一顶点像素相邻的每个像素点顺序连接,形成验证码图像的第一边界;也可以是,当验证码图像的字符是竖向排列时,当识别出验证码图像的顶点像素时,选择其中的一个顶点像素作为第一顶点像素,按照横向方向,将与第一顶点像素相邻的每个像素点顺序连接,形成验证码图像的第一边界。例如,可以是,当验证码图像是矩形图像且验证码图像中的字符是横向排列时,当识别出验证码图像的顶点像素时,选择左上角的顶点像素点作为第一顶点像素,按照竖直方向,将与第一顶点像素相邻的每个像素点顺序连接,形成验证码图像的第一边界;也可以是,当验证码图像是矩形图像且验证码图像中的字符是竖向排列时,当识别出验证码图像的顶点像素时,选择左上角的顶点像素点作为第一顶点像素,按照横向方向,将与第一顶点像素相邻的每个像素点顺序连接,形成验证码图像的第一边界。需要说明的是,在对验证码进行识别时,可以从验证码图像中的从左边起第一个字符开始识别,则根据顶点像素生成验证码的第一边界时,可以选取验证码图像的左上角的像素作为顶点像素从而生成第一边界,也可以选择左下角的像素作为顶点像素从而生成第一边界;也可以从验证码图像中的从右边起第一个字符开始识别,则根据顶点像素生成验证码的第一边界时,可以选取验证码图像的右上角的像素作为顶点像素从而生成第一边界,也可以选取验证码图像的右下角的像素作为顶点像素从而生成第一边界。

将生成的验证码图像的第一边界,作为验证码图像中第一个字符的起始边界,根据起始边界,设置识别窗口,进而对位于识别窗口内的第一个字符进行识别。需要说明的是,验证码图像可以是矩形图像,也可以是其他形状的图像,如平行四边形、六边形等,例如,可以是平行四边形的验证码图形,当验证码图像的形状是平行四边形时,可以先识别验证码图像的边缘像素点,根据边缘像素点选取验证码图像的顶点像素点,根据顶点像素点按顺序连接与顶点像素点相邻的每个像素点时,如果连接后形成的高小于预设的识别窗口的高度,则选取与顶点像素点相邻的像素点,将与顶点像素点相邻的像素点作为新的顶点像素点,将与新的顶点像素点相邻的像素点按顺序连接,直至连接后的像素点形成的高与预设的识别窗口高度相等,将连接后的像素点作为第一边界,将该第一边界作为验证码图像中的第一字符的起始边界。

上述实施例中,识别出验证码图像的边缘像素点,根据边缘像素点选取验证码图像的顶点像素点,根据顶点像素生成验证码图像的第一边界,将该第一边界作为验证码图像中的第一个字符的起始边界,根据该起始边界设置有识别窗口,对验证码图像中的字符进行识别,选取识别边界准确,进而设置的识别窗口准确,提高对验证码识别的准确性。

在其中一个实施例中,可参见图8,提供一字符识别步骤的流程图,该步骤可以在图7所示实施例的步骤s702后执行,步骤s702,即识别所述验证码图像的边缘像素点,根据所述边缘像素点选取所述验证码图像的顶点像素点的步骤之后执行,字符识别步骤可以包括:

s802:根据顶点像素生成验证码图像的第二边界。

具体地,第二边界是指验证码图像中所有字符识别完成的终止边界,也即所有字符的识别窗口的边界不超过该终止边界,即不超过该第二边界。具体地,当识别出验证码图像的顶点像素时,选择其中一个顶点像素作为第二顶点像素,将与第二顶点像素相邻的每个像素点顺序连接,形成验证码图像的第二边界,可以是,当验证码图像的字符是横向排列时,当识别出验证码图像的顶点像素时,选择其中的一个顶点像素作为第二顶点像素,按照竖直方向,将与第二顶点像素相邻的每个像素点顺序连接,形成验证码图像的第二边界;也可以是,当验证码图像的字符是竖向排列时,当识别出验证码图像的顶点像素时,选择其中的一个顶点像素作为第二顶点像素,按照横向方向,将与第二顶点像素相邻的每个像素点顺序连接,形成验证码图像的第二边界。例如,可以是,当验证码图像是矩形图像且验证码图像中的字符是横向排列时,当识别出验证码图像的顶点像素时,选择右上角的顶点像素点作为第二顶点像素,按照竖直方向,将与第二顶点像素相邻的每个像素点顺序连接,形成验证码图像的第二边界;也可以是,当验证码图像是矩形图像且验证码图像中的字符是竖向排列时,当识别出验证码图像的顶点像素时,选择右上角的顶点像素点作为第二顶点像素,按照横向方向,将与第二顶点像素相邻的每个像素点顺序连接,形成验证码图像的第二边界。需要说明的是,在对验证码进行识别时,可以从验证码图像中的从左边起第一个字符开始识别,直到从左边起的最后一个字符,则根据顶点像素生成验证码的第二边界时,可以选取验证码图像的右上角的像素作为顶点像素从而生成第二边界,也可以选择右下角的像素作为顶点像素从而生成第一边界;也可以从验证码图像中的从右边起的第一个字符开始识别,直到从右边起的最后一个字符,则根据顶点像素生成验证码的第二边界时,可以选取验证码图像的左上角的像素作为顶点像素从而生成第一边界,也可以选取验证码图像的左下角的像素作为顶点像素从而生成第一边界。

s804:计算下一字符的起始边界与验证码图像的第二边界的距离。

根据下一字符的起始边界的位置与验证码图像的第二边界的位置,计算下一字符的起始边界与验证码图像的第二边界间的距离。具体地,可以是,根据下一字符的起始边界的第一像素的位置的坐标与验证码图像的第二边界的第一像素的位置的坐标,计算下一字符的起始边界与验证码图像的第二边界间的距离;也可以是,根据验证码图像的第一边界与第二边界之间的宽度,每个字符的可正确识别出窗口内的字符的识别窗口的宽度的和,计算两者差值,得到下一字符的起始边界与验证码图像的第二边界的距离。例如,下一字符的起始边界的第一像素的位置的坐标为(1,1),第二边界的第一像素的位置的坐标为(1,5),距离的单位为厘米,则下一字符的起始边界与第二边界之间的距离为4厘米;也可以是,第一边界与第二边界之间的宽度为5厘米,可正确识别第一个字符的识别窗口的宽度为1厘米,则下一字符的起始边界与第二边界之间的距离为4厘米,若可正确识别第一个字符的识别窗口的宽度为1厘米,可正确识别第二个字符的识别窗口的宽度为1厘米,则下一字符的起始边界与第二边界之间的距离为3厘米。

需要说明的是,采用坐标计算时,可以采用下一字符的起始边界中的任一像素坐标,选取第二边界中的与下一字符的起始边界中的任一像素对应的像素坐标进行计算。

s806:当距离小于第二阈值时,则验证码图像中的所有字符识别完成。

第二阈值是指下一字符的起始边界与第二边界之间的距离的预设值,当下一字符的起始边界与第二边界之间的距离小于预设值时,下一字符的起始边界临近第二边界,则此时已到验证码图像中的最后一个字符。具体地,当下一字符的起始边界与第二边界之间的距离小于预设值时,则验证码图像中的所有字符识别完成。例如,设置第二阈值为2厘米,当下一字符的起始边界与第二边界之间的距离小于2厘米时,则此时已到验证码图像中的最后一个字符,则验证码图像中的所有字符识别完成。需要说明的是,第二阈值可以是1厘米、1.2厘米、2.1厘米或2.2厘米等。

上述实施例中,设置有第二边界,还设置有第二阈值,计算下一字符的起始边界与第二边界的距离,当距离小于第二阈值时,则验证码图像中的字符识别完成,根据第二边界与下一字符的起始边界即可确定验证码图像中的字符是否识别完成,操作简单,无需人工过多监控,节省人力,提高工作效率。

在其中一个实施例中,可参见图9,提供一验证码图像调节步骤的流程图,该步骤可以在图2所示实施例中的步骤s202中的根据起始边界生成识别窗口之后执行,步骤202,即在获取验证码图像中当前字符的起始边界,并根据起始边界生成识别窗口,计算识别窗口中的当前字符为标准字符的概率中的根据起始边界生成识别窗口之后执行,包括:

s902:当验证码图像的高度与识别窗口的高度不匹配时,计算验证码图像的高宽比。

验证码识别设备根据验证码图像,获取到验证码图像中当前字符的起始边界,根据该起始边界生成验证码图像中的字符的识别窗口,当验证码图像的高度与识别窗口的高度不匹配时,则验证码识别设备计算验证码图像的高宽比。具体地,当生成识别窗口之后,检测到验证码图像的高度与识别窗口的高度不匹配,例如,验证码图像的高度值比识别窗口的高度值大,从而位于验证码图像中的字符超过识别窗口,则根据验证码图像的高度与宽度的比值,得到验证码图像的高宽比。需要说明的是,验证码图像的高度与识别窗口的高度不匹配也可以是验证码图像的高度比识别窗口的高度小,导致字符过小,从而在识别窗口内过小,出现字符识别不准确。

s904:根据验证码图像的高宽比调节验证码图像的高度和宽度。

具体地,验证码识别设备根据计算出的验证码图像的高宽比,调整验证码图像的高度和宽度,使得验证码图像的高度与识别窗口的宽度匹配,调整验证码图像的高度和宽度时,保证验证码图像的高宽比不变,避免验证码图像中的字符由于调节高度和宽度导致变形。

上述实施例中,当验证码图像的高度与识别窗口的高度不匹配时,为了避免验证码图像中位于识别窗口中的字符比识别窗口大导致字符缺失进而识别不准确,或验证码图像中位于识别窗口内的字符过小,影响识别的准确性,则需要调节验证码图像的高度和宽度,按照验证码图像的高宽比,对验证码图像的高度和宽度进行调节,保证验证码图像中的字符不会因为调节大小而变形,保证验证码图像中字符识别的准确性。

在其中一个实施例中,可参见图10,提供一字符预处理步骤的流程图,该步骤可以在图2所示实施例中步骤s202的计算识别窗口中的当前字符为标准字符的概率之前执行,步骤s202,即在获取验证码图像中当前字符的起始边界,并根据起始边界生成识别窗口,计算识别窗口中的当前字符为标准字符的概率的计算识别窗口中的当前字符为标准字符的概率之前执行,包括:

s1002:对验证码图像进行二值化处理。

在对验证码图像中的字符进行识别之前,可以将验证码图像进行二值化处理,可选地,可以采用otsu算法(大津算法)对验证码图像进行二值化处理,可以采用bernsen二值化算法,可以采用niblack二值化算法等。具体地,可以设置有预设的像素值阈值,将验证码图像中的每一个像素点的像素值与预设值进行比较,进而根据比较结果设置对每一个像素点设置新的像素值,进而得到验证码图像的二值化图像,例如,预设的像素值阈值为155,将验证码图像中的每一个像素点的像素值与预设值进行比较,当验证码图像中的像素的像素值高于155时,则将该像素的像素值设置为1,当验证码图像中的像素的像素值低于155时,则将该像素的像素值设置为0,进而得到二值化处理后的验证码图像。需要说明的是,可以根据验证码图像,相应的设置阈值,阈值可以设置为65、80、90、165等。

s1004:获取二值化处理后的验证码图像中的每个字符的边缘。

将二值化图像处理后,获取每个字符的边缘,具体地,将验证码图像进行二值化处理后,可选地,可以采用虫随法获取每个字符的边缘,也可以采用canny边缘检测算子获取每个字符的边缘,也可以采用laplacian算子获取每个字符的边缘,例如,可以预先设置图像中的检测起始点,进而规定检测字符边缘的路径,如从白色像素区域向黑色像素区域前进,黑色像素区域表示一个闭合的轮廓,当检测到黑色像素时,则向左继续检测,检测到像素为白色时,则向右继续检测,直到回到最初的检测起始点,则黑色像素即为检测出来的识别码的边界。

s1006:将获取到的每个字符的边缘进行平滑处理。

具体地,验证码识别设备根据获取到的每个字符的边缘,将每个字符的边缘进行平滑处理,如可以采用指数平滑算法对字符的边缘进行平滑处理,可以采用拉普拉斯算法对字符的边缘进行平滑处理,还可以采用邻域平均法对字符的边缘进行平滑处理等,例如,验证码识别设备获取到每个字符的边缘后,对字符的边缘上某些锯齿进行平滑,对细小的缺失进行填补。

上述实施例中,验证码识别设备先将验证码图像进行二值化处理,进而提取验证码图像中字符的边缘,对字符的边缘进行处理,避免了不同颜色的验证码图像对识别结果的影响,且对验证码图像中的字符的边缘进行处理,防止由于字符边缘本身的缺陷影响识别结果,可以提高对字符识别的准确性,并且可以提高字符识别的效率。

在其中一个实施例中,可参见图11,提供一验证码识别装置的结构示意图,验证码识别装置110包括:

起始边界获取模块111,用于获取验证码图像中当前字符的起始边界,并根据起始边界生成识别窗口,计算识别窗口中的当前字符为标准字符的概率。

识别窗口调节模块112,用于固定识别窗口的高度,且按照预设步长增加识别窗口的宽度,并计算宽度增加后的识别窗口中的字符为标准字符的概率,直至识别窗口的高宽比小于等于第一阈值。

选取模块113,用于选取所计算的概率中的最大概率,并获取与最大概率对应的的标准字符。

输出模块114,用于将最大概率对应的标准字符作为当前字符的识别结果输出。

在其中一个实施例中,验证码识别装置110还可以包括:

边界计算模块,用于根据最大概率对应的识别窗口的宽度以及当前字符的起始边界,计算下一字符的起始边界,并根据下一字符的起始边界识别验证码图像中的下一字符,直至验证码图像中的所有字符识别完成。

在其中一个实施例中,验证码识别装置110还可以包括:

顶点像素点选取模块,用于识别验证码图像的边缘像素点,根据边缘像素点选取验证码图像的顶点像素点。

第一边界生成模块,用于根据顶点像素生成验证码图像的第一边界,将第一边界作为验证码图像中的第一个字符的起始边界。

在其中一个实施例中,验证码识别装置还可以包括:

第二边界生成模块,用于根据顶点像素生成验证码图像的第二边界。

距离计算模块,用于计算下一字符的起始边界与验证码图像的第二边界的距离。

识别完成记录模块,用于当距离小于第二阈值时,则验证码图像中的所有字符识别完成。

在其中一个实施例中,起始边界获取模块111可以包括:

高宽比计算单元,用于当验证码图像的高度与识别窗口的高度不匹配时,计算验证码图像的高宽比。

图像调节单元,用于根据验证码图像的高宽比调节验证码图像的高度和宽度。

在其中一个实施例中,验证码识别装置110还可以包括:

图形二值化处理模块,用于对验证码图像进行二值化处理。

字符边缘获取模块,用于获取二值化处理后的验证码图像中的每个字符的边缘。

字符边缘处理模块,用于将获取到的每个字符的边缘进行平滑处理。

上述关于验证码识别装置的具体限定可以参见上文中关于验证码识别方法的限定,在此不再赘述。

在其中一个实施例中,请参见图12,提供一执行验证码识别的计算机设备的结构示意图,该计算机设备可以验证码识别设备、是常规服务器或其他任何合适的计算机设备,包括存储器、处理器、操作系统、数据库以及存储在存储器上并可在处理器上运行的验证码识别程序,其中存储器可以包括内存储器,处理器执行网站文件处理程序时实现以下步骤:获取验证码图像中当前字符的起始边界,并根据起始边界生成识别窗口,计算识别窗口中的当前字符为标准字符的概率。固定识别窗口的高度,且按照预设步长增加识别窗口的宽度,并计算宽度增加后的识别窗口中的字符为标准字符的概率,直至识别窗口的高宽比小于等于第一阈值。选取所计算的概率中的最大概率,并获取与最大概率对应的标准字符。将最大概率对应的标准字符作为当前字符的识别结果输出。

在其中一个实施例中,处理器执行程序时还实现以下步骤:根据最大概率对应的识别窗口的宽度以及当前字符的起始边界,计算下一字符的起始边界,并根据下一字符的起始边界识别验证码图像中的下一字符,直至验证码图像中的所有字符识别完成。

在其中一个实施例中,处理器执行程序时还实现以下步骤:识别验证码图像的边缘像素点,根据边缘像素点选取验证码图像的顶点像素点。根据顶点像素生成验证码图像的第一边界,将第一边界作为验证码图像中的第一个字符的起始边界。

在其中一个实施例中,处理器执行程序时还实现以下步骤:根据顶点像素生成验证码图像的第二边界。计算下一字符的起始边界与验证码图像的第二边界的距离。当距离小于第二阈值时,则验证码图像中的所有字符识别完成。

在其中一个实施例中,处理器执行程序时还实现以下步骤:当验证码图像的高度与识别窗口的高度不匹配时,计算验证码图像的高宽比。根据验证码图像的高宽比调节验证码图像的高度和宽度。

在其中一个实施例中,处理器执行程序时还实现以下步骤:对验证码图像进行二值化处理。获取二值化处理后的验证码图像中的每个字符的边缘。将获取到的每个字符的边缘进行平滑处理。

上述关于计算机设备的具体限定可以参见上文中关于验证码识别方法的限定,在此不再赘述。

在一个实施例中,提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:获取验证码图像中当前字符的起始边界,并根据起始边界生成识别窗口,计算识别窗口中的当前字符为标准字符的概率。固定识别窗口的高度,且按照预设步长增加识别窗口的宽度,并计算宽度增加后的识别窗口中的字符为标准字符的概率,直至识别窗口的高宽比小于等于第一阈值。选取所计算的概率中的最大概率,并获取与最大概率对应的标准字符。将最大概率对应的标准字符作为当前字符的识别结果输出。

在其中一个实施例中,该程序被处理器执行时还可以实现以下步骤:根据最大概率对应的识别窗口的宽度以及当前字符的起始边界,计算下一字符的起始边界,并根据下一字符的起始边界识别验证码图像中的下一字符,直至验证码图像中的所有字符识别完成。

在其中一个实施例中,该程序被处理器执行时还可以实现以下步骤:识别验证码图像的边缘像素点,根据边缘像素点选取验证码图像的顶点像素点。根据顶点像素生成验证码图像的第一边界,将第一边界作为验证码图像中的第一个字符的起始边界。

在其中一个实施例中,该程序被处理器执行时还可以实现以下步骤:根据顶点像素生成验证码图像的第二边界。计算下一字符的起始边界与验证码图像的第二边界的距离。当距离小于第二阈值时,则验证码图像中的所有字符识别完成。

在其中一个实施例中,该程序被处理器执行时还可以实现以下步骤:当验证码图像的高度与识别窗口的高度不匹配时,计算验证码图像的高宽比。根据验证码图像的高宽比调节验证码图像的高度和宽度。

在其中一个实施例中,该程序被处理器执行时还可以实现以下步骤:对验证码图像进行二值化处理。获取二值化处理后的验证码图像中的每个字符的边缘。将获取到的每个字符的边缘进行平滑处理。

上述关于计算机存储介质的具体限定可以参见上文中关于验证码识别方法的限定,在此不再赘述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成的程序可存储于一非易失性计算机可读取计算机存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,计算机可读取的计算机存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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