【学习记录】如何使用 Python 提取 PDF 文件中的内容

如何使用 Python 提取 PDF 文件中的内容

在文档自动化处理、数据提取和信息分析等任务中,从 PDF 文件中提取文本是一项常见需求。PDF 文件通常分为两种类型:基于文本的 PDF包含扫描图像的 PDF

本文将介绍如何使用 Python 分别提取这两种类型的 PDF 内容,并提供完整的代码示例和实用技巧。


一、提取基于文本的 PDF 内容

1. 使用 PyPDF2 提取纯文本

PyPDF2 是一个轻量级但功能强大的库,适合用于读取和提取标准文本型 PDF 中的内容。

安装
bash 复制代码
pip install PyPDF2
示例代码
python 复制代码
import PyPDF2

def extract_text_from_pdf(pdf_path):
    with open(pdf_path, 'rb') as file:
        reader = PyPDF2.PdfReader(file)
        text = ""
        for page in reader.pages:
            text += page.extract_text()
        return text

# 使用示例
pdf_path = 'example.pdf'
extracted_text = extract_text_from_pdf(pdf_path)
print(extracted_text)

⚠️ 注意:对于格式复杂或字体嵌入的 PDF,某些页面可能无法正确提取文本。


2. 使用 pdfplumber 提取表格和布局复杂的文本

如果你需要提取含有表格、列布局或精确坐标信息的 PDF,pdfplumber 是更合适的选择。

安装
bash 复制代码
pip install pdfplumber
示例代码
python 复制代码
import pdfplumber

def extract_text_from_pdf(pdf_path):
    with pdfplumber.open(pdf_path) as pdf:
        text = ""
        for page in pdf.pages:
            text += page.extract_text()
        return text

# 使用示例
pdf_path = 'example.pdf'
extracted_text = extract_text_from_pdf(pdf_path)
print(extracted_text)

✅ 特点:支持表格识别、文字坐标定位等功能。


二、提取扫描图像型 PDF 内容(OCR)

对于由扫描图片组成的 PDF 文件,必须借助 光学字符识别(OCR)技术 来提取其中的文字。

1. 安装依赖项

你需要安装 Tesseract OCR 引擎以及对应的 Python 封装库。

Windows:
  • 下载并安装 Tesseract OCR
  • 添加 Tesseract 到系统环境变量(例如路径为 C:\Program Files\Tesseract-OCR\tesseract.exe
  • 安装 Python 库:
bash 复制代码
pip install pytesseract pillow pdf2image
  • 安装 Poppler(用于将 PDF 转换为图像):
Linux / macOS:
bash 复制代码
sudo apt install tesseract-ocr libpoppler-cpp-dev  # Ubuntu/Debian
brew install tesseract poppler                    # macOS (Homebrew)
pip install pytesseract pillow pdf2image

2. 示例代码:结合 pdf2image + pytesseract 提取扫描 PDF 内容

python 复制代码
from pdf2image import convert_from_path
import pytesseract
from PIL import Image

def extract_text_from_scanned_pdf(pdf_path):
    # 将 PDF 转换为图像列表
    images = convert_from_path(pdf_path)

    extracted_text = ""
    for image in images:
        # 对每张图片执行 OCR
        text = pytesseract.image_to_string(image)
        extracted_text += text + "\n"

    return extracted_text

# 使用示例
pdf_path = 'scanned_example.pdf'
text = extract_text_from_scanned_pdf(pdf_path)
print(text)

✅ 说明:该方法会逐页将 PDF 转换为图像,再通过 OCR 提取文字,适用于高质量扫描件。


三、总结与建议

PDF 类型 推荐库 特点
纯文本型 PDF PyPDF2pdfplumber 快速、高效,适合标准 PDF 文档
扫描图像型 PDF pdf2image + pytesseract 支持 OCR,适合图像型 PDF,但速度较慢

✅ 建议:

  • 优先判断 PDF 类型 :可以尝试用 PyPDF2 提取看看是否有返回内容,若为空则可能是扫描图像。
  • 提高 OCR 准确率 :可先对图像进行预处理(如灰度化、二值化),再传给 pytesseract
  • 多语言支持 :Tesseract 支持多种语言包,可通过 -l 参数指定语言,如 pytesseract.image_to_string(img, lang='chi_sim') 提取中文。

四、扩展功能推荐

功能 工具 描述
表格识别 camelottabula-py 专门用于提取 PDF 中表格数据
PDF 加密破解 pikepdf 可用于打开加密 PDF 文件(需密码)
PDF 合并与拆分 PyPDF2 / pypdf 拆分、合并、旋转 PDF 页面
PDF 注释提取 pdfminer.six 提供底层解析能力,适合高级用途

🔚 结语

无论是处理普通的文本型 PDF 还是扫描图像型 PDF,Python 都提供了丰富的第三方库来帮助我们实现高效的文本提取。掌握这些工具不仅能提升办公效率,还能为数据分析、文档管理、信息自动化等场景打下坚实基础。


📌 如果你正在从事数据工程、自动化脚本开发或文档处理相关的工作,熟练使用这些库将大大增强你的生产力。同时,也可以根据实际需求,结合日志记录、GUI 界面、批量处理等功能进行二次开发。

💬 欢迎留言交流你在项目中使用这些技术的经验,或者你遇到的相关问题,我们一起探讨 Python 文档处理的最佳实践!

相关推荐
Da Da 泓21 小时前
LinkedList模拟实现
java·开发语言·数据结构·学习·算法
yz178004141021 小时前
window pdf文件批量转高清图片png、jpg
pdf·bash
Larry_Yanan21 小时前
QML学习笔记(十五)QML的信号处理器(MouseArea)
c++·笔记·qt·学习·ui
zl21878654481 天前
Playwright同步、异步、并行、串行执行效率比较
开发语言·python·测试工具
larance1 天前
asyncio数据流
python
Larry_Yanan1 天前
QML学习笔记(十七)QML的属性变更信号
javascript·c++·笔记·qt·学习·ui
eqwaak01 天前
Flask实战指南:从基础到高阶的完整开发流程
开发语言·后端·python·学习·flask
GilgameshJSS1 天前
STM32H743-ARM例程9-IWDG看门狗
c语言·arm开发·stm32·单片机·嵌入式硬件·学习
月盈缺1 天前
学习嵌入式的第四十一天——ARM——时钟与定时器
arm开发·学习
努力毕业的小土博^_^1 天前
【深度学习|学习笔记】详细讲解一下 深度学习训练过程中 为什么 Momentum 可以加速训练?
人工智能·笔记·深度学习·学习·momentum