论文部分内容阅读
验证码是用于区分移动终端是计算机还是人类的全自动程序,被广泛应用于国内外各大网站,它在一定程度上保障了互联网安全,防止计算机程序暴力破解、网络灌水等恶意事件的发生。为保证验证码的安全性和可靠性,验证码识别技术应运而生。目前,验证码形式丰富,常用的有文本验证码、拼图验证码、滑块验证码、图像验证码等,本文主要针对文本验证码的识别展开研究。本文在验证码识别算法研究的第一阶段与第二阶段采用基于字符分割的识别模式,第三阶段利用深度学习实现端到端的验证码识别。分别选取学校就业信息网、京东商城以及腾讯验证码进行识别,具体工作如下:(1)针对就业信息网验证码字符中间有阴影,使用单一的字符分割方法难以正确分割的问题,改进字符图像分割算法,提出一种自适应调整分割的方法。首先通过连通域标记法将具有连通性的字符分割出来,基于验证码先验知识,判断分割字符数是否正确,然后结合垂直投影分割法进行分割校正,最终实现验证码字符的准确分割,相比于颜色填充法与单一字符分割法,该方法可以在不增加算法复杂性的情况下,解决字符中间有阴影难以正确分割的问题。(2)针对传统图像分割方法对字符共用笔划验证码过度分割导致笔划断裂问题,提出改进滴水算法分割验证码。首先建立验证码细化图像特征点,对验证码特征进行聚类分析,在候选区域内确定水滴出发点,建立水滴滚动位置选择函数。初始水滴按照提取出的重叠字符骨架滚动,水滴到达骨架末端时将继续沿着骨架倾斜方向滴落,直到遇到字符粘连部分的边界,水滴走过的轨迹即为粘连字符切分路径。本文对共用笔划字符利用该方法进行分割,由试验结果表明,针对此类型验证码,改进算法相比于传统滴水算法与竖直切分法分割成功率更高。将分割获得的单个字符利用8层卷积神经网络进行预测识别,最终识别结果为4个字符序列,平均每张识别时间为0.46秒,识别正确率达到88%。(3)针对验证码存在扭曲、粘连、字符空心并且存在大面积阴影块噪声的问题,若使用先分割再识别的模式,识别结果将严重依赖预处理效果以及字符分割结果,所以对此类验证码的识别本文去掉了字符分割步骤,利用卷积神经网络实现验证码端到端识别。主要包括建立海量数据集,然后使用Keras框架建模,利用ImageNet预训练好的XCeption模型进行迁移学习,完成验证码字符的26分类,该模型对验证码的识别率达到75%,满足验证码破解的基本需求。