阻碍我们爬⾍的。有时候正是在登录或者请求⼀些数据时候的图形验证码。因 此这⾥我们讲解⼀种能将图⽚翻译成⽂字的技术。将图⽚翻译成⽂字⼀般被称 为光学⽂字识别(Optical Character Recognition),简写为OCR。实现 OCR的库不是很多,特别是开源的。因为这块存在⼀定的技术壁垒(需要⼤量 的数据、算法、机器学习、深度学习知识等),并且如果做好了具有很⾼的商 业价值。因此开源的⽐较少。这⾥介绍两个⽐较优秀的图像识别开源库: Tesseract和ddddocr。
Tesseract
定义:Tesseract是⼀个将图像翻译成⽂字的OCR(光学⽂字识别,Optical Character Recognition),⽬前由⾕歌赞助。Tesseract是⽬前公认最优秀、最 准确的开源OCR库。Tesseract具有很⾼的识别度,也具有很⾼的灵活性,他可 以通过训练识别任何字体
Windows系统安装
在以下链接下载可执⾏⽂件,github.com/tesseract-o…
备用链接: digi.bib.uni-mannheim.de/tesseract/
在Python中调⽤Tesseract:
pip install pytesseract
在ubuntu下通过以下命令进行安装
sudo apt install tesseract-ocr
设置环境变量
安装完成后,如果想要在命令⾏中使⽤Tesseract,那么应该设置环境变量。
Mac和Linux在安装的时候就默认已经设置好了。
在Windows下把tesseract.exe所在的路径添加到PATH环境变量中。
还有⼀个环境变量需要设置的是,要把训练的数据⽂件路径也放到环境变量 中。 在环境变量中,添加⼀个
TESSDATA_PREFIX=D:\Tesseract-OCR\tessdata
进⼊cmd输⼊下⾯的命令查看版本,正常运⾏则安装成功
tesseract --version
在命令行中使用tesseract识别图像
tesseract 图⽚路径 ⽂件路径
tesseract demo.png a
解析单个文件test.png(第1个参数),在标准输出(命令行界面)打印解析结果(第2个参数为stdout),用-l参数带chi_sim表示使用简体中文语言
识别中⽂图像,需要下载语⾔安装包
URL地址:github.com/tesseract-o…
在代码中使用tesseract识别图像
# -*- coding: UTF-8 -*-
# @Project :网络爬虫
# @File :图像识别技术--Tesseract.py
# @IDE :PyCharm
# @Author :艳烔
# @Date :2024/10/31 9:28
import pytesseract
from PIL import Image
import requests
from io import BytesIO
# 图片地址: https://pic.616pic.com/ys_bnew_img/00/42/61/V3N7MK0v8e.jpg
pytesseract.pytesseract.tesseract_cmd = 'D:/Development/tesseract/tesseract.exe'
tessdaata_dir_config = r'--tessdata-dir D:/Development/tesseract/tessdata'
# 识别本地图片
# img = Image.open('D:/图片/test.png')
# print(pytesseract.image_to_string(img, lang='chi_sim',config=tessdaata_dir_config))
# 识别在线图片
response = requests.get("https://pic.616pic.com/ys_bnew_img/00/42/61/V3N7MK0v8e.jpg")
response.raise_for_status() # 如果请求失败, 抛出异常 HttpError
print(response.headers['Content-Type']) # 输出图片类型
img2 = Image.open(BytesIO(response.content))
img2.save('yanzhengma.jpg') # 保存以验证
print(pytesseract.image_to_string(Image.open('yanzhengma.jpg'), lang='eng', config=tessdaata_dir_config))
# -*- coding: UTF-8 -*-
'''
@Project :网络爬虫
@File :图像识别Demo2.py
@IDE :PyCharm
@Author :慕逸
@Date :03/11/2024 10:01
'''
from urllib import request
import pytesseract
from PIL import Image
import time
pytesseract.pytesseract.tesseract_cmd = 'D:/Development/tesseract/tesseract.exe'
tessdaata_dir_config = r'--tessdata-dir D:/Development/tesseract/tessdata'
while True:
url = 'https://passport.lagou.com/vcode/create?from=register&refresh=1513081451891'
request.urlretrieve(url, 'captcha.png')
image = Image.open('captcha.png')
text = pytesseract.image_to_string(image, lang="eng", config=tessdaata_dir_config)
print(text)
time.sleep(2)
ddddocr
github地址:github.com/sml2h3/dddd…
安装
pip install ddddocr
# -*- coding: UTF-8 -*-
'''
@Project :网络爬虫
@File :图像识别技术--ddddocr.py
@IDE :PyCharm
@Author :慕逸
@Date :03/11/2024 10:26
'''
import ddddocr
from urllib import request
from PIL import Image
import time
# 关闭广告
ocr = ddddocr.DdddOcr(show_ad=False)
with open('captcha.png', 'rb') as f:
image = f.read()
yzm = ocr.classification(image)
print(yzm)
# 根据图片链接识别验证码
while True:
url = 'https://passport.lagou.com/vcode/create?from=register&refresh=1513081451891'
request.urlretrieve(url, 'yzm.png')
image = Image.open('yzm.png')
yzm_str = ocr.classification(image)
print(yzm_str)
time.sleep(2)
当然,ddddocr也可以识别滑块验证码,中文点选验证码等.