我已经测试了几乎可以在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创建的隐藏文件中。
答案 0 :(得分:0)
我相信您已经知道了,但是存储桶区分大小写。如果您已验证对象存储桶和名称都正确,只需确保将适当的区域添加到您的凭据中。
我测试了只从 s3 读取而不在凭据中包含区域,并且我能够毫无问题地列出存储桶中的对象。我认为这有效,因为 s3 应该是区域不可知的。但是,由于 Textract 是特定于区域的,因此在使用 Textract 从 s3 存储桶中获取数据时,您必须在凭据中定义区域。
我意识到这是几个月前提出的问题,但我希望这可以为将来面临此问题的其他人提供一些启示。