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实现批量改文件名称的方法
May 25 Python
简要讲解Python编程中线程的创建与锁的使用
Feb 28 Python
python实现解数独程序代码
Apr 12 Python
Python入门_浅谈for循环、while循环
May 16 Python
python 实现一个贴吧图片爬虫的示例
Oct 12 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 Python
详解python selenium 爬取网易云音乐歌单名
Mar 28 Python
python实现批量nii文件转换为png图像
Jul 18 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
Python Django view 两种return的实现方式
Mar 16 Python
Python logging模块进行封装实现原理解析
Aug 07 Python
python周期任务调度工具Schedule使用详解
Nov 23 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 iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
php 问卷调查结果统计
2015/10/08 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
jQuery中:contains选择器用法实例
2014/12/30 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
js获取url传值的方法
2015/12/18 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
Python程序设计入门(3)数组的使用
2014/06/16 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
说出数据连接池的工作机制是什么?
2013/04/19 面试题
最新英语专业学生求职信范文
2013/09/21 职场文书
中学老师的自我评价
2013/11/07 职场文书
质检员岗位职责
2013/12/17 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
《四季》教学反思
2014/04/08 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python