Python通过PyMuPDF高效处理PDF文档的操作方法

 更新时间:2025年11月18日 09:57:39   作者:Asia-Lee  
PyMuPDF(又称 fitz)是一个功能强大的Python库,用于处理PDF、XPS、EPUB、MOBI等文档格式,它基于MuPDF(轻量级 PDF 渲染引擎),提供高效的文本提取、渲染、编辑和文档分析功能,所以本文给大家介绍了Python通过PyMuPDF高效处理PDF文档的操作方法

一、PyMuPDF 核心功能

文本提取

  • 提取精确文本(保留布局信息)
  • 支持按页面、区块、单词或行提取
  • 处理加密文档(需提供密码)

文档渲染

  • 将页面转为图像(PNG/JPEG)
  • 高分辨率输出(支持缩放和旋转)

文档操作

  • 合并/拆分 PDF
  • 旋转、删除、插入页面
  • 添加文本、图像、形状(矩形/圆形等)

高级特性

  • 提取元数据、书签、链接、注释
  • 搜索文本(支持正则表达式)
  • 处理 PDF 表单(读取/填写字段)
  • 安装方法
pip install PyMuPDF

二、关键代码示例

1. 打开文档 & 提取文本

import fitz  # PyMuPDF 的导入名称

# 打开 PDF
doc = fitz.open("document.pdf")

# 提取第一页文本
page = doc.load_page(0)
text = page.get_text()
print(text)

# 按区块提取(保留位置信息)
blocks = page.get_text("blocks")
for block in blocks:
    print(block[4])  # 文本内容(block格式: (x0, y0, x1, y1, text))

2. 渲染页面为图像

# 渲染为 PNG
pix = page.get_pixmap(matrix=fitz.Matrix(2, 2))  # 缩放2倍
pix.save("page0.png")

# 指定 DPI (300 dpi)
dpi = 300
mat = fitz.Matrix(dpi / 72, dpi / 72)  # 72是默认DPI
pix = page.get_pixmap(matrix=mat)

3. 编辑 PDF

# 添加文本到新页面
new_page = doc.new_page(width=400, height=200)
new_page.insert_text((100, 50), "Hello PyMuPDF!", fontsize=24)

# 绘制红色矩形
rect = fitz.Rect(50, 70, 150, 120)
new_page.draw_rect(rect, color=(1, 0, 0), width=2)

# 保存修改
doc.save("modified.pdf")

4. 合并 PDF

doc1 = fitz.open("doc1.pdf")
doc2 = fitz.open("doc2.pdf")

# 将 doc2 插入到 doc1 末尾
doc1.insert_pdf(doc2)
doc1.save("merged.pdf")

5. 提取图像

for img_index, img in enumerate(page.get_images(full=True)):
    xref = img[0]  # 图像引用 ID
    base_image = doc.extract_image(xref)
    image_bytes = base_image["image"]
    with open(f"image_{img_index}.png", "wb") as f:
        f.write(image_bytes)

6. 搜索文本

# 搜索所有 "important" 出现的位置
areas = page.search_for("important")
for rect in areas:
    page.add_highlight_annot(rect)  # 添加高亮注释

三、相关说明

1. 性能优势

  • 速度极快:比 PyPDF2/pdfplumber 快 5-10 倍
  • 内存效率:流式处理大文件(>1GB)
  • 精确布局:保留文本位置、字体、图像坐标

2. 适用场景

  • 批量提取 PDF 文本/图像
  • 自动化生成报告(添加水印/页眉页脚)
  • 构建文档搜索引擎
  • 转换 PDF 为图像/文本文件
  • 处理扫描文档(OCR 前预处理)

3. 注意事项

  1. 安装依赖:无需额外依赖(Windows/macOS/Linux 均有预编译包)
  2. 加密文档:使用 doc.authenticate(password) 处理密码
  3. 坐标系:原点在左上角(与传统 PDF 坐标一致)
  4. 商业许可:AGPL 协议(商业应用需购买许可证)

以上就是Python通过PyMuPDF高效处理PDF文档的操作方法的详细内容,更多关于Python PyMuPDF处理PDF文档的资料请关注脚本之家其它相关文章!

相关文章

  • Python 一篇文章看懂时间日期对象

    Python 一篇文章看懂时间日期对象

    学习每一门语言多多少少会用到与时间相关的东西,咱们今天呢就谈一谈Python中的时间与日期对象。在Python中时间对象一般可以用来测量效率。日期对象用来处理日期与字符串之间的关系
    2022-03-03
  • python区块及区块链的开发详解

    python区块及区块链的开发详解

    这篇文章主要介绍了python区块及区块链的开发详解的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python list数据等间隔抽取并新建list存储的例子

    python list数据等间隔抽取并新建list存储的例子

    今天小编就为大家分享一篇python list数据等间隔抽取并新建list存储的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python脚本破解压缩文件口令实例教程(zipfile)

    Python脚本破解压缩文件口令实例教程(zipfile)

    这篇文章主要给大家介绍了关于Python脚本破解压缩文件口令(zipfile)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • 解决django model修改添加字段报错的问题

    解决django model修改添加字段报错的问题

    今天小编就为大家分享一篇解决django model修改添加字段报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python实现飞行棋游戏

    python实现飞行棋游戏

    这篇文章主要为大家详细介绍了python实现飞行棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • python自动化之如何利用allure生成测试报告

    python自动化之如何利用allure生成测试报告

    这篇文章主要给大家介绍了关于python自动化之如何利用allure生成测试报告的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Windows下搭建python开发环境详细步骤

    Windows下搭建python开发环境详细步骤

    这篇文章主要为大家详细介绍了Windows下搭建python开发环境,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Python 中包/模块的 `import` 操作代码

    Python 中包/模块的 `import` 操作代码

    这篇文章主要介绍了Python 中包/模块的 `import` 操作代码,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • Python中你应该知道的一些内置函数

    Python中你应该知道的一些内置函数

    python提供了内联模块buidin,该模块定义了一些软件开发中常用的函数,这些函数实现了数据类型的转换,数据的计算,序列的处理等功能。下面这篇文章主要给大家介绍了Python中一些大家应该知道的内置函数,文中总结的非常详细,需要的朋友们下面来一起看看吧。
    2017-03-03

最新评论