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

作者:antchow- 时间:2022-10-22 23:09:54 

本文实例讲述了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程序设计有所帮助。

来源:https://blog.csdn.net/ztzy520/article/details/54576705

标签:Python,PIL,tesseract,验证码识别
0
投稿

猜你喜欢

  • Mysql按条件计数多种实现方法详解

    2024-01-18 09:43:35
  • Web2.0时代的网页视觉设计

    2008-07-13 14:07:00
  • pandas dataframe添加表格框线输出的方法

    2021-11-28 01:34:41
  • mac系统OS X10.10版本安装最新5.7.9mysql的方法

    2024-01-14 10:05:38
  • Python自制一个PDF转PNG图片小工具

    2023-07-24 11:40:12
  • python中有帮助函数吗

    2021-06-15 15:50:02
  • MySQL 实例无法启动的问题分析及解决

    2024-01-21 10:50:06
  • 解决Pycharm 导入其他文件夹源码的2种方法

    2023-03-02 08:32:54
  • Python爬虫文件下载图文教程

    2023-11-18 23:59:03
  • Ubuntu16.04 server下配置MySQL,并开启远程连接的方法

    2024-01-17 08:59:10
  • 布局篇(1)—If you love css …

    2008-04-16 14:14:00
  • python3使用QQ邮箱发送邮件

    2023-09-05 05:16:15
  • win10下python2和python3共存问题解决方法

    2022-11-05 09:08:38
  • Python Scrapy多页数据爬取实现过程解析

    2021-02-28 08:14:01
  • pytorch实践线性模型3d详解

    2023-04-01 22:58:29
  • 在win64上使用bypy进行百度网盘文件上传功能

    2023-07-04 04:59:18
  • 在Python中操作字典之update()方法的使用

    2023-01-16 09:55:53
  • Python函数参数类型*、**的区别

    2022-03-01 18:09:54
  • python实现网页录音效果

    2022-03-19 08:07:15
  • selenium2.0中常用的python函数汇总

    2023-04-05 13:15:11
  • asp之家 网络编程 m.aspxhome.com