2

我正在使用 boto3(用于 python 的 aws sdk)来分析文档(pdf)以获取表单键:值对。

import boto3

def process_text_analysis(bucket, document):
    # Get the document from S3
    s3_connection = boto3.resource('s3')
    s3_object = s3_connection.Object(bucket, document)
    s3_response = s3_object.get()
    # Analyze the document
    client = boto3.client('textract')
    response = client.analyze_document(Document={'S3Object': {'Bucket': bucket, 'Name': document}},
                                       FeatureTypes=["FORMS"])


process_text_analysis('francismorgan-01', '709 Privado M SURESTE.pdf')

我使用分析文档遵循了 AWS 的文档,当我运行我的函数时,我得到了错误。

botocore.errorfactory.UnsupportedDocumentException: An error occurred (UnsupportedDocumentException) when calling the AnalyzeDocument operation: Request has unsupported document format

我错过了什么吗?

4

2 回答 2

4

AnalyzeDocument是一个同步 API,仅支持 PNG 或 JPG 图像。

由于您要处理 PDF 文件,因此您需要使用 Amazon Textract 异步 API ,例如StartDocumentAnalysisStartDocumentTextDetection

于 2020-03-03T14:15:14.483 回答
0

正如文档所说

StartDocumentAnalysis 可以分析 JPEG、PNG、TIFF 和 PDF 格式的文档中的文本。文档存储在 Amazon S3 存储桶中。使用 DocumentLocation 指定文档的存储桶名称和文件名。

Boto3 示例

import boto3

client = boto3.client('textract')

response = client.start_document_analysis(
    DocumentLocation={
        'S3Object': {
            'Bucket': 'YOUR_BUCKET_NAME',
            'Name': 'YOUR_FILE_KEY_NAME'
        }
    },
    FeatureTypes=["FORMS"]
)

# Get results from asynchronous operation
result = client.get_document_analysis(JobId=response['JobId'])

此外,AWS 文档提供了一个带有方法的类TextractWrapperstart_analysis_jobget_analysis_job执行与前面示例相同的操作。

于 2021-11-04T22:42:00.560 回答