---
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.
---
## 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**](https://huggingface.co/NeuralMetrics/Qwen3-VL-2B-Instruct) | 2B | Our workhorse. Cheap to serve, sharp enough to hold a table together across a page break. |
| [**Nanonets-OCR-s**](https://huggingface.co/NeuralMetrics/Nanonets-OCR-s) | 3B | Document β Markdown with semantic tags: tables, checkboxes, signatures, watermarks. |
| [**DeepSeek-OCR**](https://huggingface.co/NeuralMetrics/DeepSeek-OCR) | 3B | Optical context compression β a whole page in far fewer vision tokens. Long docs get affordable. |
| [**olmOCR-7B**](https://huggingface.co/NeuralMetrics/olmOCR-7B-0225-preview) | 7B | Fully open: weights, data *and* training code. Our auditable reference point. |
| [**RolmOCR**](https://huggingface.co/NeuralMetrics/RolmOCR) | 7B | The olmOCR recipe, rebuilt for speed and lower memory. |
| [**PaddleOCR-VL**](https://huggingface.co/NeuralMetrics/PaddleOCR-VL) | 0.9B | Layout analysis from the most battle-tested OCR lineage there is. Strong multilingual. |
| [**GOT-OCR2_0**](https://huggingface.co/NeuralMetrics/GOT-OCR2_0) | 580M | Doesn't flinch at formulas, tables or dense text. Emits Markdown and LaTeX directly. |
| [**granite-docling-258M**](https://huggingface.co/NeuralMetrics/granite-docling-258M) | 258M | Emits a *document tree*, not a wall of text. First-pass structure at high volume. |
| [**Florence-2-base**](https://huggingface.co/NeuralMetrics/Florence-2-base) | 230M | OCR *with regions*. Text plus coordinates in a single pass. |
| [**trocr-base-printed**](https://huggingface.co/NeuralMetrics/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**](https://huggingface.co/NeuralMetrics/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**](https://huggingface.co/datasets/NeuralMetrics/ocr-benchmark) | End-to-end JSON accuracy, not character error rate. 99% of characters right can still get the total wrong. |
| [**cord-v2**](https://huggingface.co/datasets/NeuralMetrics/cord-v2) | The receipt benchmark everyone quotes. Line-item annotations, comparable scores. |
| [**invoices-donut-data-v1**](https://huggingface.co/datasets/NeuralMetrics/invoices-donut-data-v1) | Invoices paired with the JSON they should produce. |
| [**invoices-and-receipts-ocr-v1**](https://huggingface.co/datasets/NeuralMetrics/invoices-and-receipts-ocr-v1) | Receipts β faded thermal print, drifting columns, totals in odd places. |
| [**funsd-layoutlmv3**](https://huggingface.co/datasets/NeuralMetrics/funsd-layoutlmv3) | Noisy scanned forms with keyβvalue and entity-link ground truth. |
| [**key-information-extraction**](https://huggingface.co/datasets/NeuralMetrics/key-information-extraction) | Field-level precision and recall, straight at the core task. |
| [**DocumentVQA**](https://huggingface.co/datasets/NeuralMetrics/DocumentVQA) | Ask a page a question. Catches models that read text but misread structure. |
| [**ProcessBench**](https://huggingface.co/datasets/NeuralMetrics/ProcessBench) | Step-level evaluation. Extraction is a chain; we care *where* it breaks. |
| [**P-MMEval**](https://huggingface.co/datasets/NeuralMetrics/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](https://huggingface.co/Qwen), [IBM Granite](https://huggingface.co/ibm-granite),
> [Nanonets](https://huggingface.co/nanonets), [DeepSeek](https://huggingface.co/deepseek-ai),
> [AI2](https://huggingface.co/allenai), [Reducto](https://huggingface.co/reducto),
> [StepFun](https://huggingface.co/stepfun-ai), [PaddlePaddle](https://huggingface.co/PaddlePaddle),
> [Microsoft](https://huggingface.co/microsoft), [OmniAI](https://huggingface.co/getomni-ai),
> [NAVER CLOVA](https://huggingface.co/naver-clova-ix), [Katana ML](https://huggingface.co/katanaml-org)
> and [HuggingFaceM4](https://huggingface.co/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