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中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 Python
python实现随机梯度下降(SGD)
Mar 24 Python
python复制文件到指定目录的实例
Apr 27 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
Sep 24 Python
python实现的登录与提交表单数据功能示例
Sep 25 Python
pytorch中nn.Conv1d的用法详解
Dec 31 Python
Python文件操作基础流程解析
Mar 19 Python
python轮询机制控制led实例
May 03 Python
关于keras中keras.layers.merge的用法说明
May 23 Python
简述python&pytorch 随机种子的实现
Oct 07 Python
Python实现的扫码工具居然这么好用!
Jun 07 Python
解决IDEA翻译插件Translation报错更新TTK失败不能使用
Apr 24 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
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
python实现代理服务功能实例
2013/11/15 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
详解numpy的argmax的具体使用
2019/05/27 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
安全生产责任书
2014/03/12 职场文书
简历中个人自我评价分享
2014/03/15 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
企业党员一句话承诺
2014/05/30 职场文书
汉语言文学专业求职信
2014/06/19 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
python lambda 表达式形式分析
2022/04/03 Python