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文件操作类操作实例详解
Jul 11 Python
kNN算法python实现和简单数字识别的方法
Nov 18 Python
部署Python的框架下的web app的详细教程
Apr 30 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
详解python如何在django中为用户模型添加自定义权限
Oct 15 Python
Python操作json的方法实例分析
Dec 06 Python
Python应用领域和就业形势分析总结
May 14 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
Python利用Xpath选择器爬取京东网商品信息
Jun 01 Python
Python调用REST API接口的几种方式汇总
Oct 19 Python
opencv python 对指针仪表读数识别的两种方式
Jan 14 Python
python ConfigParser库的使用及遇到的坑
Feb 12 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
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
layui实现三级联动效果
2019/07/26 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
2019/11/10 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
Python 字典dict使用介绍
2014/11/30 Python
Python unittest单元测试框架总结
2018/09/08 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
Python request操作步骤及代码实例
2020/04/13 Python
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
南京某软件公司的.net面试题
2015/11/30 面试题
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
MySQL数据库之内置函数和自定义函数 function
2022/06/16 MySQL