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

使用Tabula解析PDF遇问题:DataFrame所有数据集中在一列

解决Tabula解析PDF表格数据集中在一列的问题

针对你遇到的Tabula解析后所有数据挤在一列的问题,可尝试以下几种调整方案:

  • 切换解析模式
    你的代码用了lattice=True,这个模式适合有清晰单元格边框的表格。如果目标PDF的表格是靠文本间距分隔(无明显边框),换成stream=True模式大概率能解决问题:

    import tabula
    pdf_path = 'https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2024/20025679.pdf'
    df = tabula.read_pdf(pdf_path, pages='1', stream=True, multiple_tables=True)
    print(df[0].dropna(subset='ID'))
    
  • 手动指定列边界
    如果自动识别列失败,可通过columns参数手动设置列分隔的坐标(数值可以是页面宽度的比例,或实际像素值)。你可以先用Tabula的GUI工具(tabula-java自带)打开PDF,可视化调整列边界后,把对应的坐标复制到代码中:

    import tabula
    pdf_path = 'https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2024/20025679.pdf'
    # 示例坐标,需根据实际PDF调整
    df = tabula.read_pdf(pdf_path, pages='1', lattice=True, multiple_tables=True, columns=[80, 220, 350, 480, 610, 740])
    print(df[0].dropna(subset='ID'))
    
  • 精准限定表格区域
    若页面存在页眉、标题等干扰内容,可通过area参数指定表格的具体区域(格式为[top, left, bottom, right],坐标同样可通过Tabula GUI获取),避免解析范围过大导致混乱:

    import tabula
    pdf_path = 'https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2024/20025679.pdf'
    # 示例区域坐标,需根据实际PDF调整
    df = tabula.read_pdf(pdf_path, pages='1', lattice=True, multiple_tables=True, area=[[60, 20, 680, 820]], columns=[80, 220, 350, 480, 610, 740])
    print(df[0].dropna(subset='ID'))
    
  • 关闭自动猜测配合参数
    加上guess=False关闭Tabula的自动列猜测,配合手动设置的columns和area,解析精度会更高:

    df = tabula.read_pdf(pdf_path, pages='1', lattice=True, multiple_tables=True, guess=False, columns=[80, 220, 350, 480, 610, 740])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:02:14