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实现将Excel转换为json的方法示例
Aug 05 Python
一条命令解决mac版本python IDLE不能输入中文问题
May 15 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
python循环输出三角形图案的例子
Nov 22 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
django orm模块中的 is_delete用法
May 20 Python
django使用channels实现通信的示例
Oct 19 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
python分布式爬虫中消息队列知识点详解
Nov 26 Python
python UDF 实现对csv批量md5加密操作
Jan 01 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 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
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
php cli 方式 在crotab中运行解决
2010/02/08 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
jQuery Ajax使用 全解析
2010/12/15 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
招聘与培训专员岗位职责
2014/01/30 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
职称评定自我鉴定
2014/03/18 职场文书
少儿节目主持串词
2014/04/02 职场文书
班主任新年寄语
2014/04/04 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
《称赞》教学反思
2016/02/17 职场文书
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js