位置: 编程技术 - 正文

Python网站验证码识别(python网页验证码)

编辑:rootadmin

推荐整理分享Python网站验证码识别(python网页验证码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:验证码python代码怎么写,python验证码生成库,python验证码校验程序,python验证码校验程序,python6位验证码,python自动登录网页验证码,验证码python代码怎么写,python网页验证码,内容如对您有帮助,希望把文章链接给更多的朋友!

0x 识别涉及技术

验证码识别涉及很多方面的内容。入手难度大,但是入手后,可拓展性又非常广泛,可玩性极强,成就感也很足。

验证码图像处理

验证码图像识别技术主要是操作图片内的像素点,通过对图片的像素点进行一系列的操作,最后输出验证码图像内的每个字符的文本矩阵。

读取图片图片降噪图片切割图像文本输出

验证字符识别

验证码内的字符识别主要以机器学习的分类算法来完成,目前我所利用的字符识别的算法为KNN(K邻近算法)和SVM (支持向量机算法),后面我 会对这两个算法的适用场景进行详细描述。

获取字符矩阵矩阵进入分类算法输出结果

涉及的Python库

这次研究主要使用了以下这三个库

numpy(数学处理库)Image(图像处理库)ImageEnhance(图像处理库)

验证码识别技术难点

验证码识别由两部分组成,分别是验证码图片处理和验证码字符学习。

在编码过程中,我认为难度最大的部分是识别算法的学习和使用。在写文档的时候,我认为难度最大的部分是图像处理部分,图像处理部分需要对抗各种干扰因素,对抗不同类型的验证码需要不同的算法支持,因此图像处理程序需要对各种验证码具体问题具体分析,不能抱有大而全的思想,务必注重细节处理。

0x 学习与识别

验证码识别的过程分为学习过程与识别过程

学习

识别

上图代码运用的是SVM的识别过程

0x 图像处理

验证码图像处理脑图

如上图所示,验证码图像处理模块是一个结构规整、内部分支复杂的模块,整个验证码识别准确率全靠这个模块,可谓是整个验证码识别的根本。如 上文所说,图像处理模块玩的是图片内的每一个像素百度百科:像素,因此这个模块好上手。

上面这两句便可以打开一个图像对象,im对象内置许多方法有兴趣可以查看Image库源码或者参考Python Imaging Library Handbook 图片增加对比度、锐化、调整亮度、二值化,这四块是比较规整的模块,处理调用库函数即可。下面主要说说图片降噪和清楚单像素干扰线。

图片清除噪点

图片降噪的原理是利用9宫格内信息点(信息像素,一般经过预处理的信息像素为黑色)。

上图黑色部分为(x,y),单像素噪点处理时分别验证周围的八个点是否为白色,如果为白色即可判断(x,y)为噪点。同理双像素噪点需要考虑两个像 素的排列是横向还是纵向或者是斜向,之后判断其周围个像素是否均为白色像素即可。同理三像素噪点也是这样,我尝试的情况三像素噪点不包括 横向排列和纵向排列。

图片清除干扰线

对于单像素的干扰线目前可以解决,但是大宽度干扰线则会产生判断上的误差,目前不好解决。

上图的干扰线为单像素,因此通过算法即可解决。

干扰线处理后的图片如上图所示。

Python网站验证码识别(python网页验证码)

图片切割

对于去噪后的图片,我们需要对图片进行切割,切割的目的是为了提取信息,方便把图片中的数字转化为形式的文本。 我所采用的切割方式是投影法.

如上图所示,对于切割数字3,首先需要找到垂线A和B,判断步骤是:纵向从左向右扫描图片,找到第一条含有信息点的直线记为A,继续向右扫描, 当从A开始,找到第一条无信息点的直线记为B,从投影的角度来看,A与B之间X轴上的投影的信息值均大于0,切割A与B之间的图像后,以新图像为 基础,找出C与D,至此便可切割出数字3。

图片切割目前可以仅可对非粘连字符进行切割,对于粘连字符,我的程序并没能很好的处理。

信息输出

当获取了切割好的图片,由于图片只有黑色与白色,因此遍历每一个像素点,根据像素点的颜色来进行0,1输出,一般认为黑色像素输出1,白色像素 输出0。

0x 识别算法概述

字符识别算法整体流程很好理解,举个例子,字符像素文本A进入识别算法,通过对算法的结果进行判断,便可以完成识别过程。我实践了两种识别算 法,第一种是KNN算法,第二种是SVM算法,下面我将以个人的角度来阐述下这两种算法的原理以及适用场景,个人水平有限,算法细节可以参考我 之后给出的链接。

KNN(K邻近算法)

KNN算法是一种简单的算法,KNN算法基本思想是把数据转化为点,通过计算两点之间的距离来进行判断。 在n维度下,两点间距离可以表示为 S = math.sqrt((x1-y1)^2+(x2-y2)^2+.+(xn-yn)^2)。

SVM(支持向量机)

SVM算法相比较KNN算法来说,原理上要复杂复杂的多,SVM算法基本思想是把数据转化为点,通过把点映射到n维空间上,通过n-1维的超平面 切割,找到最佳切割超平面,通过判断点在超平面的哪一边,来判断点属于哪一类字符。

但是SVM算法的特点只能在两类中间比较,因此把字符识别运用到该算法上,还需要在比较过程中加以一个遍历算法,遍历算法可以减少大量无效计 算,遍历的场景是一个有向无环图。

算法细节文档链接

jerrylead 的blog : Machine Learning支持向量机通俗导论(理解SVM的三层境界)

0x 识别算法适用场景

&#;KNN与SVM的适用场景存在一定区别。

KNN算法在运行过程上来说,并不存在学习过程,只是遍历已知分类进行距离上的判断,根据待测数据与已知分类进行比较,找出与待测距离最近的n个数据来进行匹配,因此当已分类的样本越来越多,KNN算法的运算时间会越来越长。

SVM算法在运行过程中,是存在学习的过程的,通过对已知分类标签进行两两组合,找出每个组合的切割方程。待测数据只需要一个一个计算切割方程,根据切割方程的返回值来判断下一个执行的是哪个方程即可。0-9数字的判断,只需要执行9次方程计算即可。SVM多类分类方法

因此如果大规模识别验证码,我建议适用SVM作为识别算法。

0x 实践细节注意事项

这部分内容是我所遇到的问题。

规则化图像

当切割的验证码以数字呈现在文本里,他们的像素是各不相同的,需要把这些标准化,我选择标准化在*像素是一个经验值。此外,还需要把新图 像放置在标准化像素的正中央。

使用SVM构建超平面方程

SVM算法的重点是寻找切割方程,首先需要把待判断的两种元素存入到dataArr和labelArr中,通smoP方程寻找b和alphas。

利用方程组预测——遍历dag图

由于svm是二分类器,只能判断是或者不是,只需要使用k一1个决策函数即可得出结果,不存在误分、拒分区域;另外,由于其特殊的结构,故有一定的容错性,分类精度较一般的二叉树方法高。

对于 共个字符 共有种非重复组合。利用dag只需判断9次即可找出目标。

0x 实践总结

运用机器学习算法时,如果不理解实现原理,先直接套接口,总之先实现功能,不必强求对算法的彻底理解。 2. 识别算法是通用的。

处理不同验证码,应该有不同的处理策略。

测试发现,主要耗时发生在构建方程过程中,构建方程耗时s,识别1s。

图像去噪时对于大宽度的干扰线没有好的解决办法(干扰线宽度大于3像素)。 6. 图像切割在面临图像粘连时,目前无很好的处理方法。

详解Python验证码识别 以前写过一个刷校内网的人气的工具,Java的(以后再也不行Java程序了),里面用到了验证码识别,那段代码不是我自己写的:-)校内的验证是完全单色没有

