一种不定长通用数字字母验证码识别系统及方法技术方案

技术编号:33022661 阅读:18 留言:0更新日期:2022-04-15 08:55
本发明专利技术公开了一种不定长通用数字字母验证码识别系统及方法,属于计算机技术领域。本发明专利技术包括以下步骤:步骤一:通过利用captcha第三方库随机生成各种长度、字体、噪音的数字字母验证码图片;步骤二:基于步骤一中生成的数字字母验证码图片构建深度卷积神经网络模型;步骤三:对步骤二中构建的深度卷积神经网络模型进行训练,直至得到精确度较高的训练模型;步骤四:利用步骤三中训练得到的深度卷积神经网络模型对上传的验证码图片进行识别,本发明专利技术在构建的深度卷积神经网络中增加一个字符,用于防止不定长验证码出现字符为空的情况,适用于多种类型的验证码识别,进一步增加了识别系统的使用效果。统的使用效果。统的使用效果。

【技术实现步骤摘要】
一种不定长通用数字字母验证码识别系统及方法


[0001]本专利技术涉及计算机
,具体为一种不定长通用数字字母验证码识别系统及方法。

技术介绍

[0002]验证码是一种区分用户是计算机还是人的公共全自动程序,可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,因此,对验证码进行精准识别,可避免日常生活中因识别不清楚而导致用户无法正常使用程序的情况发生。
[0003]现有的数字字母验证码识别系统在对验证码进行识别时,都是针对固定长度,固定字体,固定噪音模式的解决方案,导致识别系统适用范围较窄,使用效果较差,以及在构建卷积神经网络模型对验证码进行识别时,无法对边缘粘合度较高的字符进行拆分,导致模型处理速率较慢,以及在对构建的卷积神经网络进行训练时,无法保证验证码精确度达到最大值,进一步降低了识别系统的识别精度。

技术实现思路

[0004]本专利技术的目的在于提供一种不定长通用数字字母验证码识别系统及方法,以解决上述
技术介绍
中提出的问题。
[0005]为了解决上述技术问题,本专利技术提供如下技术方案:一种不定长通用数字字母验证码识别方法,所述方法包括以下步骤:
[0006]步骤一:通过利用captcha第三方库随机生成各种长度、字体、噪音的数字字母验证码图片;
[0007]步骤二:基于步骤一中生成的数字字母验证码图片构建深度卷积神经网络模型;
[0008]步骤三:对步骤二中构建的深度卷积神经网络模型进行训练,直至得到精确度较高的训练模型;
[0009]步骤四:利用步骤三中训练得到的深度卷积神经网络模型对上传的验证码图片进行识别。
[0010]进一步的,所述步骤一中通过利用captcha第三方库随机生成各种长度、字体、噪音的数字字母验证码图片的具体方法为:
[0011]步骤一(Ⅰ).遍历captcha第三方库中的所有字体,随机字体大小和字符串类型,生成多幅单字符图片;
[0012]步骤二(Ⅱ).将多幅单字符图片随机进行旋转、缩放和扭曲处理,并在处理后的多幅单字符图片中随机选取,组合生成不定长度的验证码图片;
[0013]步骤三(Ⅲ).对步骤二(Ⅱ)中生成的验证码图片随机添加不同种类的噪音,生成各种长度、字体、噪音的数字字母验证码图片。
[0014]进一步的,所述步骤二中构建深度卷积神经网络模型的具体方法为:
[0015]步骤二(1).选取步骤一中生成的数字字母验证码图片作为输入,对输入的验证码图片进行卷积处理,对卷积处理后的验证码图片进行池化、过拟合处理,将池化、过拟合处理后的验证码图片输出,对验证码图片进行卷积处理用于对验证码图片中的字符边缘进行检测,有利于进行特征提取,对卷积处理后的验证码图片进行池化处理用于减少卷积后图片中的冗余信息,进而减少验证码图片输出值,提高工作效率,对池化处理后的验证码图片进行过拟合处理用于避免在模型准确率达到最高值时,出现停滞或下降情况;
[0016]步骤二(2).对步骤二(1)中输出的验证码图片重复进行卷积、池化、过拟合处理,直至在能够识别验证码字符串的同时使验证码图片输出值最小;
[0017]步骤二(3).将步骤二(2)输出的验证码图片中的字符串按照最后一次卷积处理后像素值的分布情况拆分成单字符图片,若通过像素值判断出多个字符边缘位置相粘合,则将该多字符当作单字符图片进行拆分,并根据各单字符在验证码图片中的具体位置对单字符图片进行编号,将边缘位置相粘合的多字符当作单字符图片进行拆分,避免最后输出的验证码与实际验证码不同;
[0018]步骤三(4).若存在将边缘位置相粘合的多字符当作单字符图片进行拆分的情况发生,则对该单字符图片的损失值进行计算,根据损失值计算结果对该单字符图片再次进行拆分,并根据各多字符在单字符图片中的具体位置对多字符进行编号,其中损失值L的具体计算公式为:
[0019][0020]其中,m表示0

