Python爬虫识别验证码

安装tesserocr

pip3 install tesserocr pillow

识别测试

将验证码图片放到项目根目录下,用tesserocr库识别该验证码,代码如下所示:

import locale

locale.setlocale(locale.LC_ALL, 'C')

import tesserocr

from PIL import Image

image = Image.open('code.jpg')

result = tesserocr.image_to_text(image)

print(result)

0

1

2

3

4

5

6

7

importlocale

locale.setlocale(locale.LC_ALL,'C')

importtesserocr

fromPILimportImage

image=Image.open('code.jpg')

result=tesserocr.image_to_text(image)

print(result)

新建了一个Image对象,调用了tesserocr的image_to_text( )方法。传入该Image对象即可完成识别,实现过程非常简单,结果如下:

识别的结果和实际结果有偏差,这是因为验证码内的多余线条干扰了图片的识别。

另外,tesserocr还有一个更加简单的方法,这个方法可以直接将图片文件转为字符串,代码如下:

import locale

locale.setlocale(locale.LC_ALL, 'C')

import tesserocr

from PIL import Image

print(tesserocr.image_to_text('code.jpg'))

0

1

2

3

4

5

importlocale

locale.setlocale(locale.LC_ALL,'C')

importtesserocr

fromPILimportImage

print(tesserocr.image_to_text('code.jpg'))

不过这种方法的识别效果不如上一种的好。

对于上面的图片,我们可以看到其实并没有完全识别正确,所以我们需要对图像作进一步的处理,如灰度转换、二值化等操作。

我们可以利用Image对象的convert( )方法参数传入L,即可将图片转化为灰度图像,代码如下:

image = Image.convert('L')

image.show()

0

1

image=Image.convert('L')

image.show()

传入1即可将图片进行二值化处理,如下所示:

image = Image.convert('1')

image.show()

0

1

image=Image.convert('1')

image.show()

我们还可以指定二值化的阈值。上面的方法采用的是默认阈值127。不过我们不能直接转化原图,要将原图先转化为灰度图像,然后再指定二值化阈值,代码如下:

import locale

locale.setlocale(locale.LC_ALL, 'C')

import tesserocr

from PIL import Image

image = Image.open('code.jpg')

image = image.convert('L')

threshold = 160

table = []

for i in range(256):

if i < threshold:

table.append(0)

else:

table.append(1)

image = image.point(table, '1')

image.show()

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

importlocale

locale.setlocale(locale.LC_ALL,'C')

importtesserocr

fromPILimportImage

image=Image.open('code.jpg')

image=image.convert('L')

threshold=160

table=[]

foriinrange(256):

ifi

table.append(0)

else:

table.append(1)

image=image.point(table,'1')

image.show()

在这里,变量threshold代表二值化阈值,阈值设置为160,之后我们来看看我们的结果:

我们可以看到现在的二维码就比较方便我们进行识别了;那么对于一些有干扰的图片,我们做一些灰度和二值化处理,这会提高图片识别的正确率。

