Python PDF解析利器:pdfplumber全面指南

1. 简介与安装

1.1 pdfplumber概述

pdfplumber是一个Python库,专门用于从PDF文件中提取文本、表格和其他信息。相比其他PDF处理库,pdfplumber提供了更直观的API和更精确的文本定位能力。

主要特点

  • 精确提取文本(包括位置、字体等信息)
  • 高效提取表格数据
  • 支持页面级和文档级的操作
  • 可视化调试功能
1.2 安装方法
pipinstall pdfplumber
  • 1.
1.3 基础使用示例
import pdfplumber

with pdfplumber.open("example.pdf") as pdf:
    first_page = pdf.pages[0]
    print(first_page.extract_text())
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

代码解释

  • pdfplumber.open()打开PDF文件
  • pdf.pages获取所有页面的列表
  • extract_text()提取页面文本内容

2. 文本提取功能

2.1 基本文本提取
with pdfplumber.open("report.pdf") as pdf:
    for page in pdf.pages:
        print(page.extract_text())
  • 1.
  • 2.
  • 3.

应用场景:合同文本分析、报告内容提取等

2.2 带格式的文本提取
with pdfplumber.open("formatted.pdf") as pdf:
    page = pdf.pages[0]
    words = page.extract_words()
    for word in words:
        print(f"文本: {
          
          word['text']}, 位置: {
          
          word['x0'], word['top']}, 字体: {
          
          word['fontname']}")
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

输出示例

文本: 标题, 位置: (72.0, 84.0), 字体: Helvetica-Bold
文本: 内容, 位置: (72.0, 96.0), 字体: Helvetica
  • 1.
  • 2.
2.3 按区域提取文本
with pdfplumber.open("document.pdf") as pdf:
    page = pdf.pages[0]
    # 定义区域(x0, top, x1, bottom)
    area = (50, 100, 400, 300)  
    cropped = page.crop(area)
    print(cropped.extract_text())
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

应用场景:提取发票中的特定信息、扫描件中的关键数据等

3. 表格提取功能

3.1 简单表格提取
with pdfplumber.open("data.pdf") as pdf:
    page = pdf.pages[0]
    table = page.extract_table()
    for row in table:
        print(row)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

输出示例

['姓名', '年龄', '职业']
['张三', '28', '工程师']
['李四', '32', '设计师']
  • 1.
  • 2.
  • 3.
3.2 复杂表格处理