验证码自动识别技术与实现文献综述
2020-04-14 19:48:37
验证码(completely automated public turning test to tell computers and humansapart,CAPTCHA)是一种自动区分计算机和人类的图灵测试。最早由卡内基梅隆大学的Luis von Ahn等人在2003年发表的论文中提出。验证码通常是由多个随机产生的字符组合生成一幅图像,通过加入干扰噪声,并使字母扭曲形变,以增加计算机识别的难度,达到防止恶意注册刷票、论坛灌水等计算机自动化行为的目的。一般会出现在用户登陆网站、网站的注册、信息的查询等场景。验证码是互联网系统安全的第一道防线,能够有效地阻止重放攻击、暴力破解等,它已经成为一种基本的安全机制,得到了广泛的应用。
随着互联网技术的发展,尤其是信息技术与消费的快速集合,验证码这个基础防线面临的冲击日益强大。现如今,人们日常处理的验证码数量高达300万次以上,验证码识别技术的研究有益于提高提高网络的安全性,帮助开发人员设计出更加人性化,更加安全的验证码,为人们提供一个良好的网络环境,不仅如此,验证码识别结合了图像处理、机器学习等多个领域的研究,对于促进各个领域的技术研究具有重要意义。
验证码起源于国外,验证码识别的研究也在国外成为了一个较为热门的领域,最先启用验证码的是Yahoo公司,2003年验证码的出现解决当时困扰Yahoo的垃圾邮件泛滥事件,2005年,Larson K等人研究得到计算机可以优先识别单个字符;2008年,Jeff Yan, Ahmad Salah El 通过研究验证码的特征,利用若干种字符分割技术来攻击包括微软、雅虎和谷歌设计的文本验证,成功率达到90%。SY Huang等人针对MSN和Yahoo验证码提出一种基于projection-based的分割算法,实验结果表明,该算法能够0.09到0.14的分割率。2009年AM Sapkal等人对验证码字符做分段处理后成功识别;2013 年,Gao 等人提出了一种破解空心验证码的通用方法,这是第一次使用一种统一的处理方式对一系列验证码机制进行破解。他们利用空心字符的特征来提取字符笔画块,然后尝试相邻笔画块的不同组合来构建单个字符。2015 ,Karthik 等人提出了两种自动识别微软单层验证码的方法。一种是基于模板匹配的方法,另一种是基于 CNN 的方法。Gao 的团队报告了一种简单通用的文本验证码破解方法,这种方法第一次利用 Gabor 滤波器提取字符四个方向上的笔画块。这种方法在多种文本验证码上都获得了很好的效果,包括字符分离验证码、空心验证码、字符粘连验证码,成功率从 5%到 77%不等。Le提出了一个将 CNN 与递归神经网络(Recurrent Neural Network,RNN)结合的模型来破解图片文本验证码。深度学习技术也逐渐成为验证码安全性分析的主要工具。{title}2. 研究的基本内容与方案
{title}基本目标:基于卷积神经网络设计出图片验证码识别方法,此方法能够较高效的识别字符相互堆叠、粘连等难以分割的图片验证码。
基本内容:卷积神经网络最大的特点是将图片做为整体进行特征识别,省略了传统方法中图片预处理的过程。它包含了多层隐藏层结构,由底向上逐层学习更高层次的语义特征。实现端到端的识别,避免流程过多导致的设计缺陷。通过基于卷积神经网络的方法将图片验证码的特征提取和识别结合在一起,通过综合评价和学习,自动提取局部特征(线段,边缘,断点,拐角)等等,并在不断的反向学习过程中选择、优化特征。通过局部感受野、共享权值和亚取样来保证图像对位移、缩放、扭曲的鲁棒性。从而达到准确识别验证码中的掺杂有各种干扰的字符特征。解决某些复杂场景下字符相互堆叠、缠绕,从而影响分割难度,使识别准确率低下的问题。
技术方案:系统采用基于LeNet-5改进的具有卷积结构的神经网络,程序拟采用Python语言编写,基于Google的开源机器学习框架Tensorflow。整个系统可由以下步骤进行:
1、利用标准第三方库生成验证码图片。
2、利用大量验证码图片训练卷积神经网络。
3、将图片分为两组,一组首先通过二值化、去噪等步骤进行预处理,另一组不进行预处理。然后用两组验证码图片对训练完成的网络进测试和识别3. 参考文献[1]张晓菲,邹婷,刘培鹤.基于字符型验证码破解算法研究[J].北京电子科技学院学报,2016,(4):50-4,77.
[2] 白培瑞,王金博,丁国梅.一种通用的基于图像分割的验证码识别方法[J].山东科技大学学报(自然科学版),2018.37(3):106-113
[3] 秦波,顾乃杰,张孝慈,等.基于卷积神经网路的图像验证码识别[J].计算机系统应用,2018,27(11):142-148