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 web程序
Sep 11 Python
Python StringIO模块实现在内存缓冲区中读写数据
Apr 08 Python
Python字符串和文件操作常用函数分析
Apr 08 Python
python实现简单点对点(p2p)聊天
Sep 13 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
Python3 tkinter 实现文件读取及保存功能
Sep 12 Python
记一次django内存异常排查及解决方法
Aug 07 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
Aug 07 Python
Python+Opencv身份证号码区域提取及识别实现
Aug 25 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 Python
基于Python爬取股票数据过程详解
Oct 21 Python
python 遍历磁盘目录的三种方法
Apr 02 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面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
2015/12/10 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
使用JS动态显示文本
2017/09/09 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
vue实现购物车小案例
2019/09/27 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
执行Python程序时模块报错问题
2020/03/26 Python
从python读取sql的实例方法
2020/07/21 Python
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
上海方立数码笔试题
2013/10/18 面试题
工程造价专业大专生求职信
2013/10/06 职场文书
临床医学专业毕业生的自我评价
2013/10/17 职场文书
美工的岗位职责
2013/11/14 职场文书
好矿嫂事迹材料
2014/01/21 职场文书
社团个人总结范文
2015/03/05 职场文书
董事会决议范本
2015/07/01 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
pytorch 如何使用float64训练
2021/05/24 Python