PyMuPDF

用 Python 快速提取、转换和编辑 PDF,性能强劲

PyMuPDF 是一个高性能的 Python 库,用于 PDF 及其他文档(如 EPUB)的数据提取、分析、转换和操作。它基于 MuPDF 引擎,提供丰富的 API 来解析、渲染和修改 PDF 文件。核心能力包括:从 PDF 中提取文本、图像和元数据;支持 OCR(通过 Tesseract)识别扫描件中的文字;将 PDF 转换为图片或其他格式;创建和编辑 PDF(如合并、拆分、添加水印);以及提取表格数据。其性能优越,处理大型 PDF 文件速度快,内存占用低。它解决了 Python 生态中 PDF 处理库功能不全或性能不足的问题,为开发者提供了一个集解析、转换、编辑于一体的综合工具。

开源 free 办公效率
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 10758
维护状态 活跃
是否开源 是
定价模式 free

项目数据

分类办公效率
开发团队pymupdf
所属国家
官网地址
定价模式free
价格说明开源库,基于AGPL-3.0许可证,可免费使用,无付费版本。
访问状态
是否开源是
开源协议AGPL-3.0
主要语言Python
技术栈/模型data-science,epub,extract-data,font,mupdf,ocr,pdf,pdf-documents,pymupdf,python,table-extraction,tesseract,text-processing,text-shaping,xps
GitHub 星标★ 10758
30天Star增速
HF 下载量
上线时间2012-10-06 00:00:00
最近更新2026-09-22 00:00:00
维护状态活跃
中文支持
访问方式
移动端支持
综合评分
收录时间2026-08-10
浏览次数7

使用教程

难度:入门 约 10 分钟 部署方式:库/依赖 6 步

环境要求

  • Python 3.10 – 3.14(官方预编译 wheel 覆盖范围)
  • Windows / macOS / Linux 操作系统之一
  • 如需 OCR:额外安装 Tesseract 及其语言数据文件(tessdata)
  • 若平台无预编译 wheel:需要 C/C++ 编译工具链

安装与启动步骤

  1. 1确认 Python 版本

    PyMuPDF 为 Python 3.10–3.14 提供预编译 wheel,先确认本地版本落在此区间,避免安装时源码编译。

    python --version
  2. 2安装 PyMuPDF

    README 唯一给出的安装方式,直接通过 pip 安装;无强制外部依赖,正常情况下会下载对应平台的 wheel。

    pip install pymupdf
  3. 3打开 PDF 文档

    导入 pymupdf 并打开目标文件,doc 对象即文档句柄;用 page = doc[0] 取第一页做后续处理。

    python -c "import pymupdf; doc = pymupdf.open('scanned.pdf'); page = doc[0]"
  4. 4OCR 识别扫描件

    对扫描版 PDF 页面调用 get_textpage_ocr,需指定 language 参数,再用 extractText() 取出识别文本。前提是 Tesseract 已安装并在 PATH 中。

    python -c "import pymupdf
    doc = pymupdf.open('scanned.pdf')
    page = doc[0]
    text = page.get_textpage_ocr(language='eng').extractText()
    print(text)"
  5. 5对图片做 OCR

    OCR 可作用于独立图片:先用 Pixmap 载入图片,若带 alpha 通道必须先移除,否则无法进行 OCR。

    python -c "import pymupdf
    pix = pymupdf.Pixmap('image.png')
    if pix.alpha:
        pix = pymupdf.Pixmap(pix, 0)
    "
  6. 6配置 tessdata 路径

    若未安装 Tesseract 或自动发现失败,可通过 tessdata 参数显式指定语言数据目录,或设置 TESSDATA_PREFIX 环境变量。

    export TESSDATA_PREFIX=/your/path/tessdata

关键配置

配置项必填说明示例
language是OCR 识别语言代码,支持 100 多种语言eng
tessdata否显式指定 Tesseract 语言数据目录,避免自动发现失败/your/path/tessdata
TESSDATA_PREFIX否环境变量形式的 tessdata 路径配置/your/path/tessdata

如何确认成功

