---
title: "oneocr docs"
url: https://recursiveai.org/oneocr/docs/
description: "Everything about OneOcr: getting started, the page model and its JSON, how a page is read, invoices, receipts, PDFs and LLM vision, training, the…"
version: "1.0.0"
---

# oneocr docs

Everything about OneOcr: getting started, the page model and its JSON, how a page is read, invoices, receipts, PDFs and LLM vision, training, the benchmarks, and the formats.

## Start

- [Getting started](https://recursiveai.org/oneocr/docs/getting-started/index.md): Install OneOcr for .NET 10, read the text of an invoice image, walk the page model with its boxes and confidences, turn the page into Markdown, and set a…
- [Overview and benchmarks](https://recursiveai.org/oneocr/docs/overview/index.md): The README: what OneOcr does, the packages, reading a page, the page model and its JSON, invoices and receipts, PDF, LLM vision with grounding, training, determinism, limits, the models and how they were trained, and the benchmark tables against Tesseract, PaddleOCR, docTR and Apple Vision with their method.
- [Moving from Tesseract](https://recursiveai.org/oneocr/docs/migrating-from-tesseract/index.md): This guide maps what you do with the tesseract command line (or a wrapper around it) to the OneOcr API. It is based on Tesseract's public documentation…

## The page model

- [oneocr.page JSON](https://recursiveai.org/oneocr/docs/page-json/index.md): The JSON form of an OCR result: pages of blocks, lines, words and characters, with the layout elements a layout model can add (regions, tables, key–value…
- [Local Markdown](https://recursiveai.org/oneocr/docs/markdown/index.md): OcrMarkdown.ToMarkdown(page, options) (and image.ToMarkdown(), and the same on PDF pages and documents) writes a page of the page model as Markdown…
- [Table structure](https://recursiveai.org/oneocr/docs/tables/index.md): How the local reader turns a table on an image page into a Table of the page model: cells with row and column spans, empty cells, and the words in each…
- [Text normalization](https://recursiveai.org/oneocr/docs/text-normalization/index.md): The library normalizes text in three places: the extraction model's character ids (NFC), the grounding fold (NFKC) and the training agreement check (NFC).…

## Reading a page

- [Orientation and deskew](https://recursiveai.org/oneocr/docs/orientation/index.md): What the local reader does to a page image before it looks for text lines, so that scans fed in sideways, upside down or crooked are read like upright…
- [The page detector](https://recursiveai.org/oneocr/docs/detector/index.md): dbnet-lite-v1 is dbnet-lite-v0 with three optional changes. Everything else is as in v0: inputs, outputs, pre- and post-processing, layer types…
- [CTC decoding](https://recursiveai.org/oneocr/docs/decoding/index.md): Input: per-step class scores (logits, T steps of C classes, class 0 the CTC blank) from a recognizer, and the charset. Output: text and a confidence.…
- [Character language model](https://recursiveai.org/oneocr/docs/char-lm/index.md): A file holds one n-gram model of words per script. The decoder (decoding.md) uses it to rank alternative readings of a text line. It is produced by…
- [Word frequency file](https://recursiveai.org/oneocr/docs/word-lm/index.md): A file holds how often words occurred in running text. The recognizer's word segmentation (oneocr-page-v1.md, "Word segmentation") uses it to take back a…
- [Numeric rules](https://recursiveai.org/oneocr/docs/numerics/index.md): The operation order that makes the library's output bit-identical across CPU paths (scalar, 128-bit vectors, AVX2 and AVX-512), operating systems and…

## Documents, PDFs and LLMs

- [The extraction model](https://recursiveai.org/oneocr/docs/docextract/index.md): A small transformer over the words of a page. It labels words; deterministic code joins the labelled words into fields, so a value is always the text of…
- [PDF pages](https://recursiveai.org/oneocr/docs/pdf-bridge/index.md): How a PDF page becomes an oneocr.page page. All PDF parsing is OnePDF's and all drawing is the OneImage PDF bridge's; this package only converts, decides…
- [Grounding LLM output](https://recursiveai.org/oneocr/docs/grounding/index.md): Behavior of LlmClient.ReadAsync in RecursiveAI.OneOcr.Llm. Everything here is deterministic given the model's answer and the page model: no clock, no…

## Training

- [Review queue](https://recursiveai.org/oneocr/docs/review-queue/index.md): Status: current. The recognition fine-tuner (OcrTrainer, oneocr train) keeps everything in one work directory, and the review queue is a pair of JSON…
- [Backward numerics](https://recursiveai.org/oneocr/docs/backward-numerics/index.md): How gradients, the CTC loss and the optimizer step are computed, in an order that makes them bit-identical across CPU paths (scalar, 128-bit vectors…
- [Fine-tuning extraction](https://recursiveai.org/oneocr/docs/docextract-backward/index.md): The training counterpart of docextract-v0.md, written so that another implementation can reproduce the gradients and the weights. It follows…

## Reference

- [Model container](https://recursiveai.org/oneocr/docs/model-container/index.md): Status: current. Version 1 is version 0 (model-container-v0.md) with format version 1 and one added manifest member, calibration. Writers produce version…
- [Model container, version 0](https://recursiveai.org/oneocr/docs/model-container-v0/index.md): Status: superseded for new files by version 1, which adds calibration. Readers still load version 0 files; they carry no calibration.
- [Page detector, version 0](https://recursiveai.org/oneocr/docs/detector-v0/index.md): (dbnet-lite-v1 adds an optional stride-16 layout branch and a two-scale orientation head: detector-v1.md.)
- [Changelog](https://recursiveai.org/oneocr/docs/changelog/index.md): What changed in OneOcr 1.0.0, the first release.

## Cookbook

- [All recipes](https://recursiveai.org/oneocr/cookbook/index.md): 7 short, task-first recipes with complete code.
