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

为何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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:52:37