执行 import pymupdf 无报错即安装成功;对扫描页调用 OCR 后能打印出识别文本即 OCR 可用。

常见问题

Q:OCR 需要额外安装 Tesseract 吗?

A:需要。PyMuPDF 使用 MuPDF 内置的 Tesseract OCR 支持,不依赖 Python 的 pytesseract,但仍需 Tesseract 的语言数据文件 tessdata,并建议安装 Tesseract 使自动发现生效。

Q:没有对应的预编译 wheel 怎么办?

A:pip 会改为从源码编译,此时平台需要具备 C/C++ 编译工具链,编译耗时更长且可能因环境缺失而失败。

Q:需要额外 pip 安装 OCR 相关依赖吗?

A:不需要。PyMuPDF 没有强制的 Python 级 OCR 依赖,OCR 能力由 MuPDF 内置的 Tesseract 支持提供。

Q:图片 OCR 报错怎么办?

A:先检查 Pixmap 是否带 alpha 通道,带的话要用 pymupdf.Pixmap(pix, 0) 移除透明通道,这是 OCR 的前置要求。

注意事项

  • PyMuPDF 无强制外部依赖,pip install pymupdf 即可完成主体安装。
  • OCR 依赖独立的 Tesseract 及其 tessdata 语言数据,需自行安装或配置路径。
  • 未显式提供 tessdata 路径时,自动发现可能调用 tesseract 可执行文件(如列出可用语言)。
  • 预编译 wheel 仅覆盖 Python 3.10–3.14,其他版本需源码编译。

核心亮点

  • 基于 MuPDF 引擎,解析和渲染 PDF 速度极快,尤其适合处理大型文件
  • 功能全面,覆盖文本提取、图像提取、OCR、转换、编辑等常见需求
  • API 设计简洁,文档丰富,上手容易,社区活跃

不足之处

  • 依赖 MuPDF 原生库,安装包体积较大,部署环境可能受限
  • 部分高级功能(如复杂表格结构识别)仍需结合其他工具或手动处理

适用场景

  • 从大量 PDF 中批量提取文本或表格数据,用于数据分析和挖掘
  • 将 PDF 转换为图片或 HTML,用于预览、展示或内容复用
  • 自动化生成或修改 PDF 报告,如添加水印、合并文档、填充表单

替代项目

pdfplumber、PyPDF2、pdfminer.six

项目介绍

PyMuPDF 是办公效率领域的开源项目,由 pymupdf 开发,2012 年首次发布。

在全站 13,090 个收录项目中,它的 GitHub 星标数(10,758)位列前 5%,在办公效率分类的 142 个项目里位列前 10%。

近 41 天,它的 GitHub 星标从 10,460 增加到 10,758,净增 298。

项目目前处于活跃维护状态,最近一次代码更新于 2026-09-22。开源库,基于AGPL-3.0许可证,可免费使用,无付费版本。

它主要面向的使用场景是:从大量PDF中批量提取文本或表格数据,用于数据分析和挖掘。同类可对比的替代方案包括 pdfplumber、PyPDF2、pdfminer.six。

上一篇:markitdown

下一篇:Stirling PDF

同类项目推荐

sunshine-control-panel 开源

一站式管理游戏库、监控内存,AI 助手加持,让大屏启动更高效。

Sunshine Foundation 大屏桌面管理器 | Tauri + Vue 3,游戏库管理、米塔AI助手、内存监控···

★ 444 2026-08-09
Stirling PDF 开源

本地部署 PDF 工具箱

#1 PDF Application on GitHub that lets you edit PDFs on any device anywhere

★ 92816 2026-08-19
obsidian-md2wechat 开源

一键将 Obsidian 笔记排版成公众号文章,告别手动调格式

Obsidian → WeChat | Obsidian 插件一键排版发布到微信公众号,键排版发布到微信公众号:···

★ 318 2026-08-09
pdf2md 开源

浏览器里直接把 PDF 变成 Markdown,不用上传,隐私安全。

Browser based tool to convert PDFs to Markdown

★ 381 2026-08-09