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

Tabula读取在线PDF表格异常:索引混乱且仅获部分行求助

PDF表格抓取异常的解决方法

问题描述

从在线PDF抓取表格时,tabula.read_pdf返回的表格列表出现异常:

  • table[0]仅包含表格第一行的部分内容
  • table[1]是PDF中随机分散的行
    需要生成所有列均为字符串类型、排版与PDF表格一致的DataFrame,用于正则提取ICD编码。

解决方案

1. 修正基础变量错误

原代码中定义了file变量,但读取时误用了file1,先修正该错误。

2. 调整Tabula读取参数

针对学术文档类的流式PDF表格,使用stream=True模式优化识别,同时指定列边界确保列划分准确,关闭multiple_tables避免表格被错误拆分。

3. 统一数据类型

将所有列转换为字符串类型,满足后续正则处理的需求。

修正后的代码

import tabula
import pandas as pd

# 修正变量名错误
file = "https://www.bmj.com/content/bmj/suppl/2015/02/03/bmj.h246.DC1/junm020747.ww1_default.pdf"

# 调整读取参数:适配流式表格,指定列边界,合并为单个表格
tables = tabula.read_pdf(
    file,
    pages=[1,2,3],
    stream=True,  # 针对流式PDF表格优化识别逻辑
    columns=[50, 150, 300, 450],  # 根据PDF实际列位置调整,可通过tabula GUI工具获取精准坐标
    guess=False,
    multiple_tables=False  # 强制将页面内表格合并为一个
)

# 获取处理后的表格
df = tables[0]

# 将所有列转换为字符串类型
df = df.astype(str)

# 验证表格内容与排版
print(df.head())

补充优化建议

  • 若列边界数值不准确,可运行tabula.gui()打开可视化工具,手动调整列位置获取精准坐标。
  • 若仍存在行拆分问题,可尝试切换为lattice=True(针对网格型表格),或通过area参数指定表格的具体区域范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:10:28