功能比较#
功能矩阵#
下表说明了 PyMuPDF 与其他典型解决方案的比较。
功能 | PyMuPDF | pikepdf | PyPDF2 | pdfrw | pdfplumber / pdfminer |
---|---|---|---|---|---|
支持多种文档格式 |
PDF XPS EPUB MOBI FB2 CBZ SVG TXT 图像 DOCX XLSX PPTX HWPX 参见 注意 |
||||
实现 | Python 和 C | Python 和 C++ | Python | Python | Python |
渲染文档页面 | 所有文档类型 | 不渲染 | 不渲染 | 不渲染 | 不渲染 |
向 PDF 页面写入文本 |
参见: Page.insert_htmlbox 或 Page.insert_textbox 或 TextWriter |
||||
支持 CJK 字符 | |||||
提取文本 | 所有文档类型 | PDF 只支持 | PDF 只支持 | ||
提取文本为 Markdown (.md) | 所有文档类型 | ||||
提取表格 | 所有文档类型 | PDF 只支持 | |||
提取矢量图形 | 所有文档类型 | 有限 | |||
绘制矢量图形 (PDF) | |||||
基于现有成熟库 | MuPDF | QPDF | |||
自动修复损坏的 PDF | |||||
加密的 PDF | 有限 | 有限 | |||
线性化 PDF | |||||
增量更新 | |||||
与 Jupyter 和 IPython Notebook 集成 | |||||
合并/拼接 PDF 与其他文档类型 | 所有文档类型 | PDF 只支持 | PDF 只支持 | PDF 只支持 | PDF 只支持 |
用于与 Tesseract 无缝集成的 OCR API | 所有文档类型 | ||||
集成的检查点/重启功能 (PDF) | |||||
PDF 可选内容 | |||||
PDF 嵌入文件 | 有限 | 有限 | |||
PDF 密文标记 | |||||
PDF 注释 | 完整 | 有限 | |||
PDF 表单字段 | 创建、读取、更新 | 有限,不支持创建 | |||
PDF 页面标签 | 只读 | ||||
支持字体子集化 |
注意
关于 Office 文档类型 (DOCX, XLXS, PPTX) 和 Hangul 文档 (HWPX) 的注意事项。这些文档可以加载到 PyMuPDF 中,您将获得一个 Document 对象。
有一些需要注意的地方
我们将输入转换为 HTML 来布局内容。
因此,原始页面分隔将会丢失。
保存结果时,无法保证与原始布局完全一致。
因此,输入文件主要以利于文本提取的形式存在。
性能#
为了测试 PyMuPDF 在一系列任务中的性能,我们使用一个包含文本和图像的固定测试集,包含 8 个 PDF 文件,共计 7,031 页,以获取性能耗时。
以下是当前按任务分组的结果
- 复制
这指的是打开一个文档然后将其保存到新文件。此测试衡量读取 PDF 并将其重写为新的 PDF 的速度。此过程也是合并/拼接多个文档等功能的核心。因此,以下数字适用于 PDF 的拼接和合并。
所有 7,031 页的结果如下
⏱
- 文本提取
这指的是从文档的每一页中提取简单的纯文本,并将其存储到文本文件中。
所有 7,031 页的结果如下
⏱
- 渲染
这指的是以给定的 DPI 分辨率将文档的每一页生成图像(如 PNG)。此功能是在 GUI 窗口中显示文档的基础。
所有 7,031 页的结果如下
⏱
注意
有关这些性能耗时方法的更多详情,请参见:性能比较方法。
许可证和版权#
PyMuPDF 和 MuPDF 现根据开源 AGPL 和商业许可协议提供。请阅读分发材料中(文件 COPYING)以及 GNU 许可页面 上提供的 AGPL 许可协议全文,以确保您的使用场景符合该许可的指南。如果您确定无法满足 AGPL 的要求,请联系 Artifex 获取有关商业许可的更多信息。
Artifex 是 MuPDF 的独家商业许可代理商。
Artifex、Artifex 徽标、MuPDF 和 MuPDF 徽标是 Artifex Software Inc. 的注册商标。
本文档涵盖截至 2025-05-22 00:00:01 的 PyMuPDF v1.26.0 功能。
PyMuPDF 和 MuPDF 的主要版本和次要版本将始终相同。只有第三个限定符(补丁级别)可能与 MuPDF 的不同。
通常 PyMuPDF 的发布频率高于 MuPDF,因此 PyMuPDF 的补丁级别通常会高于内嵌的 MuPDF。
例如,PyMuPDF-1.24.5 包含 MuPDF-1.24.2。
另请参见 pymupdf_version
和 mupdf_version
。