Introduction
EasyOCR’s accuracy. Rust’s speed and footprint.
EasyOCR is an accurate, widely used OCR toolkit — but it’s a PyTorch stack: a Python interpreter, a multi-gigabyte runtime, and a heavy process to keep warm. sceptre reimplements EasyOCR’s pipeline from scratch in Rust — CRAFT text detection followed by gen2 CRNN recognition with CTC decoding, run over ONNX — and drops the Python/torch dependency entirely, while matching EasyOCR’s output on every script it supports.
Why it exists
Section titled “Why it exists”| What you get | |
|---|---|
| Parity accuracy | Validated against real EasyOCR output across all eight gen2 scripts — text (word/char-F1) and boxes (IoU). |
| Substantially faster, less memory | Higher throughput and a fraction of the peak RSS of the Python + torch process, measured like-for-like. See Benchmarks. |
| One binary, no Python | A single executable. Models download once from Hugging Face, cache locally, and run offline thereafter. |
| Three surfaces | The same engine as a Rust library, a CLI (sceptre), and an MCP server for agents. |
| Native or pure-Rust | ONNX Runtime (ort) for native speed, or a pure-Rust backend (tract) for WASM/Android, behind one seam. |
Three surfaces
Section titled “Three surfaces”- Library — add
sceptreas a dependency and callReader::builder().build()from your own Rust code. See Library guide. - CLI — install the
sceptrebinary and run OCR from the command line or a shell pipeline. See CLI guide. - MCP server — run
sceptre mcpto expose areadtexttool to any MCP-capable agent. See MCP server guide.
sceptre targets EasyOCR’s current, actively maintained path:
- Detection: the CRAFT model only.
- Recognition: all eight gen2 (
*_g2) recognizers — English, Latin, Chinese (simplified), Japanese, Korean, Cyrillic, Telugu, Kannada. - Decoding: greedy CTC decoding.
Legacy gen1 recognizer models, DBNet detection, and beam-search decoding are out of scope. Model
ONNX artifacts are first-party exports built from EasyOCR’s weights and hosted on the
sceptre-ocr Hugging Face org (Apache-2.0). See
Models & parity and
ADR 0002
for the full rationale.