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中二维阵列的变换实例
Oct 09 Python
python使用urlparse分析网址中域名的方法
Apr 15 Python
Python实现采用进度条实时显示处理进度的方法
Dec 19 Python
Python实现PS滤镜的万花筒效果示例
Jan 23 Python
python删除服务器文件代码示例
Feb 09 Python
不到20行代码用Python做一个智能聊天机器人
Apr 19 Python
python中 * 的用法详解
Jul 10 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
Dec 12 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
Jul 01 Python
Python实现壁纸下载与轮换
Oct 19 Python
python 自动化偷懒的四个实用操作
Apr 11 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
咖啡的植物学知识
2021/03/03 咖啡文化
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
PHP类的封装与继承详解
2015/09/29 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
php解决安全问题的方法实例
2019/09/19 PHP
js静态作用域的功能。
2006/12/25 Javascript
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
python 从远程服务器下载日志文件的程序
2013/02/10 Python
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
python版简单工厂模式
2017/10/16 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
25道Java面试题集合
2013/05/21 面试题
车间班组长的职责
2013/12/13 职场文书
代办委托书怎样写
2014/04/08 职场文书
委托书范本
2014/09/13 职场文书
药店收银员岗位职责
2015/04/07 职场文书
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript