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基础教程之循环介绍
Aug 29 Python
总结Python编程中三条常用的技巧
May 11 Python
python实现外卖信息管理系统
Jan 11 Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
python 变量初始化空列表的例子
Nov 28 Python
python中pivot()函数基础知识点
Jan 03 Python
pytorch MSELoss计算平均的实现方法
May 12 Python
Python Pandas 删除列操作
Mar 16 Python
基于Python实现将列表数据生成折线图
Mar 23 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
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
2016/08/02 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Python实现Kmeans聚类算法
2020/06/10 Python
Django自带日志 settings.py文件配置方法
2019/08/30 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
浅谈Python中re.match()和re.search()的使用及区别
2020/04/14 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
入党自我评价范文
2014/02/02 职场文书
新年联欢会主持词
2014/03/27 职场文书
个人委托书范本
2014/09/13 职场文书
小学生成绩单评语
2014/12/31 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
入党介绍人考察意见
2015/06/01 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书