【发布时间】:2020-04-26 08:06:33
【问题描述】:
我在 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>
我已经尝试了所有与此问题相关的答案,所以没有任何帮助。 包含: matplotlib: ValueError: invalid PNG header 和 PIL cannot identify image file for io.BytesIO object
请指教如何解决?
【问题讨论】:
-
您确定、绝对、确定是一个PNG文件吗?即,您并没有盲目相信文件扩展名或其他工具所说的内容,而是使用十六进制查看器打开它并看到了魔术字节标题(和其他易于识别的部分)?
-
@usr2564301 我知道我的存储桶里有什么,但这一点在我脑海中(我可能会得到 PDF、GIF、JPEG ... 带有图像的文件,我需要解析它们。
标签: python-3.x amazon-s3 boto3