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

使用pdfplumber提取扫描PDF表格时无法识别行列边界的问题求助

pdfplumber提取扫描PDF表格时无法识别行列边界的问题求助

大家好,我现在卡在了扫描版PDF的表格提取问题上,试了各种办法都没搞定,想请各位帮忙出出主意。我的想法是先把这单页PDF的提取逻辑跑通,再批量处理一堆同类型的文件。

我用pdfplumber和pandas来处理,代码如下:

import pdfplumber
import pandas as pd

pdf_path = "/Users/Blacky_1_2/Desktop/python/nominal_rolls/pdf/e011087784.pdf"
output_csv = "/Users/Blacky_1_2/Desktop/python/nominal_rolls/csvs/2nd.csv"

# 打开PDF文件
with pdfplumber.open(pdf_path) as pdf:
    p1 = pdf.pages[0]
    settings = {
        "vertical_strategy": "text",
        "horizontal_strategy": "text",
        "snap_y_tolerance": 1,
        "intersection_x_tolerance": 3,
    }
    table = p1.find_table(table_settings=settings)
    
    im = p1.to_image(resolution=150)
    im.reset().debug_tablefinder(settings)
    
    # table = pd.DataFrame(page_crop_new.extract_table(settings))
    display(im) # 显示调试用的表格识别预览图

我已经反复调整过table_settings里的各种参数,但不管怎么组合,总有几列的字段边界识别错误:

  • 当我把vertical_strategy和horizontal_strategy都设为"text"时,提取的表格里部分列的内容会串在一起,没法正确区分不同字段
  • 改成horizontal_strategy = "lines"后,虽然能看到列的分隔线,但分隔位置完全不对,和实际表格结构不匹配

除此之外我还试过这些办法,但都没效果:

  • 尝试手动指定表格的垂直线位置,也试过设置忽略表头,但都没能解决边界识别的问题
  • 换用了PyMuPDF(fitz)模块,但用正则匹配内容时也遇到了不少问题,没法干净地提取每行的各个字段

我知道这是一份比较老的扫描件,可能识别难度高,但从文件清晰度来看,应该是能正确提取出表格结构的,实在不知道该怎么调整了,求各位大佬指点!


内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 07:24:30