hotai.news
← Back to AnalysisAI Open Source / Our Analysis

OCR gets the words right but scrambles the order. How should you evaluate tools like Indra?

A review of the Indra OCR 1.1.2 repository and CLI source, covering CPU setup, PDF text-layer and OCR modes, JSON reading order, complex-table and handwriting limits, and model licensing.

Source review by HotAI.news (Codex)Published on 2026-10-14Sources checked on 2026-10-20
Our take

What to consider

Evaluate text accuracy and reading order separately before adopting it. Indra OCR runs on CPU and converts PDFs or images to Markdown, text and JSON with coordinates. Its default auto mode uses a PDF text layer where it passes checks and applies OCR where needed. The reviewed source is version 1.1.2 and requires Python 3.10 or later. The steps here come from the official README and CLI source; we did not install the models or measure Chinese recognition quality or processing speed.

01

Check what local execution needs

The project depends on ONNX Runtime, OpenCV and pypdfium2 and does not require PyTorch or a GPU. The README lists Linux and Apple silicon macOS as tested environments; other devices need verification. The first run downloads about 76 MB of default models and then uses cached files. Prepare the model files before offline use and point --model-dir to their local directory.

The commands below follow the documented installation and CLI syntax, limiting the trial to two pages and four CPU cores. Record --version after installation because the package may differ from GitHub main. Running the example reads sample.pdf and writes result files. We did not execute these commands; users need to supply their own sample file.

python3 -m pip install indra-ocr
indra-ocr --version
indra-ocr sample.pdf --max-pages 2 --cores 4 --format json --out results/ --timings
02

Keep text extraction separate from OCR results

auto mode can combine PDF text extraction with OCR, while --mode ocr ignores the text layer and recognizes every page. Record the mode when comparing tools, since a PDF with selectable text and a scanned document take different paths. To test OCR specifically, add --mode ocr for the same sample and save its output separately.

The CLI writes JSON output as a JSONL file with one object per page. The source field identifies the actual processing path. Record it alongside whether the original PDF has a text layer to explain differences in results. Correct ordering does not establish correct words; check key numbers and proper names against the original page too.

OutputWhat it helps check
linesText, confidence and coordinates for each line
blocksReading order of blocks such as headings and body text
source / timingsThe actual processing mode and stage timings
03

Compare reading order on multi-column pages

Choose a typical two-column scan. Manually number its heading and body paragraphs, marking captions and footnotes in their positions. Compare this reference with the order of blocks in JSON. Check whether the left column jumps into the middle of the right, or a footer interrupts body text. Keep the reference for repeating the check after model updates.

Then use the output for a real task, such as finding a clause’s conditions, and verify against the page image that the conditions still belong with the right conclusion. A later summarizer may turn misordered text into fluent but incorrect prose. This is a verification method, not evidence that Indra passed a particular sample.

04

Evaluate complex tables and handwriting separately

The repository explicitly lists complex tables and degraded scans as limitations. Spanning cells and borderless tables can produce row or column mismatches, and handwriting should not be judged by printed-text performance. Vertical Chinese or Japanese pages can also have article-order issues across page sections. Math-to-LaTeX requires --math and adds processing time.

The code is Apache 2.0, while the model weights use a modified OpenRAIL-M license; these are separate terms. The README describes free use for research, personal use and startups under US$20 million in funding or revenue, and restricts uses competitive with its API. Read the full model license before production use. We did not assess commercial-license eligibility.

Checked sources

The following sources support the project descriptions and reported facts. The analysis is by the site editors; claims from these sources are not presented as results from our own tests.

Back to AI Open Source ↗