论文部分内容阅读
验证码被广泛应用于网站登录、注册等环节,用来增强身份验证和防止来自计算机程序的自动攻击。其中文本类验证码由于密码空间大、交互方式简单等特点被大多数主流网站使用。目前,为了增加计算机程序对文本类验证码自动识别的难度,设计时普遍将复杂干扰信息、字符扭曲、旋转和粘连、不同类型字体等安全性特征随机组合使用。由于组合了多种安全特征,传统的验证码识别方法对该种验证码的识别率非常低甚至失效。针对此类文本类验证码,本文提出了一种基于生成式对抗网络(Generative Adversarial Networks,GAN)的去干扰法生成去除干扰信息的验证码,然后根据生成验证码的不同特征,设计了如下三种不同的识别方案:(1)对于空心字符验证码,使用本文去干扰法在有效去除干扰信息的同时将空心字符填充为实心字符并拉伸字符间距,本文对此类验证码采用基于生成式对抗网络的分割识别方案。通过本文优化过的分割算法对拉伸后的验证码进行有效分割,再使用卷积神经网络(Convolutional Neural Network,CNN)对分割后的单个字符进行识别。(2)对于实心字符验证码,使用本文去干扰法有效去除干扰信息后,对此类验证码采用基于迁移学习的整体识别方案。根据真实验证码去除干扰信息后的文本分布特征生成大量合成验证码,以此作为训练样本,采用CNN训练出预训练模型,再使用少量真实验证码在预训练模型的基础上进行迁移训练。迁移过程中保持预训练模型前两层参数不变,对其他层参数进行传导更新。最后使用该迁移模型对真实验证码进行预测。(3)对于实心字符文本较长且内容为常见单词片段拼接的验证码,使用本文去干扰法有效去除干扰信息后,对此类验证码采用基于修正模型的整体识别方案。以大量合成验证码作为训练样本,采用CNN训练出识别模型。再使用少量真实验证码通过识别模型得到预测结果,将预测结果和真实结果使用自然语言处理领域拼写纠正的方法训练出一个修正模型,通过该修正模型来修正识别模型预测出的结果。在难以以低成本大量获取真实验证码的情况下,本文设计了程序合成验证码对网络进行训练,训练成本远低于现有其他方法且训练效果良好。最终的实验结果表明,本文提出的方法能够成功的识别Microsoft、Wikipedia、百度、支付宝、新浪等世界主流网站的验证码,最佳情况下的识别率能够比传统方法提高63.7%。