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深入学习之内存管理
Aug 31 Python
python使用mysql数据库示例代码
May 21 Python
Django的分页器实例(paginator)
Dec 01 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
Dec 25 Python
详谈python在windows中的文件路径问题
Apr 28 Python
对tf.reduce_sum tensorflow维度上的操作详解
Jul 26 Python
python中协程实现TCP连接的实例分析
Oct 14 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
python递归法实现简易连连看小游戏
Mar 25 Python
flask框架配置mysql数据库操作详解
Nov 29 Python
Python函数式编程实例详解
Jan 17 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 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 Socket技术
2013/08/02 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
Python中实现结构相似的函数调用方法
2015/03/10 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
ECCO爱步美国官网:来自丹麦的鞋履品牌
2016/11/23 全球购物
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
通用自荐信范文
2014/03/14 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
好听的队名和口号
2014/06/09 职场文书
大四毕业生自荐书
2014/07/05 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL