What is franken_ocr?
franken_ocr runs Baidu's Unlimited-OCR, a 3B mixture-of-experts document model derived from DeepSeek-OCR, on an ordinary CPU. Instead of a general ML framework it hand-ports a few fixed models and quantises the decoder's feed-forward layers to int8 in its own .focrq format, keeping the vision tower, attention and output head at higher precision. The command-line tool, focr, ships as a 13 to 17MB binary for macOS, Linux and Windows on x86-64 and ARM64.
Besides Unlimited-OCR it runs GOT-OCR2 for formulas and tables, SmolVLM2 for image description, OneChart for chart data and Polyphonic-TrOMR, which turns scanned sheet music into MusicXML. It reads scanned PDFs natively, can parse many pages in one pass, and has an NDJSON 'robot' mode for agents.
The project started on 25 June 2026 and reached v0.9.1 on 29 September. It is one person's work, Jeffrey Emanuel's (all 792 commits), and he does not merge outside contributions. The licence is MIT plus a rider that grants no rights to OpenAI, Anthropic or anyone acting for them, which is why GitHub cannot classify it and why it is not an OSI open-source licence.
Is franken_ocr worth it?
franken_ocr is built for one job: running a modern document-parsing model on a machine with no GPU. Baidu's official Unlimited-OCR stack is Python plus CUDA; this replaces it with one binary and offline inference. In the author's performance ledger, on an Apple Silicon machine at 8 threads, one page took 8.6 seconds end to end against 28.9 seconds for the Hugging Face bf16 CPU reference, and another 14.7 against 41.3, roughly three times faster. These are his measurements, and they are unusually well documented, with losing rows kept alongside winning ones.
Accuracy holds up on his numbers but is not perfect. A historical real-page run measured a character error rate of 0.0094 against the reference decode; the current release artifact passes a 20-page corpus at an aggregate normalised error rate of 0.193, with one hard page dragging the tail. The int8 artifact for Unlimited-OCR is about 4.2GB on disk and peaks well above that, so the README itself warns that an 8GB machine will spend its time swapping.
The licence is the first thing a company's lawyers will notice. It is MIT except that OpenAI, Anthropic, their affiliates and anyone working on their behalf receive no rights at all, including to test or analyse the code. That is unlikely to touch most users directly, but it is a non-standard licence that procurement teams will flag, and contractors to either company are excluded.
The second is the bus factor. Every commit is the author's, he states that he will not merge outside pull requests, source builds need a pinned nightly Rust toolchain, and the crate has about 83 downloads on crates.io. The work is careful and the release checks are extensive, but you are adopting one person's project on his terms.
Where it earns its place
A researcher digitising scanned books on a 32GB laptop with no discrete GPU
Turn selected chapters of scanned PDFs into Markdown offline
Install the binary, run focr pull, then focr ocr book.pdf --pages 3,5-9 --split-spreads -o excerpt.md. Free; expect seconds to tens of seconds per page on CPU, with the resident daemon keeping weights loaded between runs.
A music librarian at a conservatory
Convert public-domain printed scores into editable MusicXML
focr pull tromr, then focr ocr --task music on each page; the 61MB int8 TrOMR model detects staves, recognises each and merges them. Camera photos still need flattening first, which the author lists as remaining work.
Before you commit
- Setup
- curl the install script (or PowerShell on Windows), which downloads and SHA256-checks the binary; focr pull fetches and verifies the roughly 4.2GB Unlimited-OCR artifact. Building from source needs the pinned nightly Rust toolchain.
- Integrations
- Rust library with a blocking OcrEngine API, the focr CLI, NDJSON robot mode with a published schema and stable exit codes; Markdown, JSON with boxes, figure crops and MusicXML output.
- Data and privacy
- Inference is offline once weights are installed; network use is limited to focr pull. Run history is logged to a local database (~/.cache/franken_ocr/runs.db). Licence is MIT with a rider excluding OpenAI, Anthropic and anyone acting for them.
- Cost at scale
- No paid edition; cost is CPU time. The author's ledger shows single pages taking roughly 9 to 15 seconds on 8 Apple Silicon threads, so heavy volumes still favour a GPU stack such as vLLM.
- Limits
- CPU only by design (CUDA is a 'deferred stretch goal'); five fixed models, not arbitrary ones; int4 is unvalidated; about 83 crates.io downloads and a project only four months old.
What's good
- Runs Unlimited-OCR on CPU, no Python, CUDA or GPU
- Author's ledger shows about 3x faster than the Hugging Face CPU path
- 13 to 17MB binaries for six platforms with SHA256 checks
- Extra models for formulas, charts and sheet music
What's not
- Custom licence excluding OpenAI, Anthropic and their contractors
- Single maintainer who does not merge outside contributions
- About 4.2GB model artifact; 8GB machines swap
- Source builds need nightly Rust
Best for
Individual developers and small teams who need Unlimited-OCR quality on CPU-only machines and are comfortable with a single-author project and its licence.
franken_ocr alternatives
franken_ocr: common questions
- Is franken_ocr worth it?
- franken_ocr is a serious piece of engineering that gets Unlimited-OCR onto a laptop CPU, wrapped in a licence and a governance model most companies will not sign up to. We rate it 3.5 out of 5.
- How much does franken_ocr cost?
- Free under the MIT licence with an OpenAI/Anthropic exclusion rider; model weights carry their upstream licences (Unlimited-OCR is MIT).
- What are the downsides of franken_ocr?
- Custom licence excluding OpenAI, Anthropic and their contractors; single maintainer who does not merge outside contributions; about 4.2GB model artifact; 8GB machines swap; source builds need nightly Rust.
- Who is franken_ocr best for?
- Individual developers and small teams who need Unlimited-OCR quality on CPU-only machines and are comfortable with a single-author project and its licence.
- How much does franken_ocr cost for a team or in production?
- No paid edition; cost is CPU time. The author's ledger shows single pages taking roughly 9 to 15 seconds on 8 Apple Silicon threads, so heavy volumes still favour a GPU stack such as vLLM.
- Is franken_ocr safe for company data?
- Inference is offline once weights are installed; network use is limited to focr pull. Run history is logged to a local database (~/.cache/franken_ocr/runs.db). Licence is MIT with a rider excluding OpenAI, Anthropic and anyone acting for them.
- What are the best franken_ocr alternatives?
- The closest alternatives we have reviewed are deepseek-ocr.rs, Xberg (formerly Kreuzberg), Ocrs and Docling.
Answers checked Oct 26, 2026.