我在 S3 上有一个存储桶。我希望能够连接到它并将图片/PDF 读取到我的 EC2 机器内存中,执行 OCR 并获取所需的字段。
这是我到目前为止所做的,但不幸的是它不起作用。
import cv2
import boto3
import matplotlib
import pytesseract
from PIL import Image
boto3.setup_default_session(profile_name='default-mfasession')
s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
bucket_name = "my_bucket"
key = "my-files/._Screenshot 2020-04-20 at 14.21.20.png"
bucket = s3_resource.Bucket(bucket_name)
object = bucket.Object(key)
response = object.get()
file_stream = response['Body']
im = Image.open(file_stream)
np.array(im)
返回一个错误:
UnidentifiedImageError: 无法识别图像文件 <_io.BytesIO object at 0x7fae33dce110>
我已经在 SO 中尝试了与此问题相关的所有答案,但没有任何帮助。包括:matplotlib: ValueError: invalid PNG header and PIL cannot identify image file for io.BytesIO object
请指教如何解决?
这是我通常使用的。也许它也适合你:
def image_from_s3(bucket, key):
bucket = s3_resource.Bucket(bucket)
image = bucket.Object(key)
img_data = image.get().get('Body').read()
return Image.open(io.BytesIO(img_data))
在你的处理程序中你执行这个:
img = image_from_s3(image_bucket, image_key)
img
如果成功执行,应该是 Pillow 的图像。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句