Releases: datalab-to/marker
Release list
Marker 2.0.0
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, a 20M-param fast layout model, and a rebuilt (3× faster) pdftext.
Against comparable pipeline OCR systems, Marker 2 is both faster and more accurate — on 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 —
balancedon GPU,faston CPU/MPS — so you get a sensible speed/accuracy tradeoff without a flag. Override any time with--mode. - Full CPU support.
fast --disable_ocrneeds 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-pdfis unchanged. - The unused structured-extraction converter/extractors were removed; use the Datalab API or a
--use_llmworkflow for structured extraction. - Mode default is now device-dependent rather than always
balanced(see above).
Install
pip install marker-pdf # PDFs
pip install marker-pdf[full] # + docx, pptx, xlsx, epub, htmlBenchmarks (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.
For the highest possible accuracy, the hosted Datalab API runs Chandra (our document VLM) with automatic correction - free $5 in credits to try.
v1.10.2
- Bump surya for upstream fix - https://github.com/datalab-to/surya/releases/tag/v0.17.1
What's Changed
- update readme by @u-ashish in #908
- Dev by @u-ashish in #909
- Fix license by @VikParuchuri in #926
- Add model license by @VikParuchuri in #928
- Tarun/surya latexfix bump by @tarun-menta in #980
- Dev by @tarun-menta in #981
Full Changelog: v1.10.1...v1.10.2
Minor fixes
What's Changed
- Fix typo in superscript/subscript condition check by @Tenkeboks in #897
- Enable passing arbitrary config by @VikParuchuri in #901
- Dev by @VikParuchuri in #902
New Contributors
- @Tenkeboks made their first contribution in #897
Full Changelog: v1.10.0...v1.10.1
New Layout Model + Misc Updates
Model Update
- Upgrade to a new layout model through surya. Major performance boost
Misc Updates
- README updates
- Added a new flag -
--html_tables_in_markdown. Whenoutput_formatis set to markdown, this will render tables using html tags, instead of the default markdown syntax.
What's Changed
- small copy + readme update by @u-ashish in #879
- Dev by @u-ashish in #880
- Layout release by @tarun-menta in #892
- Dev by @tarun-menta in #893
Full Changelog: v1.9.3...v1.10.0
Enable metadata storage
What's Changed
- Update README by @u-ashish in #872
- Add Modal example for marker deployment by @u-ashish in #850
- Dev by @u-ashish in #873
- Vik/quality by @VikParuchuri in #876
- Dev by @VikParuchuri in #877
New Contributors
Full Changelog: v1.9.2...v1.9.3
v1.9.2
Misc Updates
- Allow LLM processor to loop to improve tables further
- Detect and fix cases where table cells cut text lines to reduce hallucinations
- Update commercial terms
What's Changed
- Table Hotfixes by @tarun-menta in #865
- Vik/table loop by @VikParuchuri in #864
- Updated commercial language by @sandy0kwon in #843
- Add image format to img_to_base64 in BaseService by @EdmondChuiHW in #869
- Dev by @VikParuchuri in #868
New Contributors
- @EdmondChuiHW made their first contribution in #869
Full Changelog: v1.9.1...v1.9.2
Fix Blank Table Cells
What's Changed
- fix: make sure rounded poly == blank if all same coords by @zanussbaum in #857
- fix: blank table cells by @zanussbaum in #861
Full Changelog: v1.9.0...v1.9.1
Marker Block Mode
Moving marker to block mode inference. OCR is done at the block level now, instead of the line level. While this is a bit slower, it boosts accuracy.
What's Changed
- Marker Block Mode by @tarun-menta in #831
- Dev by @tarun-menta in #856
Full Changelog: v1.8.5...v1.9.0
Gemini JSON fix
What's Changed
- update license and README to reflect OpenRAIL license change by @sandy0kwon in #844
- Dev by @VikParuchuri in #848
New Contributors
- @sandy0kwon made their first contribution in #844
Full Changelog: v1.8.4...v1.8.5
Misc fixes
What's Changed
- fix: increase max tokens for equation processor by @zanussbaum in #828
- Add block ids to html renderer by @VikParuchuri in #840
- Fix: retry on invalid JSON from Gemini by @runarmod in #829
- Add disable_ocr_math to table processor (2) by @ArnoKlein in #826
- Fix: show tqdm total iteration count by @runarmod in #798
- Optional block ids by @VikParuchuri in #842
New Contributors
- @ArnoKlein made their first contribution in #826
Full Changelog: v1.8.3...v1.8.4