你们会因为系统登录的时候输入验证码经常错误而烦恼吗?你还会因为看不清楚系统登录的验证码而一直刷新吗?好了,我又来给大家解决难题了,我这一招识别登录验证码的方法简直让你屡试不爽。
今天我给大家介绍的是如何使用Python来识别验证码。
一,验证码属性
对于验证码,我们的印象中80%的都是由数字和字母组成,我分享给大家的方法主要针对的也是数字和字母组合而成的验证码识别。
二,Python类库和训练集合
pillw (验证码识别的关键类库,主要作用在图片处理方面)
os (获取资源路径)
math (使用math.sprt()计算目标数字的平方根)
训练集合(0-1和a-z的数字和字母组合的集合)
对于程序员中使用的训练集合提取连接如下如下:
三,导入类库
四,提取图片中验证码
结果如下:
五,提取验证码中的单个字符的像素
对新的目标图片,new.gif进行分割并识别出每一个字符的像素点保存在一个集合里面。
结果如下:
六,提取的单个字符再分割成并保存为新图片
结果如下:
七,引用矢量值对比方法
在这里我们使用向量空间搜索引擎来做字符识别,它具有很多优点:
1,不需要大量的训练迭代
2,不会训练过度
3,你可以随时加入/移除错误的数据查看效果
4,很容易理解和编写成代码
5,提供分级结果,你可以查看最接近的多个匹配
6,对于无法识别的东西只要加入到搜索引擎中,马上就能识别了。
向量空间搜索引擎名字听上去很高大上其实原理很简单,
拿文章里的例子来说:
你有3篇文档,我们要怎么计算它们之间的相似度呢?
2篇文档所使用的相同的单词越多,那这两篇文章就越相似!
但是这单词太多怎么办,就由我们来选择几个关键单词,
选择的单词又被称作特征,
每一个特征就好比空间中的一个维度(x,y,z等),
一组特征就是一个矢量,
每一个文档我们都能得到这么一个矢量,
只要计算矢量之间的夹角就能得到文章的相似度了。
具体操作如下:
八,将提取的验证码图片转换成矢量值
九,训练集和目标验证码实际对比得出结果
结果如下:
简单吧,三下五除二就搞定了验证码的识别,以后登录系统是不是再也
不需要输入验证码了。
领取专属 10元无门槛券
私享最新 技术干货