4.3-python爬虫之图形验证码识别

系列文章目录

python爬虫目录



前言

摘录自B站对应课程笔记
不愧是清华大佬!把Python网络爬虫讲得如此简单明了!从入门到精通保姆级教程(建议收藏)

以下是本篇文章正文内容,下面案例可供参考


一、图形验证码识别技术

阻碍我们爬虫的。有时候正是在登录或者请求一些数据时候的图形验证码。因此这里我们讲解一种能将图片翻译成文字的技术。将图片翻译成文字一般被成为光学文字识别(Optical Character Recognition),简写为OCR。实现OCR的库不是很多,特别是开源的。因为这块存在一定的技术壁垒(需要大量的数据、算法、机器学习、深度学习知识等),并且如果做好了具有很高的商业价值。因此开源的比较少。这里介绍一个比较优秀的图像识别开源库:Tesseract。

Tesseract:
Tesseract是一个OCR库,目前由谷歌赞助。Tesseract是目前公认最优秀、最准确的开源OCR库。Tesseract具有很高的识别度,也具有很高的灵活性,他可以通过训练识别任何字体。

二、安装

1、Linux系统

可以在以下链接下载源码自行编译。
https://github.com/tesseract-ocr/tesseract/wiki/Compiling
或者在ubuntu下通过以下命令进行安装:

sudo apt install tesseract-ocr

2、Mac系统

#用Homebrew即可方便安装:
brew install tesseract

3、Windows系统

在以下链接下载可执行文件,然后一顿点击下一步安装即可(放在不需要权限的纯英文路径下):
https://github.com/tesseract-ocr/https://github.com/UB-Mannheim/tesseract/wiki
在这里插入图片描述

安装时可以将语言包选上(比如不选择的话,默认的只能解析英文)

设置环境变量

安装完成后,如果想要在命令行中使用Tesseract,那么应该设置环境变量。Mac和Linux在安装的时候就默认已经设置好了。在Windows下把tesseract.exe所在的路径添加到PATH环境变量中。

还有一个环境变量需要设置的是,要把训练的数据文件路径也放到环境变量中。
在环境变量中,添加一个TESSDATA_PREFIX=C:\path_to_tesseractdata\teseractdata

输入命令tesseract --list-langs 可以支持的语言

输入命令 tesseract b.png b -l chi_sim :使用中文识别 b.png 图片,保存到 b.txt 文件中

三、在命令行中使用tesseract识别图像

如果想要在cmd下能够使用tesseract命令,那么需要把tesseract.exe所在的目录放到PATH环境变量中。然后使用命令:tesseract 图片路径 文件路径。

tesseract a.png a

那么就会识别出a.png中的图片,并且把文字写入到a.txt中。如果不想写入文件直接想显示在终端,那么不要加文件名就可以了。

四、在代码中使用tesseract识别图像

在Python代码中操作tesseract。需要安装一个库,叫做pytesseract。通过pip的方式即可安装:

pip install pytesseract

并且,需要读取图片,需要借助一个第三方库叫做PIL。通过pip list看下是否安装。如果没有安装,通过pip的方式安装:

pip install PIL

注意:高版本中PIL库包含在Pillow库中,再次输入pip install Pillow

使用pytesseract将图片上的文字转换为文本文字的示例代码如下:

import pytesseract  # 导入pytesseract库
from PIL import Image  # 导入 Image 库
 
# 指定 tesseract.exe 所在路径
pytesseract.pytesseract.tesseract_cmd = r"D:\Tesseract-OCR\tesseract.exe"
 
image = Image.open("a.png")  # 打开英文图片
text = pytesseract.image_to_string(image=image)
print(text)
print(">>" * 10)
image = Image.open("b.png")  # 打开中文图片
text = pytesseract.image_to_string(image=image, lang='chi_sim')
print(text)

五、用pytesseract处理网站图形验证码

import pytesseract
from urllib import request
from PIL import Image
import time
 
# 指定 tesseract.exe 所在路径
pytesseract.pytesseract.tesseract_cmd = r"D:\Tesseract-OCR\tesseract.exe"
 
while True:
    filename = "captcha.png"
    captcha_url = "http://111.111.222.222/include/xxx.php?"
    request.urlretrieve(captcha_url, "captcha.png")
    image = Image.open(filename)
    text = pytesseract.image_to_string(image)
    print(text)
    time.sleep(2.5)
# 并不是所有都能识别出来
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你可以使用一些图像处理库和机器学习算法来识别爬虫中的图形验证码。以下是一个基本的案例示例: 1. 首先,你需要安装需要的库,如OpenCV和Pillow。使用以下命令进行安装: ``` pip install opencv-python pip install Pillow ``` 2. 导入所需的库: ```python import cv2 from PIL import Image from pytesseract import pytesseract ``` 3. 下载并保存验证码图片。 4. 使用OpenCV库加载验证码图片,并将其转换为灰度图像: ```python image = cv2.imread('captcha.png') gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) ``` 5. 对图像进行预处理,以便更好地识别验证码。可以尝试使用图像二值化、降噪等技术: ```python ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU) ``` 6. 使用Pillow库创建一个临时图像对象,并将处理后的图像保存到临时文件中: ```python temp_image = Image.fromarray(thresh) temp_image.save('temp.png') ``` 7. 使用Tesseract库对临时文件中的验证码进行识别: ```python captcha_text = pytesseract.image_to_string(Image.open('temp.png')) ``` 8. 最后,可以输出识别出的验证码文本: ```python print('识别结果:', captcha_text) ``` 这只是一个基本的示例,实际的验证码可能会更复杂,需要根据具体情况进行适当的调整和优化。还可以尝试使用其他机器学习算法,如卷积神经网络(CNN),来提高验证识别的准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nosimper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值