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

Python中使用Tabula批量转PDF为CSV仅提取第一页的问题

提取PDF全部页面并转为CSV的修复方案

你的代码只提取第一页的原因很明确:tabula.read_pdf(f, pages='all')会返回一个DataFrame列表,每个元素对应PDF里的一页内容,但你用[0]只取了列表的第一个元素(也就是第一页),自然只导出了第一页的数据。

修改后的代码

import glob
import pandas as pd
import tabula

# 注意路径里的反斜杠要转义,或者用原始字符串r'mypath\*.pdf'
path = 'mypath\\*.pdf'
for f in glob.glob(path):
    # 读取PDF所有页面,得到每页对应的DataFrame列表
    page_dfs = tabula.read_pdf(f, pages='all')
    # 确保列表不为空(避免空PDF报错)
    if page_dfs:
        # 把所有页面的DataFrame纵向拼接成一个完整的DataFrame
        full_df = pd.concat(page_dfs, ignore_index=True)
        # 生成规范的CSV文件名(替换.pdf为.csv,而不是追加.csv)
        full_df.to_csv(f.replace('.pdf', '.csv'), index=False)

关键修改点

  • 移除了[0],获取所有页面的DataFrame列表
  • 用pd.concat()将多页数据合并成一个完整的DataFrame,ignore_index=True会重置行索引,避免不同页面的索引重复
  • 优化了CSV文件名生成逻辑,从xxx.pdf.csv改成更合理的xxx.csv
  • 增加了空列表判断,防止处理空PDF时抛出异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:47:18