StackMap
Subscribe

opendataloader-pdf vs pdf-inspector

Deterministic PDF parser for AI pipelines: #1 extraction accuracy (0.907) on its public bench, bounding boxes on every element, 0.015s/page — plus the first open PDF auto-tagging for accessibility. — versus — Firecrawl's Rust PDF triage: classifies text-based vs scanned in ~10-50ms, extracts positioned text and clean Markdown without OCR — routing the ~54% of PDFs that never needed a model.

The curated verdict

Kindred no-ML philosophy, different depth — pdf-inspector triages and extracts in 200ms; OpenDataLoader does full layout analysis with bounding boxes. Notably, pdf-inspector benchmarks itself on opendataloader-bench: same yardstick, acknowledged rivalry.

opendataloader-pdfpdf-inspector
Stars28k1.6k
Forks2.7k149
LanguageJavaRust
LicenseApache-2.0MIT
Last activityyesterday7 days ago
Topicsocr, ragocr, rag
Curated connections24

opendataloader-pdf — the curator's take

Two products in one repo, both rare: a benchmark-topping deterministic parser (Markdown/JSON/HTML with bounding boxes, XY-Cut++ reading order, 0.015s/page, hybrid AI mode when you want it) and the first open-source auto-tagging to Tagged PDF — the accessibility path, built with the PDF Association and validated by veraPDF. Java core with Python/Node SDKs. NOT fully open at the edges: PDF/UA export and the accessibility studio are the enterprise add-on, and Java 11+ is a heavier runtime than the Rust competition. Benchmark caveat: the #1 score is on their own (public, reproducible) bench — verify on your documents.

pdf-inspector — the curator's take

The router your document pipeline is missing: most stacks OCR everything, but ~54% of PDFs are text-based — this classifies in tens of milliseconds (with confidence and per-page routing), extracts locally in under 200ms, and only the genuinely scanned pages go to an expensive OCR model. Pure Rust, one dependency, bindings for Python, Node and browser WASM. NOT an OCR engine and NOT a layout-analysis heavyweight: scanned documents still need a model downstream, and complex-layout fidelity trails ML parsers — its job is knowing when you don't need them.