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 cx_freeze打包工具处理问题思路及解决办法
Feb 13 Python
python操作redis方法总结
Jun 06 Python
Python实现Event回调机制的方法
Feb 13 Python
Python基础之条件控制操作示例【if语句】
Mar 23 Python
python Web flask 视图内容和模板实现代码
Aug 23 Python
基于python3监控服务器状态进行邮件报警
Oct 19 Python
Python生态圈图像格式转换问题(推荐)
Dec 02 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
Python学习之路安装pycharm的教程详解
Jun 17 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 Python
Python爬虫之Selenium警告框(弹窗)处理
Dec 04 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/21 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
测试php函数的方法
2013/11/13 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
js实现验证码功能
2020/07/24 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
Python中extend和append的区别讲解
2019/01/24 Python
python多线程http压力测试脚本
2019/06/25 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
社区庆中秋节活动方案
2014/02/07 职场文书
小学安全教育材料
2014/02/17 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
成事在人观后感
2015/06/16 职场文书
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL