You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Textract analyze_document处理多页PDF报错:仅支持单页PDF

问题原因

analyze_document是Textract的同步API,仅支持处理单页文档(单页PDF、JPG/PNG图片)。当传入多页PDF时,就会抛出"unsupported document type"错误。

解决方案

改用异步的start_document_analysis接口处理多页PDF,步骤如下:

  1. 启动异步任务并获取任务ID
  2. 轮询任务状态,直到任务完成
  3. 提取分析结果

修改后的完整代码:

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等文档,提交任务后返回JobId
  • get_document_analysis:通过JobId查询任务状态,直到任务成功或失败
  • 轮询间隔可根据文档大小调整,避免过于频繁调用API

内容的提问来源于stack exchange,提问作者Aarav Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:13:23