v0.4.0 — the model-zoo release
·
346 commits
to main
since this release
Four new pure-Rust, CPU-only model engines join Baidu Unlimited-OCR — all pullable with one command — plus real scanned-book support and a bit-identical 30% vision speedup.
Highlights
- The model zoo is live.
focr pull got-ocr2|smolvlm2|onechart|tromr— structured OCR (LaTeX/tables/charts/molecular/geometry/sheet music), photo description/VQA, chart→data extraction, and polyphonic sheet-music OMR to MusicXML with native full-page staff detection. Every engine hand-ported, certified against its pinned reference, and running the shared int8 kernel layer with runtime ISA dispatch (ARM SDOT/SMMLA, x86 AVX2/AVX-VNNI/AVX-512-VNNI). Decode-per-token measures 1.7–3.4× the Hugging Face CPU reference at matched threads (docs/PERF_LEDGER.md). - Scanned books actually work now.
--pages 1,5-9page selection,--split-spreadstwo-page-spread splitting (blank gaps AND dark binding shadows), and a critical fix: PDFs that rotate their scans via the content-stream matrix instead of /Rotate were being OCR'd sideways. A real 218-page scanned book went from a 10-minute garbage timeout to a 46-second correct extraction of the requested page. - 36% faster vision tower, bit-identical. Parallel attention windows + heads, hoisted rel-pos tables, division-free bias adds: SAM 5.55s → 3.4s per view, with byte-identical output and every oracle cert green. A real book page dropped from 19.3s to 13.5s end-to-end.
- TrOMR hardening. The MusicXML emitter can no longer crash on 32nd/64th notes, emits importer-legal chords, validates every document at emit time, and one bad staff no longer aborts a whole page.
Install
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/franken_ocr/main/install.sh | bash
focr pull # the default OCR model (~3.9 GB, verified)
focr ocr page.png
Windows (PowerShell): irm https://raw.githubusercontent.com/Dicklesworthstone/franken_ocr/main/install.ps1 | iex
Full details in CHANGELOG.md. Binaries are single portable files with runtime ISA dispatch; each has a .sha256 sidecar.