OCR in Rust: ten open-source engines compared, and which to use for what
By Sheela ·

If you want to read text out of images inside a Rust program, the usual route was to bind to Tesseract and ship its C++ libraries. That is no longer the only one. There are now pure-Rust readers, wrappers around Baidu’s PaddleOCR models, ports of large vision models that turn a page into Markdown, and full document pipelines. They solve different problems, and several are one person’s project. Here are ten, grouped by what they do.
Pure Rust engines with their own models
These build with cargo alone, with no C++ toolchain. They read lines of text; they do not understand tables or page layout.
- Ocrs (3.8) is the mature choice. It runs small models through a Rust inference engine, works in WebAssembly, and its crate has about 477,000 downloads. It reads the Latin alphabet only and calls itself an early preview.
- yingkitw/ocr promises 25+ languages, eleven output formats and a model under 5MB built into the binary. It has 3 stars, no GitHub releases, and its README says Apache-2.0 while its licence file is MIT. Interesting, not yet something to depend on.
- texo-ocr (studio-ransom/best-ocr-rust) does one narrow job: it turns an image of a maths formula into LaTeX, in about 4,000 lines of Rust with no third-party crates, small enough for a Raspberry Pi. It is AGPL-3.0, which matters if you ship it in a product, has 2 stars, and every commit landed on 9 and 10 August 2026.
PaddleOCR and RapidOCR wrappers
Baidu’s PaddleOCR models are the usual answer for Chinese, Japanese, Korean and other non-Latin scripts. These projects run them without Python.
- ocr-rs (3.7), formerly rust-paddle-ocr, is the most complete. It supports PP-OCR v4, v5 and v6, covers 50 languages with the v6 models, and offers CUDA, Vulkan, Metal and OpenCL. It links Alibaba’s C++ MNN runtime and has one main maintainer.
- rusto-rs runs PaddleOCR models in pure Rust and publishes packages for Python, Node, WebAssembly, React Native, Flutter and .NET. The author reports a 5.4MB CLI and 85 to 120MB of peak memory. It has 51 stars and is almost entirely one developer’s work; v0.3.2 came out on 25 October 2026.
- rapidocr-rs ports the RapidOCR pipeline to Rust on ONNX Runtime without OpenCV. Its README says it is not a full replacement for the Python package and tracks the parity gaps. 5 stars.
- ocrs-cjk is a fork of Ocrs that adds PaddleOCR models for Chinese, Japanese and Korean and writes searchable PDFs. It has 4 stars, one release (June 2026), and no commits since 26 June.
Vision-model engines: whole pages to Markdown
These run vision-language models that read a page the way a person does, keeping tables and reading order. They need gigabytes of memory, not megabytes.
- deepseek-ocr.rs (3.6) runs DeepSeek-OCR, PaddleOCR-VL and dots.ocr on CPU, Apple Metal or (alpha) CUDA, behind an OpenAI-compatible server. PaddleOCR-VL fits in about 9GB. It is one developer’s project, and nothing has been pushed since 21 February 2026.
- franken_ocr (3.5) runs Baidu’s Unlimited-OCR on CPU with hand-written int8 code. The author’s own numbers show it about three times faster on CPU than the standard Hugging Face Python code. It has one author who does not accept outside contributions, and its licence excludes OpenAI, Anthropic and anyone working for them.
The models themselves are reviewed separately: PaddleOCR-VL 1.6 (4.4) has the highest published OmniDocBench score of the three, on Baidu’s own figures, Unlimited-OCR (4.1) handles long documents in one pass, and DeepSeek-OCR 2 (3.7) has fallen behind.
Document pipelines
- Xberg (4.1), the renamed Kreuzberg, is not an OCR engine so much as everything around one. It opens 107 file formats, offers eight OCR backends from Tesseract to the vision models above, and can be called from 15 programming languages. Run a version newer than 1.3.3: earlier ones had a high-severity flaw in its unauthenticated API.
- If Python is fine, Docling (4.5) remains our top-rated parser for PDFs with complex tables.
Which to use
English screenshots or labels in a Rust or browser app: Ocrs. Chinese, Japanese or Korean text: ocr-rs. Whole documents to Markdown on a Mac: deepseek-ocr.rs with PaddleOCR-VL. No GPU at all and long scanned documents: franken_ocr, if its licence and single maintainer suit you. Many file types, not just images, from a language other than Python: Xberg. Everything under 55 stars is worth watching, not building a business on.