【学习记录】如何使用 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 文档处理的最佳实践!

相关推荐
IMPYLH33 分钟前
Python 的内置函数 reversed
笔记·python
小赖同学啊3 小时前
物联网数据安全区块链服务
开发语言·python·区块链
码荼3 小时前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud
武昌库里写JAVA4 小时前
Oracle如何使用序列 Oracle序列使用教程
java·开发语言·spring boot·学习·课程设计
小陈phd4 小时前
李宏毅机器学习笔记——梯度下降法
人工智能·python·机器学习
kk爱闹4 小时前
【挑战14天学完python和pytorch】- day01
android·pytorch·python
Blossom.1184 小时前
机器学习在智能建筑中的应用:能源管理与环境优化
人工智能·python·深度学习·神经网络·机器学习·机器人·sklearn
祁思妙想4 小时前
八股学习(三)---MySQL
数据库·学习·mysql
亚力山大抵4 小时前
实验六-使用PyMySQL数据存储的Flask登录系统-实验七-集成Flask-SocketIO的实时通信系统
后端·python·flask
showyoui5 小时前
Python 闭包(Closure)实战总结
开发语言·python