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中的数据存储到系统本地的简单方法
Apr 11 Python
python对数组进行反转的方法
May 20 Python
Python SqlAlchemy动态添加数据表字段实例解析
Feb 07 Python
python代码 输入数字使其反向输出的方法
Dec 22 Python
Gauss-Seidel迭代算法的Python实现详解
Jun 29 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
Python 获取指定文件夹下的目录和文件的实现
Aug 30 Python
python内置函数sorted()用法深入分析
Oct 08 Python
python区分不同数据类型的方法
Oct 14 Python
python 解决cv2绘制中文乱码问题
Dec 23 Python
Python实现钉钉/企业微信自动打卡的示例代码
Feb 02 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 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
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
JS继承 笔记
2011/07/13 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
浅谈Python的垃圾回收机制
2016/12/17 Python
python实现微信远程控制电脑
2018/02/22 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
python实现QQ批量登录功能
2019/06/19 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
金融专业应届生求职信
2013/11/02 职场文书
电子商务专业自我鉴定
2013/12/18 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
2015年信访工作总结
2015/04/07 职场文书
2016年学校“3.12”植树节活动总结
2016/03/16 职场文书
Python可视化学习之seaborn调色盘
2022/02/24 Python