使用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功能,可通过以下方式实现:
- 调用
start_document_text_detection异步提取文档全量文本; - 待异步任务完成后,获取提取的文本内容;
- 自行实现文本查询逻辑,匹配你需要的信息。
或者,将大文档拆分为单页文件,对每一页单独调用同步的analyze_document方法处理Queries。
内容的提问来源于stack exchange,提问作者Javier Perez
相关产品推荐
相关产品推荐

