1 / 0
文档名称:

鱼跃前滚翻.zip

格式:zip   大小:3,464KB   页数:0页

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

鱼跃前滚翻.zip

上传人:raojun00001 2017/10/23 文件大小:3.38 MB

下载得到文件列表

文档介绍

文档介绍:基于Python语言和支持向量机的字符验证码识别
摘要:验证码的主要目的是区分人类和计算机,用来防止自动化脚本程序对网站的一些恶意行为,目前绝大部分网站都利用验证码来阻止恶意脚本程序的入侵。本文以某高校教务系统的字符验证码作为研究对象,利用图像处理的方法,对验证码图像进行二值化、去离散噪声、字符分割、归一化、特征提取、训练和字符识别等过程实现了验证码识别,并使用Python语言实现。最后在分析识别结果的基础上,从验证码识别的角度提出生成更加安全验证码的一些建议。
关键词:支持向量机(SVM);验证码;Python语言
中图分类号:TP3 文献标识码:A 文章编号:1007-9416(2017)04-0072-03
1 引言
随着互联网的迅速发展和应用,网络为我们提供了越来越多的资源,也为我们的生活和工作提供了极大的便利,但同时也带来了大量的互联网安全问题,比如刷票、用户批量注册、密码暴力破解、社区恶意发帖等。

验证码(CAPTCHA)pletely Automated Public Turing test to puters and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写[1],是能够区分用户是人还是计算机的公共自动化程序,该程序提出的问题由计算机生成并评判,但必须只有人类才能回答。由于计算机无法解答验证码的问题,所以可以认为能够回答出问题的用户就是人类。目前大部分学校的教务系统都采用了字符图像验证码。
支持向量机(SVM)是在统计学习的 VC维理论和结构风险最小化(Structure Risk Minimization,SRM)原理基础上,发展起来的一种全新的机器学习算法[2]。该算法在解决小样本、非线性及高维模式识别中有许多特有的优势。支持向量机根据其求解问题的不同分为支持向量分类机和支持向量回归机两种类型。本文提出的验证码识别算法是基于C-SVC的支持向量分类机[3]。
但随着网络技术的发展,最初的字符图像验证码已经不能够完全保障网络的安全,为了评估这类验证码的安全性,需要从识别角度进行研究。因此,本文以某高校教务系统使用的验证码作为识别对象,提出一种基于
SVM的验证码识别算法,使用Python的图像处理库和SVM机器学习库来实现验证码识别程序,根据识别率来评估网站的安全性,从而提出一些改进意见。
2 验证码预处理
为了防止计算机自动化脚本的攻击,字符图像验证码往往由服务器产生随机字符序列后再加入一些干扰因素使计算机难以识别。本文将要识别的验证码示例如图1所示。
可以看到,该类验证码加入的干扰因素主要是点线干扰噪声,其加大了图像识别的难度。因此,在进行验证码识别前,需要对验证码图像进行预处理,步骤包括二值化、去除离散噪声、字符分割和尺寸归一化。
二值化
图像的二值化处理就是将图像上的点的像素值设置为0或255,使图像的集合性质只与像素值为0或255的点的位置有关。将图像中所有小于阀值的像素被判定为属于字符区域,其像素值设为0, 而大于或等于阀值的像素被排除在字符区域以外,像素值设为255。对图像验证码进行二值化处理的关键是阈值的选择与确定。二值化处理[4]选取阈值方法很多,经过实验比较,本文采用全局固定阈值法
[5]选取阈值,然后再对验证码图