Python实现基于PIL和tesseract的验证码识别功能示例


Posted in Python onJuly 11, 2018

本文实例讲述了Python实现基于PIL和tesseract的验证码识别功能。分享给大家供大家参考,具体如下:

之前搞这个搞了一段时间,后面遇到了点小麻烦,导致识别率太低了,最多也就百分之20的样子。心灰意冷,弃了一段时间。上次在论坛看到一篇大牛的关于PIL对图片各种处理各种算法的博突然又想起了这个,又随便搞了下,大大提高了识别率啊。先给代码:

原图:

Python实现基于PIL和tesseract的验证码识别功能示例

im = Image.open("C:\Users\Administrator\Desktop\python\\3.png")
#调色
enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(2)
#把图片调成只有黑白两个颜色,处理后每个像素色用8位表示
im = im.convert('1')
im.show() #测试查看

经过上面处理后:

Python实现基于PIL和tesseract的验证码识别功能示例

现在到了关键的一步,这图上好多好多小黑点,要一个一个全部去除我估计我代码写到吐血都写不出来。但是要去除一部分还是可以的。

xsize, ysize = im.size #长、宽
#对照片里的所有像素点:如果像素色不是白色并且右边的一个像素点像素色是白色(RGB(255,255,255))或者像素色不是白色并且下方的一个像素点是白色的,统一变成白色
for i in range(ysize-1):
  for j in range(xsize-1):
    if (im.getpixel((j, i)) !=255&im.getpixel((j+1,i))==255):
      im.putpixel((j,i),255);
    if(im.getpixel((j,i)) != 255&im.getpixel((j,i+1))==255):
      im.putpixel((j, i), 255);
im.show(); #再看看效果

处理完之后:

Python实现基于PIL和tesseract的验证码识别功能示例

之前那些黑色的小点点已经去的差不多了,但是这样也是有代价的啊- - 把图片里面的字的一些像素色也去掉了一些,现在拿这张图片去用tesseract识别的话其实对于tesseract来说跟之前那张没有去小黑点的图片识别难度差不了多少,然后后面又想了个办法补救了一下:

#把上面我们变成白色的小黑点给他补一点回来- -
for i in range(ysize - 1):
  for j in range(xsize - 1):
    if (im.getpixel((j, i))!=255&im.getpixel((j+1,i)) !=255):
      im.putpixel((j, i), 0);
    if (im.getpixel((j, i))!=255&im.getpixel((j,i+1)) !=255):
      im.putpixel((j, i), 0);
im.show(); #再看看效果

处理完之后:

Python实现基于PIL和tesseract的验证码识别功能示例

比上面的图清晰了蛮多。这个时候再去对照下刚开始的那种图的话,对识别程序来说清楚了不止是一点点啊。

不过尽管如此,识别率还是不怎么样,我估计也就百分之50左右的识别率,还是太低了,可能是因为我去掉了一些关键的像素点的色,因为我也不知道tesseract具体的对比库是怎么样的,所以估计我又要弃了。有想过再继续对图片切割旋转,甚至还想过找人工智能的朋友给我拿去训练训练,不过那样还是偏离我本意了,而且我也不是很喜欢搞学术的东西。不管怎么样我这个感觉还是有点用的,说不定拿去做一下切割识别率大大提高也是有可能的。

最后如果有大牛偶然看到我这篇博的话还望不吝赐教。

更多关于Python相关内容可查看本站专题:《Python数学运算技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python使用正则匹配实现抓图代码分享
Apr 02 Python
python获取指定目录下所有文件名列表的方法
May 20 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
Jun 29 Python
Python 通过pip安装Django详细介绍
Apr 28 Python
Tensorflow 合并通道及加载子模型的方法
Jul 26 Python
Python生成器generator用法示例
Aug 10 Python
python各类经纬度转换的实例代码
Aug 08 Python
Python容器使用的5个技巧和2个误区总结
Sep 26 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
python基本算法之实现归并排序(Merge sort)
Sep 01 Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 Python
利用Python如何制作好玩的GIF动图详解
Jul 11 #Python
用pandas中的DataFrame时选取行或列的方法
Jul 11 #Python
Python2实现的图片文本识别功能详解
Jul 11 #Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 #Python
基于数据归一化以及Python实现方式
Jul 11 #Python
numpy.std() 计算矩阵标准差的方法
Jul 11 #Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
Jul 11 #Python
You might like
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
PHP中的cookie不用刷新就生效的方法
2012/02/04 PHP
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
php实现分页工具类分享
2014/01/09 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
$()JS小技巧
2007/07/21 Javascript
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
2014/01/07 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
Django实现图片文字同时提交的方法
2015/05/26 Python
Python中创建字典的几种方法总结(推荐)
2017/04/27 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
2019年Java 最常见的 面试题
2016/10/19 面试题
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
初中体育教学反思
2014/01/14 职场文书
研究生毕业鉴定
2014/01/29 职场文书
四群教育工作实施方案
2014/03/26 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python