【问题标题】:Not able to retrieve processed file from S3 Bucket无法从 S3 存储桶中检索已处理的文件
【发布时间】:2021-06-19 16:33:49
【问题描述】:

我是一名 AWS 新手,正在尝试使用他们的 OCR 服务 Textract API。 据我了解,我需要将文件上传到 S3 存储桶,然后在其上运行 textract。

我打开了桶和里面的文件:

我获得了权限:

但是当我运行我的代码时它会出错。

        import boto3
        import trp

        # Document
        s3BucketName = "textract-console-us-east-1-057eddde-3f44-45c5-9208-fec27f9f6420"
        documentName = "ok0001_prioridade01_x45f3.pdf"
]\[\[""
        # Amazon Textract client
        textract = boto3.client('textract',region_name="us-east-1",aws_access_key_id="xxxxxx",
                                aws_secret_access_key="xxxxxxxxx")

        # Call Amazon Textract
        response = textract.analyze_document(
            Document={
                'S3Object': {
                    'Bucket': s3BucketName,
                    'Name': documentName
                }
            },
            FeatureTypes=["TABLES"])

这是我得到的错误:

botocore.errorfactory.InvalidS3ObjectException: An error occurred (InvalidS3ObjectException) when calling the AnalyzeDocument operation: Unable to get object metadata from S3. Check object key, region and/or access permissions.

我错过了什么?我该如何解决?

【问题讨论】:

    标签: amazon-web-services amazon-s3 boto3 amazon-textract


    【解决方案1】:

    您缺少 S3 访问策略,如果您想根据需要快速解决,您应该添加 AmazonS3ReadOnlyAccess 策略。

    一个好的做法是应用最小权限访问原则并在需要时继续授予访问权限。因此,我建议您创建一个特定的策略来访问您的 S3 存储桶 textract-console-us-east-1-057eddde-3f44-45c5-9208-fec27f9f6420,并且只能在 us-east-1 区域中访问。

    【讨论】:

      【解决方案2】:

      Amazon Textract 目前支持 PNG、JPEG 和 PDF 格式。看起来您正在使用 PDF。

      一旦有了有效的格式,就可以使用 Python S3 API 读取 S3 对象中对象的数据。读取对象后,您可以将字节数组传递给 analyze_document 方法。查看如何将 AWS SDK for Python (Boto3) 与 Amazon Textract 结合使用的完整示例 检测文档图像中的文本、表单和表格元素。

      https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/python/example_code/textract/textract_wrapper.py

      尝试按照该代码示例查看您的问题是否已解决。

      “您能否提供一些使用参数的许可”

      我刚刚运行了 Java V2 示例,它运行良好。在此示例中,我使用的是位于特定 Amazon S3 存储桶中的 PNG 文件。

      以下是您需要的参数:

      确保在 Python 中实现此功能时,设置相同的参数。

      【讨论】:

      • 您能提供一些关于使用参数的许可吗?类型错误:__init__() 缺少 3 个必需的位置参数:“textract_client”、“s3_resource”和“sqs_resource”
      • 看上面的图片,显示一个成功的调用和你需要的参数
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 2022-06-28
      相关资源
      最近更新 更多