如何将AWS Textract与Python结合使用

时间:2020-07-28 17:15:06

标签: python amazon-textract

我已经测试了几乎可以在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创建的隐藏文件中。

1 个答案:

答案 0 :(得分:0)

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

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

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