AWS Textract analyze_document处理多页PDF报错:仅支持单页PDF
问题原因
analyze_document是Textract的同步API,仅支持处理单页文档(单页PDF、JPG/PNG图片)。当传入多页PDF时,就会抛出"unsupported document type"错误。
解决方案
改用异步的start_document_analysis接口处理多页PDF,步骤如下:
- 启动异步任务并获取任务ID
- 轮询任务状态,直到任务完成
- 提取分析结果
修改后的完整代码:
import boto3 import os import pathlib import time # S3配置 client_s3 = boto3.client('s3') bucket_name = "BUCKET NAME" object_name = "FILE NAME" file_name = os.path.join(pathlib.Path(__file__).parent.resolve(), "PDFNAME") # 上传文件到S3 print(file_name) client_s3.upload_file(file_name, bucket_name, object_name) # Textract客户端 client_textract = boto3.client('textract') queries = { "Queries": [] } # 启动异步多页文档分析任务 response = client_textract.start_document_analysis( DocumentLocation={'S3Object': {'Bucket': bucket_name, 'Name': object_name}}, FeatureTypes=["QUERIES"], QueriesConfig=queries ) job_id = response['JobId'] print(f"异步任务已启动,任务ID: {job_id}") # 轮询任务状态 while True: status_response = client_textract.get_document_analysis(JobId=job_id) status = status_response['JobStatus'] if status == 'SUCCEEDED': print("任务完成,开始提取结果") break elif status == 'FAILED': raise Exception(f"任务失败: {status_response.get('StatusMessage', '未知错误')}") print(f"任务处理中,当前状态: {status},等待5秒后重试...") time.sleep(5) # 提取QUERY_RESULT结果 for block in status_response["Blocks"]: if block["BlockType"] == "QUERY_RESULT": print(block["Text"])
关键说明
start_document_analysis:异步处理多页PDF、TIFF等文档,提交任务后返回JobIdget_document_analysis:通过JobId查询任务状态,直到任务成功或失败- 轮询间隔可根据文档大小调整,避免过于频繁调用API
内容的提问来源于stack exchange,提问作者Aarav Gupta
相关产品推荐
相关产品推荐

