0

我已经测试了几乎所有在 Internet 上可以找到的 Amazon Textract 示例代码,但我无法让它工作。我可以从我的 Python 客户端上传和下载文件到 S3,因此凭据应该没问题。许多错误指向某些区域故障,但我已经尝试了所有可能的组合。

这是最后一个测试电话之一 -

def test_parse_3():
# Document
s3BucketName = "xx-xxxx-xx"
documentName = "xxxx.jpg"

# Amazon Textract client
textract = boto3.client('textract')

# Call Amazon Textract
response = textract.detect_document_text(
    Document={
        'S3Object': {
            'Bucket': s3BucketName,
            'Name': documentName
        }
    })

print(response)

似乎很容易,但它会产生错误 -

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

任何想法有什么问题并且有人有一个工作示例(我知道示例代码中的选项卡不正确)?

我还在 AWS 中测试了很多权限设置。凭据位于 aws sdk 创建的隐藏文件中。

4

1 回答 1

0

我相信你已经知道了,但是桶是区分大小写的。如果您已验证对象存储桶和名称都正确,只需确保将适当的区域添加到您的凭证中。

我测试了只是从 s3 读取而不在凭证中包含区域,并且我能够毫无问题地列出存储桶中的对象。我认为这很有效,因为 s3 应该与区域无关。但是,由于 Textract 是特定于区域的,因此在使用 Textract 从 s3 存储桶中获取数据时,您必须在凭证中定义区域。

我意识到这是几个月前提出的问题,但我希望这能为将来面临这个问题的其他人提供一些启示。

于 2021-01-06T19:48:18.820 回答