cqwcns 发表于 2022-8-3 17:13

python easyocr直接识别网络图片的问题

这几天有个需求是从图片识别出文字,试了几个轮子,感觉easyocr效果最好。
但有个问题,我在测试本地图片时,没有问题。但我希望直接通过链接来识别网络图片。
我尝试这样写,但是报错的,具体如下,请各位大佬交流、指教,感谢。

from PIL import Image
import requests
from io import BytesIO
import easyocr

print('开始')

# 设置语言
reader = easyocr.Reader(['ch_sim', 'en'], gpu=False)

# 本地文件正常输出识别结果
# result = reader.readtext(r'D:\Files\python\img_to_str\img2.jpg', detail=0)

# 尝试直接识别网格图片
img = Image.open(BytesIO(requests.get(
    "https://img.alicdn.com/bao/uploaded/i4/6000000004395/O1CN015dL7Fj1iKxTvPBQ7Z_!!6000000004395-0-picassoopen.jpg").content))
# 剪裁出右下角
img = img.crop((586, 680, 800, 800))
# 输出<PIL.Image.Image image mode=RGB size=214x120 at 0x1DB7F8D26B0>
print(img)

# 网格文件报错ValueError: Invalid input type. Supporting format = string(file path or url), bytes, numpy array
result = reader.readtext(img, detail=0)

print(result)

woflant 发表于 2022-8-3 17:32

建议先把图片下载到本地测试,再进行在线识别,避免干扰因素

grekevin 发表于 2022-8-3 19:04

img = img.crop((586, 680, 800, 800))
img_io_stream = io.BytesIO()
img.save(img_io_stream, format='PNG')
img_bytes = img_io_stream.getvalue()
result = reader.readtext(img_bytes, detail=0)

yippee 发表于 2022-8-3 19:50

要另存再读吗

cqwcns 发表于 2022-8-4 09:07

3楼的方法可行,测试实现需求。
不知道还有没有优化的空间。


欢迎交流,谢谢。

from PIL import Image
import requests
from io import BytesIO
import easyocr

print('开始')

# 设置语言
reader = easyocr.Reader(['ch_sim', 'en'], gpu=False)

# 本地文件正常输出识别结果
# result = reader.readtext(r'D:\Files\python\img_to_str\img2.jpg', detail=0)

# 尝试直接识别网格图片
img = Image.open(BytesIO(requests.get(
    "https://img.alicdn.com/bao/uploaded/i4/6000000004395/O1CN015dL7Fj1iKxTvPBQ7Z_!!6000000004395-0-picassoopen.jpg").content))
# 剪裁出右下角
img = img.crop((586, 680, 800, 800))

img_io_stream = BytesIO()
img.save(img_io_stream, format='PNG')
img_bytes = img_io_stream.getvalue()
result = reader.readtext(img_bytes, detail=0)

print(result)
页: [1]
查看完整版本: python easyocr直接识别网络图片的问题