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

如何用Python的camelot库将多页PDF数据提取至单个CSV文件

解决方案:合并PDF多页表格为单个CSV

当然可以实现。你只需要用camelot提取每一页的表格后,将它们转换为pandas的DataFrame,合并成一个完整的数据集,再导出为单个CSV文件即可。

修改后的完整代码

import camelot
import pandas as pd

def pdf2csv_combined(pdf_filename, csv_filename):
    # 只提取PDF前3页的表格,指定pages参数
    tables = camelot.read_pdf(pdf_filename, pages='1-3')
    
    if not tables:
        print("未找到任何表格")
        return
    
    # 收集所有表格的DataFrame
    df_list = []
    for idx, table in enumerate(tables):
        df = table.df
        # 除了第一个表格,后续表格跳过表头行(因为所有表格列名一致)
        if idx > 0:
            df = df.iloc[1:]
        df_list.append(df)
    
    # 合并所有DataFrame
    combined_df = pd.concat(df_list, ignore_index=True)
    
    # 导出为单个CSV文件
    combined_df.to_csv(csv_filename, index=False, header=True)
    print(f"所有表格数据已成功合并并导出到 {csv_filename}")

关键步骤说明

  • 精准提取目标页:使用pages='1-3'参数只提取前3页的表格,避免处理第4页的无关内容
  • 处理重复表头:因为所有表格列名一致,只保留第一个表格的表头,后续表格跳过第一行表头,只取数据行
  • 合并数据集:通过pd.concat将所有DataFrame合并为一个完整的数据集,ignore_index=True重置行索引,避免索引重复
  • 导出CSV:调用to_csv时设置index=False,避免写入多余的索引列,确保输出的CSV格式干净

注意事项

如果camelot提取表格时的表头识别逻辑和预期不符(比如表头不在第一行),可以调整iloc的切片参数;如果使用flavor='stream'等提取模式,也可以结合camelot的其他参数(如columns)优化表格提取效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:50:59