Benchmarks

We run public document-conversion benchmarks against the live production pipeline at markovo.net — not a special build — and publish the method and the scores. Every number on this page is produced by the benchmark authors' own scoring code, on the benchmark's full published set.

Run 1: OpenDataLoader-Bench — 200 documents

Method

  • Dataset: opendataloader-project/opendataloader-bench — the complete published set of 200 documents with gold Markdown references, converted through the production API in fast mode (200/200 succeeded).
  • Scoring: the benchmark's own evaluator modules — evaluate_reading_order (NID), evaluate_table (TEDS), evaluate_heading_level (MHS). _s variants strip tables before comparing.
  • Coverage note: TEDS applies to the 42 documents that contain tables; MHS to the 107 with detectable headings. Metrics with no applicable content are not averaged in.
MetricScore (0–1)DocumentsWhat it measures
Reading order · NID0.925200/200text-sequence fidelity vs gold reference
Reading order · NID_s0.930200/200same, tables stripped first
Tables · TEDS0.89742/200table cell structure tree-edit distance
Tables · TEDS_s0.91442/200structure only, cell text ignored
Headings · MHS0.724107/200heading level/hierarchy match
Headings · MHS_s0.814107/200same, tables stripped first

Run 2: DP-Bench — 200 documents

Method

  • Dataset: upstage/dp-bench (Upstage) — 200 documents from Library of Congress, open educational resources and Upstage's internal set; the benchmark that introduced the NID reading-order metric.
  • Scoring: docling-project/docling-eval, markdown_text modality — our output Markdown scored directly against the gold Markdown: F1 token overlap, precision/recall, normalized edit distance, BLEU, METEOR.
  • Converter: markovo.net production API, fast mode, one document per job.
MetricScore (0–1)DocumentsWhat it measures
Token F10.877200/200word-level overlap with the gold Markdown (median 0.938)
Recall0.953200/200share of gold text present in our output
METEOR0.866200/200alignment tolerant of word order and stemming
Precision0.847200/200share of our tokens that appear in the gold reference
BLEU0.685200/200n-gram sequence overlap — stricter about exact ordering
Normalized edit distance0.271 ↓200/200character distance to gold — lower is better

Where these scores sit

OpenDataLoader-Bench ships its own leaderboard: twelve engines scored on the same 200 documents with the same metric code. Placing our run on that table — same dataset, same scorer, same overall aggregation (mean of the three metrics), scores rounded to three decimals as published:

RankEngineOverallReading order · NIDTables · TEDSHeadings · MHS
1opendataloader [hybrid]0.9070.9340.9280.821
2nutrient0.8850.9250.7080.819
3docling0.8820.8980.8870.824
4Markovo (this run)0.8720.9250.8970.724
5marker0.8610.8900.8080.796
6unstructured [hi_res]0.8410.9040.5880.749
7edgeparse0.8370.8940.7170.706
8opendataloader0.8310.9020.4890.739
8mineru0.8310.8570.8730.743
10pymupdf4llm0.7320.8850.4010.412
11unstructured0.6860.8820.0000.388
12markitdown0.5890.8440.2730.000
13liteparse0.5760.8660.0000.000

Baseline scores are the benchmark authors' published numbers, not re-run by us; our row uses the same 200 documents and the same scoring code. DP-Bench has no published leaderboard for the markdown_text modality — that metric set stands on its own.

Production limits we publish too

What this does not claim

Related: why pipeline generation decides what a benchmark can even measure · try the PDF converter · API docs