9,a

z,A

Z三种字符类型,j=1、2、3,当j=1时表示字符类型为0

9,当j=2时表示字符类型为a

z,当j=3时表示字符类型为A

Z,y
j
表示第j种字符类型的输出值,当j=1时,y1表示第1种字符类型的输出值,此时y1=

1,当j=2时,y2表示第2种字符类型的输出值,此时y2=0,当j=3时,y3表示第3种字符类型的输出值,此时y3=1,p
j
表示判断字符为第j种字符类型出现的概率,y
j
*p
j
表示字符为第j种字符类型出现的概率,当时,表示字符类型为A

Z的概率最大,此时最大程度将边缘粘合处拆分至与之相连的字符图片中,当时,表示字符类型为0

9的概率最大,此时最大程度将边缘粘合处拆分至与之相连的字符图片中,当时,表示字符类型为a

z的概率最大,此时最大程度将边缘粘合处拆分至与之相连的字符图片中;
[0021]步骤三(4).将编号后的单字符图片按照字符类型分别输入字母通道卷积神经网络和数字通道卷积神经网络,对输入字母通道卷积神经网络和数字通道卷积神经网络的单字符图片再次进行卷积、池化、过拟合处理,直至能够读取单字符图片上的字符,并根据编号顺序将输出的单字符组合生成验证码字符串。
[0022]进一步的,所述步骤三中对步骤二中构建的深度卷积神经网络模型进行训练,直至得到精确度较高的训练模型的具体方法为:
[0023]步骤三(1).将验证码图片按照比例切分成训练集和验证集,之后将训练集和验证集中太大的图片缩小成标准规格大小,将太小的图片按照高度扩大后居中放置在标准规格的白色背景正中位置;
[0024]步骤三(2).对步骤三(1)中切分的验证码图片进行像素灰度化处理,对处理后图片中的色块大小进行统计,将统计后易区分的小块色块使用背景色进行填充,填充后,对每个像素值除以255,将整数像素值转换为0

1之间的浮点数,接着将处理后的验证码图片输入深度卷积神经网络模型进行识别;
[0025]步骤三(3).基于one

hot算法,将识别结果编码成62位one hot编码,为了处理不定长验证码,采用62+1的方式将识别结果最终编码成63位one hot编码;
[0026]步骤三(4).对编码后得到的不定长验证码精确度进行计算,若计算出的精确度经过多次迭代后变化较大,则将模型设置的初始学习率减半再次进行计算,若计算出的精确度经过多次迭代后变化较小,则停止计算,得到训练模型,具体的精确度计算公式Q为:
[0027][0028]其中,n表示验证码中字符数量,i=1、2、3、4、5、6、7、8,表示验证码中的第i个字符,X表示63位one hot编码,x表示每个字符本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种不定长通用数字字母验证码识别方法,其特征在于:所述方法包括以下步骤:步骤一:通过利用captcha第三方库随机生成各种长度、字体、噪音的数字字母验证码图片;步骤二:基于步骤一中生成的数字字母验证码图片构建深度卷积神经网络模型;步骤三:对步骤二中构建的深度卷积神经网络模型进行训练,直至得到精确度较高的训练模型;步骤四:利用步骤三中训练得到的深度卷积神经网络模型对上传的验证码图片进行识别。2.根据权利要求1所述的一种不定长通用数字字母验证码识别方法,其特征在于:所述步骤一中通过利用captcha第三方库随机生成各种长度、字体、噪音的数字字母验证码图片的具体方法为:步骤一(Ⅰ).遍历captcha第三方库中的所有字体,随机字体大小和字符串类型,生成多幅单字符图片;步骤二(Ⅱ).将多幅单字符图片随机进行旋转、缩放和扭曲处理,并在处理后的多幅单字符图片中随机选取,组合生成不定长度的验证码图片;步骤三(Ⅲ).对步骤二(Ⅱ)中生成的验证码图片随机添加不同种类的噪音,生成各种长度、字体、噪音的数字字母验证码图片。3.根据权利要求2所述的一种不定长通用数字字母验证码识别方法,其特征在于:所述步骤二中构建深度卷积神经网络模型的具体方法为:步骤二(1).选取步骤一中生成的数字字母验证码图片作为输入,对输入的验证码图片进行卷积处理,对卷积处理后的验证码图片进行池化、过拟合处理,将池化、过拟合处理后的验证码图片输出;步骤二(2).对步骤二(1)中输出的验证码图片重复进行卷积、池化、过拟合处理,直至在能够识别验证码字符串的同时使验证码图片输出值最小;步骤二(3).将步骤二(2)输出的验证码图片中的字符串按照最后一次卷积处理后像素值的分布情况拆分成单字符图片,若通过像素值判断出多个字符边缘位置相粘合,则将该多字符当作单字符图片进行拆分,并根据各单字符在验证码图片中的具体位置对单字符图片进行编号;步骤三(4).若存在将边缘位置相粘合的多字符当作单字符图片进行拆分的情况发生,则对该单字符图片的损失值进行计算,根据损失值计算结果对该单字符图片再次进行拆分,并根据各多字符在单字符图片中的具体位置对多字符进行编号,其中损失值L的具体计算公式为:其中,m表示0

