gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python实现基于PIL和tesseract的验证码识别功能示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

原图:

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

?
1
2
3
4
5
6
7
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的验证码识别功能示例

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

?
1
2
3
4
5
6
7
8
9
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来说跟之前那张没有去小黑点的图片识别难度差不了多少,然后后面又想了个办法补救了一下:

?
1
2
3
4
5
6
7
8
#把上面我们变成白色的小黑点给他补一点回来- -
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的验证码识别功能示例的文章就讲到这里了,如果你想了解更多关于Python实现基于PIL和tesseract的验证码识别功能示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com