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

使用boto3调用Textract start_document_analysis的Queries功能报错求助

问题原因及解决方案
  • 核心问题:start_document_analysis 异步方法不支持QUERIES分析类型,也不接受QueriesConfig参数。
    • 该方法的合法FeatureTypes仅包含 TABLES、FORMS、SIGNATURES、LAYOUT,你添加的QUERIES不在允许范围内。
    • QueriesConfig是专门为同步分析方法analyze_document设计的参数,异步方法无此参数定义,所以会抛出异常。

正确实现方式

场景1:文档体积小,用同步分析

直接使用analyze_document方法,同时指定QUERIES类型和QueriesConfig参数:

import boto3

# 初始化Textract客户端
textract_client = boto3.client('textract', region_name='your-region')

# 调用同步分析接口
response = textract_client.analyze_document(
    Document={
        'S3Object': {
            'Bucket': 'your-bucket-name',
            'Name': 'target-document.pdf'
        }
    },
    FeatureTypes=['TABLES', 'FORMS', 'QUERIES'],
    QueriesConfig={
        'Queries': [
            {
                'Text': '请提取文档中的合同编号',
                'Alias': 'ContractID',
                'Pages': ['1']  # 指定要查询的页码,'*'表示所有页
            }
        ]
    }
)

# 解析查询结果
for block in response['Blocks']:
    if block['BlockType'] == 'QUERY_RESULT':
        query_text = block['Query']['Text']
        result_text = block['Text']
        print(f"[{query_text}]: {result_text}")

场景2:文档体积大,需异步处理

目前Textract的异步方法未直接支持Queries功能,可通过以下方式实现:

  1. 调用start_document_text_detection异步提取文档全量文本;
  2. 待异步任务完成后,获取提取的文本内容;
  3. 自行实现文本查询逻辑,匹配你需要的信息。
    或者,将大文档拆分为单页文件,对每一页单独调用同步的analyze_document方法处理Queries。

内容的提问来源于stack exchange,提问作者Javier Perez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:00:53