python爬虫验证码的识别_Python爬虫识别验证码相关推荐

  1. python实现验证码识别_python实现图文验证码识别

    一,验证码类别 以下为网站常见的验证码: 1.图片验证码:常见的为英文.数字.汉字,计算题等类型的验证码. 2.行为式验证码: 常见的有滑动拼图,文字点选,图标点选,推理拼图等类型的验证码. 3.手机 ...

  2. python爬虫基础项目教程_Python爬虫开发与项目实战_Python教程

    资源名称:Python爬虫开发与项目实战 内容简介: 随着大数据时代到来,网络信息量也变得更多更大,基于传统搜索引擎的局限性,网络爬虫应运而生,本书从基本的爬虫原理开始讲解,通过介绍Pthyon编程语 ...

  3. python爬虫模拟与思考_Python爬虫之模拟知乎登录

    昨天受邀在 CSDN 微信群做了一次 Python 技术分享,主题是<用Python模拟知乎登录>,效果非常不错,发现越来越多的人加入到了 Python 阵容中. 经常写爬虫的都知道,有些 ...

  4. python爬虫微博评论图片_python爬虫爬取微博评论

    原标题:python爬虫爬取微博评论 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无 ...

  5. python爬取收费素材_Python爬虫练习:爬取素材网站数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 在工作中的电子文案.ppt,生活中的新闻.广告,都离不开大量的素材,而素材 ...

  6. python爬虫抓取房产_Python爬虫实战(3):安居客房产经纪人信息采集

    1, 引言 Python开源网络爬虫项目启动之初,我们就把网络爬虫分成两类:即时爬虫和收割式网络爬虫.为了使用各种应用场景,该项目的整个网络爬虫产品线包含了四类产品,如下图所示: 本实战是上图中的&q ...

  7. python基础知识500题_python爬虫基础知识点整理

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com ...

  8. python爬虫爬取图片代码_Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests...

    Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象.近期我接触到了爬虫,被小小地震撼一下.总体的感觉就两个词--"强大"和"有趣".今天就跟大家分享 ...

  9. 基于python爬虫的论文标题_python爬虫——简单论文标题检索-Go语言中文社区

    有趣的爬虫,独有的意义召唤着我去学习,去尝试.最近有感于每天对于论文的收集,感觉自己的收集速度赶不上论文的更新速度,同时对于自己想找到的论文的收集比较麻烦.因此,学习用python写一个很简单的爬虫, ...

  10. python打开网页被禁止_Python爬虫被禁?看看是不是这几个问题

    Python爬虫在网上完成网站的信息采集时,常常出现无缘无故的ip被禁的情况,正爬取呢就没法继续了,造成日常业务也没办法正常进行了,整个人都不好了呢.一部分人完全不清楚被禁的原因,这么简单的就给禁掉了 ...

最新文章

  1. 看看那些双车中接力装置
  2. 【错误记录】Android Studio 编译报错 ( VirtualApp 编译 NDK 报错 | Error:A problem occurred configuring project ‘: )
  3. java基础之堆、栈、方法区 继承 多态
  4. android根据拍摄url获取格式,Android如何通过URI获取文件路径示例代码
  5. 刻奇·缩减·博客——当今中国博客文化之批判
  6. Linux学习笔记---使用BusyBox创建根文件系统(一)
  7. if--(else)语句,getchar()和putchar()、、||、!逻辑运算符
  8. nyoj 破门锁(水题)
  9. 本地邮件服务器 易邮 使用
  10. C语言运算符优先级表详解
  11. JAVA_判断日期是否为工作日(排除节假日和调整周末上班)
  12. acp计算机编程大赛时间,2021年ACP考试时间安排 - 希赛网
  13. 【激光雷达】5 款免费 LiDAR 软件工具
  14. 契约精神,姜戈里的医生为什么要杀奴隶主 (标题有剧透),及编程等乱七八糟的
  15. 我的第一个Android应用BMI-深入浅出Android
  16. 青龙面板+nolan-依赖+拉库+企业微信推送(手把手喂饭,各版本通用)
  17. 心肺复苏,“星火急救”推广三年,也是深圳民生微实事项目
  18. 浅析物联网行业市场最新发展趋势
  19. 【刷题打卡】day7-BFS
  20. 实训三:文件系统命令及vi编辑

热门文章

  1. 阿里云移动端播放器高级功能---截图和音频波形 1
  2. 阿里专家杜万:Java响应式编程,一文全面解读
  3. DRDS到MaxCompute(原ODPS)数据归档性能优化测试
  4. 追踪 Kubernetes 中的网络流量
  5. 亚马逊云科技张文翊:引领企业可持续发展的绿色云端之旅
  6. 128核云原生新力作:Ampere® Altra® Max性能参数公布,提升50%!
  7. Cloud一分钟 | 谷歌投资的AR云平台开发商Blue Vision Labs,将由美版滴滴Lyft收购
  8. linux如何设置mac快捷键,在Ubuntu上使用macOS的快捷键
  9. mybatis批量插入oracle大量数据记录性能问题解决
  10. Linux 主机信息 总览