Skip to content

sceptre

EasyOCR's accuracy. Rust's speed and footprint.

sceptre is a from-scratch Rust reimplementation of EasyOCR’s pipeline — CRAFT text detection then gen2 CRNN recognition with CTC decoding, over ONNX. It agrees with EasyOCR’s output on every script it supports, runs faster with no Python runtime, and ships as one self-contained binary. Use it as a library, a CLI, or an MCP server.

Parity accuracy

Validated against real EasyOCR output across all eight gen2 scripts — English, Latin, Chinese, Japanese, Korean, Cyrillic, Telugu, Kannada — on both text and boxes, to a per-image word-F1 and box-IoU floor rather than character-for-character equality.

Faster, warm or cold

Higher throughput than EasyOCR’s warm reader on the same corpus — and a cold, one-shot CLI run still beats it. See Benchmarks for the measured numbers.

Memory tracks the model, not a runtime

Peak memory is dominated by the CRAFT detector both engines share, so it scales with page size rather than with the process behind it — no interpreter or torch runtime to add on top. See Benchmarks.

One binary, no Python

A single static executable. Models download once, cache locally, and run offline thereafter. cargo install and go — nothing to pip install.

Three surfaces

The same engine as a Rust library, a CLI (sceptre), and an MCP server for agents — drop it into a service, a shell pipeline, or an AI tool.

Native or pure-Rust

ONNX Runtime (ort) for native speed, or a pure-Rust backend (tract) for WASM / Android — behind one backend seam.

Terminal window
cargo install sceptre-cli
sceptre run receipt.png --lang english --format json

Models — CRAFT plus the gen2 recognizers — are fetched from Hugging Face on first use, cached under the standard HF cache, and sha256-verified. Every run after that is offline.