Python验证码识别处理实例


Posted in Python onDecember 28, 2015

一、准备工作与代码实例
(1)安装PIL:下载后是一个exe,直接双击安装,它会自动安装到C:\Python27\Lib\site-packages中去,
(2)pytesser:下载解压后直接放C:\Python27\Lib\site-packages(根据你安装的Python路径而不同),同时,新建一个pytheeer.pth,内容就写pytesser,注意这里的内容一定要和pytesser这个文件夹同名,意思就是pytesser文件夹,pytesser.pth,及内容都要一样!
(3)Tesseract OCR engine下载:下载后解压,tessdata文件夹,用其替换掉pytesser解压后的tessdata文件夹即可。

二、验证
(1)原理:
验证码图像处理

验证码图像识别技术主要是操作图片内的像素点,通过对图片的像素点进行一系列的操作,最后输出验证码图像内的每个字符的文本矩阵。

  • 1、读取图片
  • 2、图片降噪
  • 3、图片切割
  • 4、图像文本输出

(2)验证字符识别

验证码内的字符识别主要以机器学习的分类算法来完成,目前我所利用的字符识别的算法为KNN(K邻近算法)和SVM (支持向量机算法),后面我 会对这两个算法的适用场景进行详细描述。

  • 1、获取字符矩阵
  • 2、矩阵进入分类算法
  • 3、输出结果

要验证的图片如下:

Python验证码识别处理实例

(3)、简单的命令:

from pytesser import * 
image = Image.open('1.jpg') # Open image object using PIL 
print image_to_string(image)  # Run tesseract.exe on image

然后运行:

Python验证码识别处理实例

或者直接:

print image_file_to_string('fnord.tif')

同样能输出结果!
(4)、复杂一点的
上面的只能对一些比较简单的做处理,一
原理:彩色转灰度,灰度转二值,二值图像识别

# 验证码识别,此程序只能识别数据验证码 
import Image 
import ImageEnhance 
import ImageFilter 
import sys 
from pytesser import * 
# 二值化 
threshold = 140 
table = [] 
for i in range(256): 
 if i < threshold: 
  table.append(0) 
 else: 
  table.append(1) 
 
#由于都是数字 
#对于识别成字母的 采用该表进行修正 
rep={'O':'0', 
 'I':'1','L':'1', 
 'Z':'2', 
 'S':'8' 
 }; 
 
def getverify1(name):   
 #打开图片 
 im = Image.open(name) 
 #转化到灰度图 
 imgry = im.convert('L') 
 #保存图像 
 imgry.save('g'+name) 
 #二值化,采用阈值分割法,threshold为分割点 
 out = imgry.point(table,'1') 
 out.save('b'+name) 
 #识别 
 text = image_to_string(out) 
 #识别对吗 
 text = text.strip() 
 text = text.upper();  
 for r in rep: 
  text = text.replace(r,rep[r])  
 #out.save(text+'.jpg') 
 print text 
 return text 
getverify1('1.jpg') #注意这里的图片要和此文件在同一个目录,要不就传绝对路径也行

运行后效果:

Python验证码识别处理实例

以上就是本文的全部内容,希望对大家的学习有所帮助。

Python 相关文章推荐
Python访问MySQL封装的常用类实例
Nov 11 Python
python分析nignx访问日志脚本分享
Feb 26 Python
python删除过期文件的方法
May 29 Python
python urllib爬取百度云连接的实例代码
Jun 19 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
Python queue队列原理与应用案例分析
Sep 27 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
Python的PIL库中getpixel方法的使用
Apr 09 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
python re模块和正则表达式
Mar 24 Python
Django中的JWT身份验证的实现
May 07 Python
python多次执行绘制条形图
Apr 20 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 #Python
Windows系统下使用flup搭建Nginx和Python环境的方法
Dec 25 #Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 #Python
Linux系统上Nginx+Python的web.py与Django框架环境
Dec 25 #Python
Linux下将Python的Django项目部署到Apache服务器
Dec 24 #Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 #Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 #Python
You might like
深入php 正则表达式的学习探讨
2013/06/06 PHP
PHP正则表达式入门教程(推荐)
2016/05/18 PHP
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
2017/02/28 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
AngularJS表单验证功能分析
2017/05/26 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
使用Python构建Hopfield网络的教程
2015/04/14 Python
Python数据类型之Number数字操作实例详解
2019/05/08 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
使用Tkinter制作信息提示框
2020/02/18 Python
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
西式结婚主持词
2014/03/14 职场文书
小学生环保演讲稿
2014/04/25 职场文书
小学节能减排倡议书
2014/05/15 职场文书
校运动会广播稿300字
2014/10/07 职场文书
2014年村委会工作总结
2014/11/24 职场文书
音乐会主持人开场白
2015/05/28 职场文书
python自动化测试通过日志3分钟定位bug
2021/11/20 Python
Python时间操作之pytz模块使用详解
2022/06/14 Python