There are 7+ serious PDF extractors now — MarkItDown, Marker, Docling, LlamaParse, OpenDataLoader. Most hand you text and hope it’s right. pdfmux is the one that scores its own confidence per page, re-extracts the pages that fail, and routes across all of them — so your RAG pipeline is built on clean text, not silent garbage.
pip install pdfmux
copy
Every tool below is good — they’re just built for different jobs. The honest split: most are a single engine you trust blindly. pdfmux is the layer that checks the work and routes to the right engine per page.
| Tool | Best at | Per-page confidence | Auto re-extracts failures | Routes engines | Cost |
|---|---|---|---|---|---|
| pdfmux | Reliable text for RAG & agents | Yes — 4-signal | Yes | Yes — 7 backends + BYOK LLM | free · MIT |
| MarkItDown | Widest format support (Office, HTML, images) | No | No | No — single pipeline | free · MIT |
| Marker | High-quality scanned / OCR | No | No | No | free · needs GPU |
| Docling | Complex tables (97.9% TEDS) | No | No | No | free |
| LlamaParse | Hosted, hands-off | No | No | No | $3 / 1k pages · cloud |
| OpenDataLoader | Top benchmark, bounding boxes | No | No | No | free · Apache 2.0 |
| PyMuPDF / pymupdf4llm | Fastest raw text, the Python default | No | No | No | free · AGPL |
Reflects each tool’s documented features as of July 2026. “Routes engines” = automatically picks a different extractor per page. Every tool name links to its full head-to-head with install commands and tradeoffs, or see the full 7-tool comparison and all comparison posts.
Feature tables are claims. These are measurements — run 11 July 2026 on a CPU-only dev machine (no GPU), each tool in its own process with a 240-second cap per document. Versions: pdfmux 1.7.0, PyMuPDF 1.28.0, pymupdf4llm 1.28.0, MarkItDown 0.1.6, Docling 2.112.0. Two representative documents shown; six were run.
| Tool | arXiv paper, 15 pages | Apple 10-K, 121 pages | Per-page confidence out |
|---|---|---|---|
| PyMuPDF (raw text) | 0.3s | 1.2s | No |
| MarkItDown | 1.7s | 10.0s | No |
| pymupdf4llm | 5.5s | 18.4s | No |
| pdfmux (fast preset) | 6.7s | 83.9s | Yes — scored 1.0, audited |
| Docling | 67.4s | did not finish in 240s | No |
The honest read: raw PyMuPDF is the speed king and always will be — if you trust every page blindly, use it. MarkItDown is quick and solid on clean text. pdfmux spends its extra seconds classifying every page, scoring the output 0–1, and writing the audit manifest — that’s the product. Docling’s layout models want a GPU; on CPU it timed out on both 100+ page documents in this run (its table accuracy remains best-in-class where it fits). All six PDFs here were clean digital text, so pdfmux routed zero pages to OCR and scored 1.0 across the board — on scanned or degraded input the confidence signal, not the stopwatch, is what changes your outcome. Full data: benchmarks/output/compare-hub-2026-07-11 in the site repo, reproducible via compare_hub_benchmark.py.
pdfmux doesn’t only compete with Marker, Docling and LlamaParse — it certifies them. Run your current extractor, then pdfmux verify reports which pages it silently dropped. That’s the wedge no other tool offers: a free second opinion on the extraction you already trust.
Measured on 433 real customer documents — the failing run was pdfmux’s own early pipeline, which is exactly why it now flags what it can’t read instead of dropping it. Try it at pdfmux.com/audit.
Standard extractors silently fail on scanned pages (empty text), two-column layouts (scrambled reading order), and tables (lost structure). Your chunks look fine but contain broken text. pdfmux scores every page 0–1, flags the failures, and re-extracts them with a stronger backend — so your embeddings are built on clean text. It’s the only LangChain / LlamaIndex loader that attaches a per-page confidence score you can filter on before embedding.
pdfmux Cloud runs the same extraction behind a hosted API — signed per-batch manifests, per-key page quotas, free tier at 100 pages / month, paid tiers from $49. Opening to first customers in July 2026. Get early access →