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

使用Tabula导出PDF为CSV时缺失最后一列Quantidade,求解决方案

解决Tabula导出PDF表格缺失最后一列的问题

针对你遇到的Tabula导出CSV缺失“Quantidade”列的问题,可尝试以下几种方案:

1. 调整提取区域,确保覆盖完整表格

Tabula默认的提取区域可能未包含页面边缘的最后一列,你可以通过area参数手动指定覆盖整个页面的坐标(PDF页面坐标以左下角为原点,单位为点,标准A4页面尺寸为高792点、宽612点):

tabula.convert_into(
    "https://up2dataweb.blob.core.windows.net/bdi/BDI_03-2_20231124.pdf",
    "outputopcoes.csv",
    output_format="csv",
    pages=291,
    area=[0, 0, 792, 612]
)

若不确定精确坐标,可先用tabula.gui()打开Tabula可视化工具,手动框选完整表格区域后,复制生成的坐标参数到代码中。

2. 手动指定列边界

如果表格列的分隔位置明确,通过columns参数定义每一列的垂直分隔线坐标,能强制Tabula识别到最后一列:

tabula.convert_into(
    "https://up2dataweb.blob.core.windows.net/bdi/BDI_03-2_20231124.pdf",
    "outputopcoes.csv",
    output_format="csv",
    pages=291,
    columns=[10, 80, 150, 220, 290, 360, 430, 500, 570, 610]  # 根据实际列位置调整坐标
)

坐标值需对照PDF表格的实际布局调整,同样可通过Tabula GUI工具获取准确的列分隔坐标。

3. 切换到Stream模式提取

如果表格是文本流式布局而非网格线布局,默认的lattice模式识别精度可能不足,切换到stream模式(配合guess=False)能更精准地识别文本列:

tabula.convert_into(
    "https://up2dataweb.blob.core.windows.net/bdi/BDI_03-2_20231124.pdf",
    "outputopcoes.csv",
    output_format="csv",
    pages=291,
    stream=True,
    guess=False,
    columns=[10, 80, 150, 220, 290, 360, 430, 500, 570, 610]
)

4. 优化Pandas读取逻辑

导出CSV后,先查看原始数据结构,避免误删目标列:

# 先查看原始CSV的结构
df_raw = pd.read_csv('outputopcoes.csv')
print(df_raw.head())

# 根据实际结构调整处理逻辑,不要提前删除Unnamed列,先确认哪一列对应Quantidade
df = df_raw.rename(columns=df_raw.iloc[0]).iloc[2:]
# 检查列名是否包含Quantidade
print(df.columns)

若导出的CSV中最后一列以Unnamed开头,可直接将其重命名为Quantidade,而非直接删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:11:10