Benchmarks

Document Parsing, Measured in the Open.

Quality, speed, footprint and fees of PyMuPDF * against other document parsers. Every number on this page comes from an automated run of unmodified ParseBench on a pinned cloud instance; aggregates are ParseBench's own, and the fork holds the exact configuration, scripts and raw outputs.

Run 20260901-c7i2x-r22 repetitions2,078 documentsParseBench @ a65ca16c7i.2xlargeIntel(R) Xeon(R) Platinum 8488C

* PyMuPDF version 1.28.2 including the PyMuPDF4LLM and PyMuPDF Layout libraries.

Methodology·GitHub
ParseBench benchmark visualization
PyMuPDF
Highlights

Summary

Overall quality

Higher is better
PyMuPDF53.6
Docling48.0
LiteParse (no OCR)32.6
MarkItDown18.7

Time to first document

Lower is better
LiteParse (no OCR)0.05 s
MarkItDown0.69 s
PyMuPDF1.20 s
Docling12.11 s

Install footprint

Lower is better
LiteParse (no OCR)44 MB
MarkItDown207 MB
PyMuPDF278 MB
Docling1.6 GB

Overall quality is ParseBench's official score, averaged across its five categories. Time to first document is the median of three cold starts with models already downloaded. Install footprint reflects a clean virtual environment installed from CPU wheels, where an index choice exists.

ParseBench

How Document Parsers Perform with ParseBench

Document parsing suite by LlamaIndex: 2,078 documents scored across five categories (tables, charts, content faithfulness, semantic formatting, visual grounding), each engine run locally at its documented configuration.

How these numbers are madeOne pinned instance, one session, engines run back to back with --max_concurrent 1, repeated runs. ParseBench itself is unmodified; every category score is read verbatim from its own evaluation reports, and Overall is its leaderboard definition, the average across the five categories. Configuration, scripts and raw outputs are in the fork.

Quality vs speed

ParseBench Overall against seconds per page (p50) on a single CPU core — up and to the left is faster and higher quality.

020406080scoreseconds per page (p50)0123456789101112PyMuPDF · 53.6Docling · 48.0LiteParse (no OCR) · 32.6MarkItDown · 18.7
PyMuPDFother engines, measured here

measured on the pinned runner · category tabs pair that category's own latency · Docling latency includes a localhost HTTP hop

Engine
Overall
Tables
Charts
Vis. grounding
Content
Formatting
s/page · p50
Pages/min
Cold start
Install
Fee/1k pages
PyMuPDF
53.57
72.00
2.19
61.89
79.73
52.04
0.474
126
1.20 s
278 MB
compute
Docling
47.97
58.53
1.25
62.80
77.12
40.16
11.008
5
12.11 s
1.6 GB
compute
LiteParse (no OCR)
32.56
42.36
3.75
10.69
69.81
36.17
0.153
392
0.05 s
44 MB
compute
MarkItDown
18.74
15.77
2.02
9.90
65.21
0.81
0.113
532
0.69 s
207 MB
compute
Docling-models (VLM, hosted)VLM tier · leaderboard-cited
50.65
66.41
52.76
66.11
66.93
1.03
compute
Linux 6.17.0-1017-awsParseBench @ a65ca16run 20260901-c7i2x-r2LLM normalization off

Quality columns use ParseBench's own scoring, unmodified; PyMuPDF's category scores reproduce the published leaderboard values (tables, charts, formatting and visual grounding to the second decimal).

Latency is the pooled median over all documents' official per-document timings, measured in one session on the pinned instance; Docling runs through the official docling-serve API, so its latency includes a localhost HTTP hop and its scores are for the docling version measured here, running Docling's standard pipeline (on the same instance, docling 2.122 scores 67.1 on tables where the measured 2.124 scores 58.5, a regression between docling versions).

The cited Docling-models row is a different tier: the leaderboard measured it as a hosted VLM pipeline, which reads charts but loses formatting.

The run also measures PyMuPDF's plain text extraction as a speed baseline (0.006 s/page median); it is not a document-parsing configuration, so it is not listed as a product row, and its numbers stay in the raw run data. pypdf is absent from this run: its upstream ParseBench provider fails on the full dataset with a serialization error, which we have recorded and will report upstream.

Cold start is import plus first document in a fresh process with models on disk. Install is a clean venv without model caches. The fee column lists metered per-page charges only; "compute" means no metered fee. Italic rows are cited from the public ParseBench leaderboard, not re-run here.

PyMuPDF vs Docling

Why Teams Choose PyMuPDF

Once you know what you're building, whether RAG pipelines, automation, or document workflows, the next question is what to build it on. PyMuPDF wins on install weight, speed, and ecosystem. See exactly how it stacks up against Docling.

Compare with Docling
PyMuPDF Logo

© 2026 Artifex Software Inc. All rights reserved.