为何Boto3调用Amazon Textract仅返回WORDS和LINES,无法识别TABLES?
问题分析与解决方案
你遇到的问题是:使用Boto3调用Textract异步分析文档时,某份文档仅返回WORDS和LINES,无法识别表格,但AWS控制台能正常识别。结合你的代码和场景,以下是排查方向和解决步骤:
1. 检查结果获取逻辑是否正确
你的代码仅实现了启动异步分析任务的逻辑,后续获取结果的代码可能存在遗漏:
- 必须调用
get_document_analysis(并处理NextToken分页)才能完整获取所有分析结果,包括表格 - 需要主动筛选
BlockType为TABLE的区块,默认不会单独返回表格数据
示例结果获取代码:
def get_analysis_results(self, job_id): all_blocks = [] try: response = self.textract_client.get_document_analysis(JobId=job_id) all_blocks.extend(response['Blocks']) # 处理分页结果 while 'NextToken' in response: response = self.textract_client.get_document_analysis( JobId=job_id, NextToken=response['NextToken'] ) all_blocks.extend(response['Blocks']) # 提取表格区块 tables = [block for block in all_blocks if block['BlockType'] == 'TABLE'] return tables, all_blocks except ClientError as e: print(f"获取分析结果失败: {e}") raise
2. 验证任务启动时的FeatureTypes参数是否生效
在获取结果的初始响应中,检查FeatureTypes字段,确认任务确实启用了TABLES:
response = self.textract_client.get_document_analysis(JobId=job_id) print("启用的FeatureTypes:", response['FeatureTypes'])
如果输出不包含TABLES,需检查代码中start_document_analysis的参数是否被意外修改(比如其他逻辑覆盖了参数)。
3. 升级Boto3和Botocore版本
旧版本的Boto3可能对SIGNATURES/LAYOUT等新增FeatureTypes支持不完善,导致整个FeatureTypes参数解析异常,间接影响TABLES的识别。执行升级命令:
pip install --upgrade boto3 botocore
4. 确认文档处理状态
确保异步任务完全完成后再获取结果:
- 检查
response['JobStatus']是否为SUCCEEDED,避免在IN_PROGRESS状态下获取不完整的结果
5. 排除特殊文档格式问题
虽然控制台能识别,但仍需确认:
- 文档是否为加密PDF?(需确保Textract有权限访问解密后的内容)
- 文档是否存在跨页表格?(需通过分页遍历完整获取所有表格区块)
内容的提问来源于stack exchange,提问作者Alex Matias
相关产品推荐
相关产品推荐

