首页/AI/RAG 与向量库速查/pdfplumber 提取文本与表格

pdfplumber 提取文本与表格

pdfplumber 按字符级别访问 PDF 内容,可提取文本、表格与线条、矩形等对象,调试表格结构时能看到每个单元格的位置,适合对解析精度要求高的场景。

RAG 与向量库速查AI更新于 2026-10-13

pdfplumber 是什么

pdfplumber 把 PDF 拆到字符级别,可以取文本、表格以及线条与矩形等版面对象,还能看到每个字符的坐标与字体。它的速度不如底层库快,但调试表格结构、核对单元格位置时更直观,适合对解析精度要求高、需要人工介入的文档处理场景。

基本信息

安装pip install pdfplumber
适用有文本层的电子版 PDF,尤其是带表格的报告与报表
常用对象page.chars、page.lines、page.rects、page.extract_tables
局限纯扫描件没有文本层,必须先做 OCR

文本与表格

文本与表格
import pdfplumber

with pdfplumber.open("report.pdf") as pdf:
    page = pdf.pages[0]
    print(page.extract_text())
    for t in page.extract_tables():
        print(t[:2])   # 行列表,单元格可能为 None

查看字符与框线

查看字符与框线
chars = page.chars[:3]      # 每个字符带坐标与字体
lines = page.lines[:3]      # 表格框线
tables = page.find_tables()
print(tables[0].bbox)       # 表格区域坐标

使用要点

  • 先用 find_tables 看表格被识别成几块,再决定是否调 table_settings
  • 单元格返回 None 是常态,入库前必须补默认值并做类型校验
  • 跨页表格要按页拼接并去掉重复表头,否则表格会被切成两段
  • 按坐标把表格区域从正文里剔除,避免同一内容在正文与表格里各出现一次
  • 解析结果抽样打印到日志,便于批量任务回溯异常页

与同类工具的分工

工具强项典型用途
pdfplumber字符级坐标与框线调试表格结构核对、疑难页排查
PyMuPDF速度快、接口全大批量正文提取与版面判断
专用表格工具按线框或无框模式批量抽表成册报表转 CSV
extract_tables 支持 table_settings 调整线策略;无线框表格常需调参数,或者改用按空白分布推断列的方案。
表格数据直接入库前要做列对齐检查:列错位会让答案引用到错误数字,这类错误比检索不到更难被发现。

与快速解析库的搭配

  • 大批量正文提取交给更快的库处理,把本库留给疑难页排查
  • 解析结果异常时,用字符坐标对照另一套输出,判断是版式问题还是代码问题
  • 表格统一走同一套抽取逻辑,避免同一份文档里的表格因工具不同而格式不一致
  • 把调好的表格参数按文档模板分类保存,同类报表直接复用
  • 解析脚本保留原始坐标输出,入库后发现错位时能回查是哪一步出的问题

易错点

  • 表格单元格可能返回 None 或空串,入库前要补默认值并做校验
  • 纯扫描 PDF 没有文本层,pdfplumber 无法直接提取,需要先 OCR
  • 跨页表格不拼接,同一张表被切成互不相关的两段,答案缺行
  • 不用坐标剔除表格区域,正文与表格内容重复进入索引,占用召回名额

数据来源与参考

  • pdfplumber 官方文档(github.com/jsvine/pdfplumber)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