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) 建议先把图片下载到本地测试,再进行在线识别,避免干扰因素 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) 要另存再读吗 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]