python验证码识别的实例详解


Posted in Python onSeptember 09, 2016

其实关于验证码识别涉及很多方面的内容,入手难度大,但是入手后,可拓展性又非常广泛,可玩性极强,成就感也很足,对这感兴趣的朋友们下面跟着小编一起来学习学习吧。

依赖

sudo apt-get install python-imaging
sudo apt-get install tesseract-ocr
pip install pytesseract

利用google ocr来识别验证码

from PIL import Image
import pytesseract
image = Image.open('v1.jpg')
vcode = pytesseract.image_to_string(image)
print vcode

但是pytesseract本身识别率不高,而且一般网站的验证码都带有大量干扰元素。( ̄? ̄)"

所以我们首先要对验证码进行去噪。

对于单像素干扰线、干扰点我们可以通过扫描整个图像,考察每一个像素点所临近的八个像素点的颜色,如果不同的个数大于一定的值,那就说明该点是离散点,需要去除。

另外也可以尝试设定阈值来直接将验证码二值化。

下面是两张学校网站上的验证码

python验证码识别的实例详解

python验证码识别的实例详解

我们可以看到验证码存在单像素干扰点,所以我们需要设法去除。但是经过反复刷新验证码,发现这个验证码

     1. 只有加法运算

     2.至多两位数的加法

     3.文字部分一定是红色(255,0,0)

有了上述的信息,可以判断这个验证码的生成算法是有缺陷的

import Image 
from numpy import * 
import pytesseract 
im = Image.open('1.png') 
im = im.convert('RGB') 
#拉长图像,方便识别。
im = im.resize((200,80)) 
a = array(im) 
for i in xrange(len(a)): 
for j in xrange(len(a[i])): 
  if a[i][j][0] == 255: 
    a[i][j]=[0,0,0] 
  else: 
    a[i][j]=[255,255,255] 
im = Image.fromarray(a) 
im.show() 
vcode = pytesseract.image_to_string(im) 
print vcode

利用上述脚本我们可以将图像进行二值化,利用google ocr进行识别。再通过eval()来对表达式进行求值。

总结

python验证码识别的内容到这就基本介绍了,希望这篇文章对大家的学习或者工作能有所帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
python使用datetime模块计算各种时间间隔的方法
Mar 24 Python
python使用webbrowser浏览指定url的方法
Apr 04 Python
Python字符串、元组、列表、字典互相转换的方法
Jan 23 Python
Python正规则表达式学习指南
Aug 02 Python
Python3处理HTTP请求的实例
May 10 Python
PyCharm鼠标右键不显示Run unittest的解决方法
Nov 30 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
Django 解决新建表删除后无法重新创建等问题
May 21 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
Jun 02 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
Python采集股票数据并制作可视化柱状图
Apr 04 Python
Python随机数random模块使用指南
Sep 09 #Python
利用ctypes提高Python的执行速度
Sep 09 #Python
python实现批量监控网站
Sep 09 #Python
利用python批量检查网站的可用性
Sep 09 #Python
Python如何判断数独是否合法
Sep 08 #Python
python框架django基础指南
Sep 08 #Python
python中星号变量的几种特殊用法
Sep 07 #Python
You might like
PHP多线程类及用法实例
2014/12/03 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
yii2.0框架场景的简单使用示例
2020/01/25 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
jquery animate 动画效果使用说明
2009/11/04 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
pyramid配置session的方法教程
2013/11/27 Python
详解Python中的strftime()方法的使用
2015/05/22 Python
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
Pycharm中如何关掉python console
2020/10/27 Python
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
Ellos瑞典官网:北欧地区时尚、美容和住宅领域领先的电子商务网站
2019/11/21 全球购物
商场中秋节广播稿
2014/01/17 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
公司授权委托书范文
2014/09/21 职场文书
流动人口婚育证明
2014/10/19 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python