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

为何Tabula模板通过Python运行时无法导出PDF数据?

解决Tabula Python导出CSV格式异常的问题

问题原因

  1. 模板的extraction_method为guess,但代码中指定了stream=True,提取逻辑冲突,导致输出原始JSON结构而非解析后的表格。
  2. 直接使用output_path参数时,Tabula未正确将嵌套提取数据转换为CSV格式,导致文件内容为JSON结构。

解决步骤

1. 修正模板的提取方法

打开DEF.json模板,将extraction_method改为stream,与代码逻辑统一:

[{"page":1,"extraction_method":"stream","x1":27.010627264785583,"x2":212.22643048744183,"y1":107.86715812683106,"y2":152.06638389587403,"width":185.21580322265626,"height":44.19922576904297}]

2. 修改Python代码,手动解析并保存CSV

放弃output_path自动输出,手动提取有效数据并生成标准CSV:

import tabula
import pandas as pd

# 读取PDF与模板数据
extracted_data = tabula.io.read_pdf_with_template(
    input_path="C:/Users/dnalaka/Desktop/DEF.2400-20221117.pdf",
    template_path="C:/Users/dnalaka/Desktop/DEF.json",
    stream=True
)

# 提取有效字段,过滤空值
table_rows = []
for row in extracted_data[0]['data']:
    # 取每行第1和第3个字段的文本值(跳过中间空字段)
    table_rows.append([row[0]['text'], row[2]['text']])

# 转换为DataFrame并设置列名
df = pd.DataFrame(table_rows, columns=["项目", "数值"])

# 保存为标准CSV
df.to_csv("C:/Users/dnalaka/Desktop/DEF.2400-20221117.csv", index=False)

3. 最终CSV效果

运行代码后,CSV将呈现标准表格格式:

项目,数值
Net. Liq.,39,749,795
Haircut,20,659,245-
Excess,19,090,549

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:20:42