Python开发如何在ubuntu . 上配置vim 1,安装vim,你可以使用ubuntu自带的apt-get工具安装。apt-getinstallvim-gnome2,安装成功后,进行配置1首先进行自动提示补全的配置(pydiction)从官方上下载http:/

Python编程中对文件和存储器的读写示例 1.文件的写入和读取#!/usr/bin/python#-*-coding:utf-8-*-#Filename:using_file.py#文件是创建和读取s='''''我们都是木头人,不许说话不许动!'''#创建一个文件,并且写

标签: python网页验证码

本文链接地址:https://www.jiuchutong.com/biancheng/381307.html 转载请保留说明!

上一篇:谈谈Python进行验证码识别的一些想法(python验证整数)

下一篇:详解Python验证码识别(python中验证码校验)

  • 年报补交企业所得税如何写会计分录
  • 自己的医院
  • 消费税在哪个环节可以抵扣
  • 收到货款发货了没开发票怎么入账
  • 存款利息收入增值税是免税还是不征税
  • 出纳可以编制工资单吗
  • 月末结存材料的实际成本怎么计算
  • 企业公益性捐赠支出税前扣除标准
  • 发票抬头不完整能用吗
  • 长期借款工程完工时会计处理怎么做?
  • 营改增后接受实物投资是否需要缴纳增值税?
  • 非经营活动界定,主要说明哪些情形不交增值税
  • 员工报销油费计入个税吗
  • 电费发票可以抵扣进项吗
  • 印花税一定要贴花吗
  • 进项发票已经抵扣怎么做退回处理
  • 营改增后转让土地使用权怎么计算增值税
  • 小规模纳税人 行业
  • 作废章盖在哪个位置
  • 利息收入记账凭证格式范本
  • 购货方跨月销项负数发票如何做账?
  • 资产总额和净资本的关系
  • 电脑开wifi给手机用好吗
  • php如何实现多进程
  • 个人出差借款会计分录
  • 股东车辆保险费会计分录
  • 公司过户费用怎么入账
  • 半成品月末账务处理
  • 百香果的副作用及禁忌是哪些
  • wordpress更改字体
  • phpipam使用
  • 什么食物含胆固醇高不能吃
  • 旅游企业会计ppt
  • 提高支票处理效率的有效方法是
  • nrm报错
  • CodeIgniter扩展核心类实例详解
  • 偷税行为五年后被发现要接受行政处罚吗?
  • 确保政府采购
  • 空调年折旧率
  • ai与自动化有什么区别
  • vue前端面试官常问的问题
  • 进项税额计入其他流动资产
  • 失业保险金支出项目14项
  • 合伙企业与公司一样具有高度的人合性
  • 小规模纳税人怎么核定税种
  • 基本运算符号有乘方吗
  • 企业开办期间费用需要开发票吗
  • 其他应收款利息按什么计算
  • SQL Server Native Client下载 SQL Server Native Client安装方法
  • 成本核算分摊方法总结
  • 以前年度损益调整怎么做账
  • 职工报销费用
  • 一般纳税人如何申报增值税
  • 出口抵减内销产品应纳税额分录
  • 股东追加投资怎么算
  • 直接私募如何纳税
  • 合同权利义务包含债务吗
  • 主营业务收入转入什么科目
  • 工程结算科目是一级科目吗?
  • 记账凭证制作流程
  • 深入理解中国式现代化论文
  • sql怎么遍历
  • win8不识别u盘
  • 电脑开机一直显示windowsxp
  • windows7调制解调器在在哪里打开
  • pc是什么软件
  • fragment懒加载原理
  • python,数组
  • 设计师的悲哀
  • shell脚本中判断字符串是否相等
  • jquery登录注册源代码
  • javascript例题
  • javascript中继承
  • android图片压缩到200-300kb
  • 快速排序的算法流程图
  • flask框架下使用scrapy框架
  • 第三届一带一国际高峰论坛
  • 香港企业查询系统
  • 无房怎么办
  • 企业所得税账务如何处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设