概述
图像识别与文字处理是在生活中非常常见的一种场景,Python对于处理该问题有很多相关库来使用,这次用到两个非常重要的库:Pillow和Tesseract。
这两个库互为补充,对互联网上的图片进行处理。Pillow执行第一步:清洗和过滤图像,Tesseract尝试将图像中的形状与库里面存储的文字相匹配。
Tesseract安装需要配置环境变量,接下来演示下Tesseract安装过程:
Tesseract下载地址:https://digi.bib.uni-mannheim.de/tesseract/
接下来一直next就行了。
在系统变量中设置名为:TESSDATA_PREFIX变量,地址为:D:\Program Files (x86)\Tesseract-OCR\tessdata(这是我Tesseract安装的地址)。
cmd查看是否安装成功:
实例
现在许多流行的网站都有验证码模块,但注册页面也经常会遭到网络机器人的垃圾注册,这些网络机器人是怎么完成的呢?
大多数网站生成的验证码图片都有以下属性:
- 服务端动态生成的图片
- 图片的答案存储在服务端的数据库里
- 验证码都有时效,一旦一段时间过去还没有完成验证,会很难成功
下面来对http://pythonscraping.com/humans-only用网络机器人来破解验证码。
1.需要导入的库:
2.访问网站时,会碰到一些并不是太清晰的图片,我们可以找到一个最佳的阈值来让图片更清晰:
3.访问目标网站,并确定提交表单需要的数据:
4.获取到验证码图片的URL,使用Python自带的库也可以使用Tesseract来读取图片信息,如果在图片清洗时找到了最佳阈值则会让读取到的信息正确率大大提高。
5.最后做一个判断,读取到的字符是否和验证码中的数量一样,一样则访问服务端,否则打印错误信息。
6.结果:读取到了5个字符,并显示了跳转后页面的部分数据。
总结:
在我们爬虫过程中,经常会遇到登录或注册的情况,这就需要我们对图像识别有一些认识。这是一个很简单的图像识别。图像识别中确定最佳阈值很重要,如果有很多图像,都有不同程度灰度的问题,那就要考虑如何计算最佳阈值了。