功能比较#

特性矩阵#

下表说明了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 笔记本集成
合并 / 连接 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页文本和图像的测试套件来获取性能时间。

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


Copying

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

所有7,031个页面的结果为:

600
500
400
300
200
100

seconds
3.05
10.54
33.57
494.04
PyMuPDF
PDFrw
PikePDF
PyPDF2
fastest
slowest

Text Extraction

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

所有7,031页的结果为:

400
300
200
100

seconds
8.01
27.42
101.64
227.27
PyMuPDF
XPDF
PyPDF2
PDFMiner
fastest
slowest

Rendering

这指的是在给定的DPI分辨率下,从文档的每一页生成一张图像(如PNG)。此功能是以图形用户界面窗口显示文档的基础。

所有 7,031 页的结果是:

1000
800
600
400
200

seconds
367.04
646
851.52
PyMuPDF
XPDF
PDF2JPG
fastest

注意

有关这些性能时间的 methodology 的更多细节,请参见:性能比较方法论