功能比较#

功能矩阵#

下表说明了 PyMuPDF 与其他典型解决方案的比较。

_images/icon-pdf.svg _images/icon-svg.svg _images/icon-xps.svg _images/icon-cbz.svg _images/icon-mobi.svg _images/icon-epub.svg _images/icon-image.svg _images/icon-fb2.svg _images/icon-txt.svg _images/icon-docx.svg _images/icon-pptx.svg _images/icon-xlsx.svg _images/icon-hangul.svg
功能 PyMuPDF pikepdf PyPDF2 pdfrw pdfplumber / pdfminer
支持多种文档格式 PDF XPS EPUB MOBI FB2 CBZ SVG TXT 图像
DOCX XLSX PPTX HWPX 参见 注意
PDF PDF PDF PDF
实现 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 页面标签 只读
支持字体子集化


_images/icon-docx.svg _images/icon-xlsx.svg _images/icon-pptx.svg _images/icon-hangul.svg

注意

关于 Office 文档类型 (DOCX, XLXS, PPTX) 和 Hangul 文档 (HWPX) 的注意事项。这些文档可以加载到 PyMuPDF 中,您将获得一个 Document 对象。

有一些需要注意的地方

  • 我们将输入转换为 HTML 来布局内容。

  • 因此,原始页面分隔将会丢失。

保存结果时,无法保证与原始布局完全一致。

因此,输入文件主要以利于文本提取的形式存在。


性能#

为了测试 PyMuPDF 在一系列任务中的性能,我们使用一个包含文本和图像的固定测试集,包含 8 个 PDF 文件,共计 7,031 页,以获取性能耗时。

以下是当前按任务分组的结果


复制

这指的是打开一个文档然后将其保存到新文件。此测试衡量读取 PDF 并将其重写为新的 PDF 的速度。此过程也是合并/拼接多个文档等功能的核心。因此,以下数字适用于 PDF 的拼接和合并。

所有 7,031 页的结果如下

600
500
400
300
200
100

3.05
10.54
33.57
494.04
PyMuPDF
PDFrw
PikePDF
PyPDF2
最快
最慢

文本提取

这指的是从文档的每一页中提取简单的纯文本,并将其存储到文本文件中。

所有 7,031 页的结果如下

400
300
200
100

8.01
27.42
101.64
227.27
PyMuPDF
XPDF
PyPDF2
PDFMiner
最快
最慢

渲染

这指的是以给定的 DPI 分辨率将文档的每一页生成图像(如 PNG)。此功能是在 GUI 窗口中显示文档的基础。

所有 7,031 页的结果如下

1000
800
600
400
200

367.04
646
851.52
PyMuPDF
XPDF
PDF2JPG
最快
最慢

注意

有关这些性能耗时方法的更多详情,请参见:性能比较方法