当你需要 PDF 处理的原始速度时,PyMuPDF 是 Python PDF 库中的性能领导者。PyMuPDF 构建为 Artifex 基于 C 语言的 MuPDF 库的 Python 绑定,结合了 Python 的易用性与 C 语言级别的渲染、提取和操作 PDF 文档的性能。
PyMuPDF 处理 PDF 的速度比纯 Python 替代方案快 10-100 倍。它在毫秒内将页面渲染为图像,以精确定位提取文字,管理注释,并处理表单。除了 PDF 之外,它还支持 XPS、EPUB、MOBI、FB2 和常见的图像格式,使其成为一个多功能文档处理引擎。
性能基准
| 操作 | PyMuPDF | pypdf | pdfminer | 单位 |
|---|---|---|---|---|
| 文字提取(100 页) | 0.3 | 4.2 | 8.5 | 秒 |
| 页面渲染 | 0.05 | N/A | N/A | 秒/页 |
| 内存使用 | 45 | 120 | 200 | 1000 页的 MB |
| PDF 合并(50 个文件) | 0.8 | 2.1 | N/A | 秒 |
核心能力
| 功能 | 描述 |
|---|---|
| 页面渲染 | 以任何分辨率将页面转换为 PNG、JPEG 或 Pixmap |
| 文字提取 | 获取带有位置、字体和样式的文字 |
| 图像提取 | 以原始格式提取嵌入的图像 |
| 注释管理 | 添加、编辑和移除高亮、笔记、印章 |
| 文档转换 | 在 PDF、XPS、EPUB 和图像之间进行转换 |
渲染和提取管线
flowchart LR
A[PDF/XPS/EPUB] --> B[MuPDF 核心引擎]
B --> C{操作}
C -->|渲染| D[页面 Pixmap]
D --> E[图像输出]
C -->|提取| F[文字字典]
F --> G[结构化文字]
C -->|注释| H[注释对象]
H --> I[修改后的页面]
C -->|变换| J[旋转/缩放/裁剪]
J --> I
I --> K[保存 PDF]MuPDF 核心引擎解析文档结构并提供对每个元素的高速访问。Python 绑定将此包装为熟悉的对象,如 Document、Page 和 Pixmap,并附有直观的方法。
何时选择 PyMuPDF
当性能至关重要时,PyMuPDF 是最佳选择:渲染数千页进行预览、从大型文档存档中提取文字,或构建实时文档处理管线。其基于 C 的核心使其非常适合吞吐量至关重要的服务器端处理。代价是需要更复杂的安装过程,需要原生编译,但大多数平台都提供了预构建的 wheels。
如需更多信息,请访问 PyMuPDF GitHub 仓库 和 PyMuPDF 文档。
常见问题
Q:我需要单独安装 MuPDF 吗? A:不需要,MuPDF 与 PyMuPDF 捆绑在一起,并通过 pip 自动安装。
Q:PyMuPDF 能处理 PDF/A 文档吗? A:是的,它处理读取和写入的 PDF/A 文档。
Q:PyMuPDF 可以从扫描的 PDF 中提取文字吗? A:不能直接提取——它提取 PDF 中存储的文字。对于扫描文档,请与 OCR 库配合使用。
Q:PyMuPDF 是线程安全的吗? A:Document 对象不是线程安全的,但你可以使用多个进程进行并行处理。
Q:页面渲染支持哪些图像格式? A:PNG、JPEG、TIFF、BMP、PPM 和 PGM,支持任何分辨率或 DPI 设置。
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!