首页 > 解决方案 > 如何从 URL 读取图像(urllib.error.HTTPError:HTTP 错误 403:禁止)

问题描述

我有一个返回图像(API)的代码:

url1 = "https://api.twilio.com/2010-04-01/Accounts/AC9567862a70d7b000488e8ba80bc19787/Messages/MMebd9e089637c2c740608199af762fc19/Media/ME49a13b9e0732d78b384fe81d6c3c3"

在浏览器上手动打开图片会自动将https地址转换为如下:

url2 = "https://s3-external-1.amazonaws.com/media.twiliocdn.com/AC9567862a70d7b000488e8ba80bc19787/f28ad1174d0871048be68207a88d5cea"

from skimage import io
img = io.imread(url1) # < ---- error here
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
text = pytesseract.image_to_string(img)

我正在尝试从 url1 读取图像并对图像执行 OCR。(即直接从(url1)读取图像,无需在浏览器上打开并使用备用地址)

但是,io.imread(url1) 给出错误“urllib.error.HTTPError: HTTP Error 403: Forbidden”。

io.imread(url2) 不返回任何错误。

有没有办法直接从 url1 读取图像?

标签: pythonhttphttpsurllibhttp-status-code-403

解决方案


您可以在第二行中使用此代码,因为 skimage.io.imread() 将 URL 作为字符串输入。

img = io.imread(String(URL))

您也可以改用 cv2 模块。

# importing OpenCV(cv2) module
import cv2

img = cv2.imread(URL)

# Output img with window name as 'image'
cv2.imshow('image', img) 

推荐阅读