README / README.md
mkvn's picture
Final inventory: 11 readers, 1 retriever, 9 datasets
b086035 verified
|
Raw
History Blame Contribute Delete
6.27 kB
metadata
title: README
emoji: πŸ“„
colorFrom: indigo
colorTo: blue
sdk: static
pinned: false

Neural Metrics

Documents in. Structured data out.

We turn the world's messiest paperwork β€” scanned invoices, 200-page contracts, handwritten forms, statements that were faxed in 1998 β€” into clean, typed, schema-valid JSON.

Document extraction Stack Output


The pipeline

Stage What happens
πŸ“₯ Ingest PDFs, scans, phone photos, faxes β€” skewed, stapled, stamped and all
πŸ‘οΈ Read Vision-language OCR that keeps layout, not just characters
🧩 Structure Tables, key–value pairs and reading order recovered from the page
πŸ”Ž Ground Every field carries a bounding box, so each value traces back to the pixel it came from
βœ… Validate Constrained decoding against your schema β€” malformed JSON never leaves the building

Why we build in the open

Document AI fails in ways benchmarks rarely capture: the third column that wraps, the total that lives in the footer, the checkbox that means the opposite of what it looks like. So we work from open weights we can inspect, fine-tune and ship β€” and we publish the forks we build on.


The zoo

πŸ‘οΈ Readers β€” pixels to structure

Model Size Why it's here
Qwen3-VL-2B-Instruct 2B Our workhorse. Cheap to serve, sharp enough to hold a table together across a page break.
Nanonets-OCR-s 3B Document β†’ Markdown with semantic tags: tables, checkboxes, signatures, watermarks.
DeepSeek-OCR 3B Optical context compression β€” a whole page in far fewer vision tokens. Long docs get affordable.
olmOCR-7B 7B Fully open: weights, data and training code. Our auditable reference point.
RolmOCR 7B The olmOCR recipe, rebuilt for speed and lower memory.
PaddleOCR-VL 0.9B Layout analysis from the most battle-tested OCR lineage there is. Strong multilingual.
GOT-OCR2_0 580M Doesn't flinch at formulas, tables or dense text. Emits Markdown and LaTeX directly.
granite-docling-258M 258M Emits a document tree, not a wall of text. First-pass structure at high volume.
Florence-2-base 230M OCR with regions. Text plus coordinates in a single pass.
trocr-base-printed 334M Line-level recognition. Old, small, well understood β€” the control in every experiment.

πŸ”Ž Retrieval β€” finding it again afterwards

Model Size Why it's here
Qwen3-Embedding-0.6B 0.6B Semantic search over extracted clauses and line items. Ask a question, get the clause.

πŸ“Š Datasets β€” how we keep ourselves honest

Dataset Focus
ocr-benchmark End-to-end JSON accuracy, not character error rate. 99% of characters right can still get the total wrong.
cord-v2 The receipt benchmark everyone quotes. Line-item annotations, comparable scores.
invoices-donut-data-v1 Invoices paired with the JSON they should produce.
invoices-and-receipts-ocr-v1 Receipts β€” faded thermal print, drifting columns, totals in odd places.
funsd-layoutlmv3 Noisy scanned forms with key–value and entity-link ground truth.
key-information-extraction Field-level precision and recall, straight at the core task.
DocumentVQA Ask a page a question. Catches models that read text but misread structure.
ProcessBench Step-level evaluation. Extraction is a chain; we care where it breaks.
P-MMEval Multilingual coverage, because invoices don't only arrive in English.

Every repo here is an unmodified fork of upstream work by the Qwen, IBM Granite, Nanonets, DeepSeek, AI2, Reducto, StepFun, PaddlePaddle, Microsoft, OmniAI, NAVER CLOVA, Katana ML and HuggingFaceM4 teams. We rehost so our experiments stay reproducible and version-pinned β€” original licenses and all credit remain with the upstream authors.


Extraction you can audit, field by field.

Neural Metrics Β· document intelligence