9,a

z,A

Z三种字符类型,j=1、2、3,当j=1时表示字符类型为0

9,当j=2时表示字符类型为a

z,当j=3时表示字符类型为A

Z,y
j
表示第j种字符类型的输出值,当j=1时,y1表示第1种字符类型的输出值,此时y1=

1,当j=2时,y2表示第2种字符类型的输出值,此时y2=0,当j=3时,y3表示第3种字符类型的输出值,此时y3=1,p
j
表示判断字符
为第j种字符类型出现的概率,y
j
*p
j
表示字符为第j种字符类型出现的概率;步骤三(4).将编号后的单字符图片按照字符类型分别输入字母通道卷积神经网络和数字通道卷积神经网络,对输入字母通道卷积神经网络和数字通道卷积神经网络的单字符图片再次进行卷积、池化、过拟合处理,直至能够读取单字符图片上的字符,并根据编号顺序将输出的单字符组合生成验证码字符串。4.根据权利要求3所述的一种不定长通用数字字母验证码识别方法,其特征在于:所述步骤三中对步骤二中构建的深度卷积神经网络模型进行训练,直至得到精确度较高的训练模型的具体方法为:步骤三(1).将验证码图片按照比例切分成训练集和验证集,之后将训练集和验证集中太大的图片缩小成标准规格大小,将太小的图片按照高度扩大后居中放置在标准规格的白色背景正中位置;步骤三(2).对步骤三(1)中切分的验证码图片进行像素灰度化处理,对处理后图片中的色块大小进行统计,将统计后易区分的小块色块使用背景色进行填充,填充后,对每个像素值除以255,将整数像素值转换为0

1之间的浮点数,接着将处理后的验证码图片输入深度卷积神经网络模型进行识别;步骤三(3).基于one

hot算法,将识别结果编码成62位one hot编码,为了处理不定长验证码,采用62+1的方式将识别结果最终编码成63位one hot编码;步骤三(4).对编码后得到的不定长验证码精确度进行计算,若计算出的精确度经过多次迭代后变化较大,则将模型设置的初始学习率减半再次进行计算,若计算出的精确度经过多次迭代后变化较小,则停止计算,得到训练模型,具体的精确度计算公式Q为:其中,n表示验证码中字符数量,i=1、2、3、4、5、6、7、8,表示验证码中的第i个字符,X表示63位one hot编码,x表示每个字符中表示的具体数字或字母个数,表示n个字符中具体数字或字母占63位one hot编码的比值之和。5.根据权利要求4所述的一种不定长通用数字字母验证码识别方法,其特征在于:所述步骤四中利用步骤三中训练得到的深度卷积神经网络模型对上传的验证码图片进行识别的具体方法为:步骤四(1).将训练模型在web服务中打开,UI自动化测试场景通过web接口上传验证码图像文件;步骤四(2).将验证码图像文件在训练模型中打开,在训练模型中将验证码图像调整为标准规格大小并使验证码图像位于背景中间位置,然后对验证码图像进行像素灰度化处理,对处理后图像中的色块大小进行统计,将统计后易区分的小块色块使用背景色进行填充,填充后,对每个像素值除以255,将整数像素值转换为0

1之间的浮点数,接着将处理后的验证码图像上输入训练模型,基于one

hot算法,将训练模型输出结果编码成63位one hot编码;步骤四(3).对63位one hot编码进行argmax计算,将编码转换为可识别的字符串,并将
识别结果通过web接口返回到UI自动化测试场景。6.一种不定长通用数字字母验证码识别系统,其特征在于:包括验证码图片生成模块(S1)、深度卷积神经网络模型构建模块(S2)、训练模块(S3)和识别模块(S4);所述验证码图片生成模块(S1)用于通过captcha第三方库生成大量深度卷积神经网络训练模型训练所需的各种长度、字体、噪音的数字字母验证码图片,并将生成的数字字母验证码图片传输至深度卷积神经网络模型构建模块(S2)和训练模块(S3);所述深度卷积神经网络模型构建模块(S2)用于对验证码图片生成模块(S1)传输的数字字母验证码图片进行接收,深度卷积神经网络模型构建模块(S2)利用tensoflow...

【专利技术属性】
技术研发人员:尉建锋叶建统杨建光郦丽莉聂海波盛慧萍
申请(专利权)人:杭州卓健信息科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1