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 相关文章推荐
Tensorflow简单验证码识别应用
May 25 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 Python
PyCharm使用之配置SSH Interpreter的方法步骤
Dec 26 Python
python实现简单俄罗斯方块
Mar 13 Python
Python Django view 两种return的实现方式
Mar 16 Python
Python为何不支持switch语句原理详解
Oct 21 Python
基于Python爬取搜狐证券股票过程解析
Nov 18 Python
pytorch中的numel函数用法说明
May 13 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 Python
Python turtle实现贪吃蛇游戏
Jun 18 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
Python if语句知识点用法总结
2018/06/10 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
英国最大的奢侈珠宝和手表网站:C W Sellors
2017/02/10 全球购物
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
创建文明城市标语
2014/06/16 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
护士年终考核评语
2014/12/31 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
工会文体活动总结
2015/05/07 职场文书
大学生党课感想
2015/08/11 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书