You need to enable JavaScript to run this app. 使用Amazon Textract提取本地多表格PDF导出至CSV/Excel的配置方法
优惠活动
大模型
产品
解决方案
定价
更多

使用Amazon Textract提取本地多表格PDF导出至CSV/Excel的配置方法

Amazon Textract本地PDF表格提取脚本适配指南

对应问题场景

目标是通过Amazon Textract提取带多表格的PDF内容,导出为CSV/Excel格式用于后续分析,可使用公开的标准测试PDF样本foo.pdf验证脚本运行效果。
现存问题:已拿到AWS官方示例代码,但不清楚如何调整逻辑,让脚本自动读取本地文件夹内的PDF作为输入源。

核心适配逻辑说明

原AWS示例代码本身已经实现了单文件的本地读取能力:脚本通过open(file_name, 'rb')将本地PDF读取为二进制字节流,再传入analyze_document接口完成识别,缺的只是批量遍历本地文件夹、自动匹配PDF文件的逻辑,不需要大改核心识别流程。

关键注意事项

  • 接口限制说明:如果直接通过Document={'Bytes': bytes_test}的方式传参,Textract对单文件的大小限制为5MB,超出大小的PDF需要先上传到AWS S3存储桶,再通过S3对象路径作为输入源调用接口
  • 原代码缺陷修正:
    • 原生成CSV的逻辑没有对单元格内的逗号做转义,遇到内容本身带逗号的表格会出现列错位,建议使用Python内置的csv模块替代手动拼接字符串的逻辑
    • 原代码固定输出单个output.csv,批量处理文件夹内多文件时会出现内容覆盖,建议输出文件名和原PDF文件名一一对应
    • 原代码没有统一处理编码,Windows环境下打开CSV容易出现中文乱码,写入文件时要指定encoding="utf-8-sig"

可直接复用的改造代码

1. 批量遍历本地PDF文件夹的入口逻辑

替换原脚本末尾单文件读取的部分,新增自动扫描文件夹的逻辑:

import os
import glob

def batch_process_local_pdf(input_folder):
    # 扫描目标文件夹下所有后缀为.pdf的文件
    pdf_path_list = glob.glob(os.path.join(input_folder, "*.pdf"))
    if not pdf_path_list:
        print("目标文件夹下未找到可处理的PDF文件")
        return

    for pdf_path in pdf_path_list:
        print(f"开始处理文件: {pdf_path}")
        # 调用原有识别函数获取表格内容
        extracted_csv = get_table_csv_results(pdf_path)
        # 按原PDF名生成输出文件,避免覆盖
        output_name = f"{os.path.splitext(os.path.basename(pdf_path))[0]}_提取结果.csv"
        # 带BOM的utf-8编码避免Windows下乱码
        with open(output_name, "wt", encoding="utf-8-sig") as fout:
            fout.write(extracted_csv)
        print(f"文件处理完成,输出路径: {output_name}")

if __name__ == "__main__":
    # 替换为你本地存放PDF的文件夹绝对路径
    target_folder = "./my_local_pdf_folder"
    batch_process_local_pdf(target_folder)

2. Excel格式导出适配

如果需要输出为Excel格式,不需要改动Textract的核心提取流程,只需要把提取到的表格内容通过pandas转存为xlsx文件即可,示例片段:

import pandas as pd

# 识别到所有表格后,将每个表格单独写入一个sheet
with pd.ExcelWriter("提取结果.xlsx") as excel_writer:
    for table_idx, table_row_data in enumerate(all_extracted_tables):
        df = pd.DataFrame.from_dict(table_row_data, orient="index")
        df.to_excel(excel_writer, sheet_name=f"表格{table_idx+1}", index=False)

3. 运行前准备

提前通过aws configure完成本地环境的AWS凭证配置,确保所用账号拥有Textract接口的调用权限,否则会触发认证报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 08:45:00