v2.0.0

datalab-to/markerv2.0.0Jul 20, 2026by VikParuchuri

AI Summary

Marker 2.0.0 is a major rewrite focused on speed, accuracy, and full CPU support. It introduces new conversion modes, a device-aware default, and significant throughput improvements by utilizing Surya OCR 2 and a rebuilt pdftext.

Key Highlights

  • New conversion modes (balanced, fast, and no-OCR) allowing users to trade off speed and accuracy.
  • Device-aware defaults that automatically select the best mode based on available hardware (GPU vs CPU).
  • Full CPU support enabled by `fast --disable_ocr`, running entirely on CPU without a GPU or inference server.
  • Selective OCR that only calls the VLM where necessary (garbled pages, equations), improving efficiency.
  • Significant throughput improvements, reaching up to 23.7 pages per second on a single B200 GPU.

Breaking Changes

  • Requires Python 3.10+.
  • Packaging migrated from Poetry to `uv` (build backend is now hatchling).
  • Removed unused structured-extraction converters; use the Datalab API or `--use_llm` workflow instead.
  • Mode default changed from always 'balanced' to device-dependent.

New Features

  • Reproducible benchmarks harness in the `benchmarks/` directory.
  • Device-aware mode selection logic.
  • Selective OCR integration with pdftext.

Full Release Notes

# Marker 2.0.0

Marker 2 is a rewrite focused on **speed**, **full CPU support**, and **accuracy**. It's built on three new pieces we shipped over the last few months: [Surya OCR 2](https://github.com/datalab-to/surya), a 20M-param fast layout model, and a rebuilt (3× faster) [pdftext](https://github.com/datalab-to/pdftext).

Against comparable pipeline OCR systems, Marker 2 is both **faster and more accurate** — on [olmOCR-bench](https://github.com/allenai/olmocr/tree/main/olmocr/bench), balanced mode scores **76.0%** overall (83.5% on born-digital) while running over 5× more pages/sec than MinerU's pipeline backend.

## Highlights

- **Conversion modes.** Choose your speed/accuracy tradeoff:
  - `balanced` — surya VLM for layout + full-page OCR when text is bad. Highest quality; best on GPU. **76.0%** olmOCR-bench.
  - `fast` — lightweight rf-detr/onnx layout + pdftext, with minimal, surgical VLM use. **66.6%**, and far cheaper.
  - `--disable_ocr` — pure text-layer extraction, no VLM at all. Runs entirely on CPU. **43.6%**, 23.7 pg/s.
- **Device-aware default.** Mode now defaults by device automatically — `balanced` on GPU, `fast` on CPU/MPS — so you get a sensible speed/accuracy tradeoff without a flag. Override any time with `--mode`.
- **Full CPU support.** `fast --disable_ocr` needs no GPU and no inference server; the 20M layout model runs on CPU and still reads structure (columns, tables, headers).
- **Throughput by design.** Many thin CPU workers share a single surya inference server; the parent process budgets VLM concurrency across them, so throughput scales with server capacity instead of per-process VRAM. Sustained on one B200: **2.9 pg/s** balanced, **7.4 pg/s** fast, **23.7 pg/s** no-OCR.
- **Selective OCR.** Marker reads the PDF text layer with pdftext and only calls the VLM where it's needed — garbled/scanned pages, equations, low-confidence tables — instead of VLM-OCRing every page.
- **Reproducible benchmarks.** A new `benchmarks/` harness reproduces every olmOCR-bench score and throughput number in the README, for marker and competitors (MinerU, docling, liteparse).

## Breaking changes

- **Python 3.10+** required.
- Packaging moved from Poetry to **uv** (build backend is now hatchling). `pip install marker-pdf` is unchanged.
- The unused structured-extraction converter/extractors were removed; use the [Datalab API](https://www.datalab.to) or a `--use_llm` workflow for structured extraction.
- Mode default is now device-dependent rather than always `balanced` (see above).

## Install

```bash
pip install marker-pdf          # PDFs
pip install marker-pdf[full]    # + docx, pptx, xlsx, epub, html
```

## Benchmarks (olmOCR-bench, macro-average over 8 categories)

| Mode | Overall | Digital-only | Throughput (B200) |
|---|---:|---:|---:|
| balanced (GPU) | 76.0 | 83.5 | 2.9 pg/s |
| fast (GPU) | 66.6 | 71.6 | 7.4 pg/s |
| fast, no OCR (CPU) | 43.6 | 55.8 | 23.7 pg/s |

Full per-category scores, the competitive comparison, and reproduction steps are in the [README](https://github.com/datalab-to/marker#benchmarks).

For the highest possible accuracy, the hosted [Datalab API](https://www.datalab.to) runs Chandra (our document VLM) with automatic correction - free $5 in credits to try.