使用Python提取PDF文件中内容的代码示例和使用技巧

 更新时间:2025年07月10日 10:26:01   作者:行云流水剑  
在文档自动化处理、数据提取和信息分析等任务中,从 PDF 文件中提取文本是一项常见需求,PDF 文件通常分为两种类型:基于文本的 PDF 和 包含扫描图像的 PDF,本文将介绍如何使用 Python 分别提取这两种类型的 PDF 内容,需要的朋友可以参考下

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

1. 使用 PyPDF2 提取纯文本

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

安装

pip install PyPDF2

示例代码

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 是更合适的选择。

安装

pip install pdfplumber

示例代码

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 库:
pip install pytesseract pillow pdf2image
  • 安装 Poppler(用于将 PDF 转换为图像):

Linux / macOS:

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 内容

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 类型推荐库特点
纯文本型 PDFPyPDF2 或 pdfplumber快速、高效,适合标准 PDF 文档
扫描图像型 PDFpdf2image + pytesseract支持 OCR,适合图像型 PDF,但速度较慢

建议:

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

四、扩展功能推荐

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

结语

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

以上就是使用Python提取PDF文件中内容的代码示例和使用技巧的详细内容,更多关于Python提取PDF文件内容的资料请关注脚本之家其它相关文章!

相关文章

  • python实战之实现excel读取、统计、写入的示例讲解

    python实战之实现excel读取、统计、写入的示例讲解

    下面小编就为大家分享一篇python实战之实现excel读取、统计、写入的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python中常见的矩阵运算详解

    Python中常见的矩阵运算详解

    这篇文章主要介绍了Python中常见的矩阵运算详解,所谓的数据处理,其本质大都可以归为矩阵运算,因为需要处理的数据大都是矩阵或向量的形式,一个工具适不适合做数据处理,一个重要的指标的就是支不支持矩阵运算,需要的朋友可以参考下
    2023-08-08
  • 使用python3批量下载rbsp数据的示例代码

    使用python3批量下载rbsp数据的示例代码

    这篇文章主要介绍了使用python3批量下载rbsp数据的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 浅谈pytorch卷积核大小的设置对全连接神经元的影响

    浅谈pytorch卷积核大小的设置对全连接神经元的影响

    今天小编就为大家分享一篇浅谈pytorch卷积核大小的设置对全连接神经元的影响,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 关于TensorFlow新旧版本函数接口变化详解

    关于TensorFlow新旧版本函数接口变化详解

    今天小编就为大家分享一篇关于TensorFlow新旧版本函数接口变化详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python 测试框架unittest和pytest的优劣

    Python 测试框架unittest和pytest的优劣

    这篇文章主要介绍了Python 测试框架unittest和pytest的优劣,帮助大家更好的进行python程序的测试,感兴趣的朋友可以了解下
    2020-09-09
  • 详解Python中的正则表达式

    详解Python中的正则表达式

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。本文给大家带来了python中的正则表达式,感兴趣的朋友一起看看吧
    2018-07-07
  • 在Django框架中伪造捕捉到的URLconf值的方法

    在Django框架中伪造捕捉到的URLconf值的方法

    这篇文章主要介绍了在Django框架中伪造捕捉到的URLconf值的方法,Django是Python各色人气框架中最为著名的一个,需要的朋友可以参考下
    2015-07-07
  • Python利用flask sqlalchemy实现分页效果

    Python利用flask sqlalchemy实现分页效果

    这篇文章主要为大家详细介绍了利用flask sqlalchemy实现分页效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • python入门教程 python入门神图一张

    python入门教程 python入门神图一张

    这篇文章主要介绍了Python 10分钟入门教程,分享一张Python入门神图一张,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03

最新评论