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抛出异常、自定义异常, 传递异常
Jun 20 Python
谈谈如何手动释放Python的内存
Dec 17 Python
python Socket之客户端和服务端握手详解
Sep 18 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
python使用folium库绘制地图点击框
Sep 21 Python
Dlib+OpenCV深度学习人脸识别的方法示例
May 14 Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
Jan 21 Python
python 控制台单行刷新,多行刷新实例
Feb 19 Python
pytorch 查看cuda 版本方式
Jun 23 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
解决numpy和torch数据类型转化的问题
May 23 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开发负载均衡指南
2010/07/17 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
php对称加密算法示例
2014/05/07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
深入浅析python定时杀进程
2016/06/06 Python
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
python如何实现递归转非递归
2021/02/25 Python
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
应聘自荐书
2013/10/08 职场文书
建筑设计学生的自我评价
2014/01/16 职场文书
营销学习心得体会
2014/09/12 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
如何书写授权委托书?
2019/06/25 职场文书
python人工智能human learn绘图可创建机器学习模型
2021/11/23 Python