TeleOCR oMLX oQ5

Text-and-vision OCR checkpoint quantized on this Mac from the official TeleOCR BF16 weights. The base model is XingChen-AGI/TeleOCR revision e92585356c0d0b7b7a65938f3da035c6593cc9a6 (StarDoc-AI/TeleOCR redirects there). Upstream license is Apache-2.0. Project page: caipeng328/TeleOCR.

What this file is

model.safetensors is 1,843,848,908 bytes. Its SHA-256 is 5db10532a4dc51459a4736eb0cdf7f84e831072b79f6acbde0e7b326036f0d83. The config records affine quantization, 5 bits, group size 64.

The quantizer was oMLX quantize_oq_streaming from checkout jundot/omlx commit 70f44cfd652d2013dc0f9776dca7518e32101b00, with oq_level=5, group_size=64, BF16 residuals, text_only=False, enhanced=False, and measured layer sensitivity. Calibration used the built-in code_multilingual corpus, 128 samples of 256 tokens. It finished in 10.1 seconds and peaked at 3.339 GB of MLX memory.

An audit of this artifact found 198 language modules at 5 bits, including decoder projections, token embeddings, and the output head. 390 vision tensors remain BF16 under oMLX's native oQ policy. The whole network is not uniformly 5-bit. teleocr_mlx.py is the local adapter: TeleOCR uses 128-wide heads, bias-free projections, and per-head query/key RMSNorm, which a stock Qwen2.5-VL loader does not implement. model_file in config.json points at that adapter. modeling_naviocr.py is the upstream remote-code file shipped beside it.

The untouched BF16 source SHA-256 is 9817b18041bd96403f75e38a33b28ed0cd5fb2641f67eead673afabd3c408109.

Measured on 2 October 2026

One paired run on this 24 GB Mac, against the BF16 checkpoint, using temperature 0. These figures are that run, not a general benchmark.

Measure BF16 oQ5
Text/code character error (28 samples, 1,394 reference characters) 2.80% (39 edits) 2.80% (39 edits)
Text/code word error 14.76% 14.76%
Exact normalized text/code samples 13/28 13/28
FUNSD scanned-field character error (20 samples) 3.50% 3.50%
Structured table and formula controls 3/3 3/3
Full-page layout samples 2/2 exact 2/2 exact
Mean image-to-output time, 31 samples, one pass 0.356 s 0.191 s
Maximum MLX allocated memory during those requests 3.312 GB 2.326 GB

30 of 31 raw outputs matched. The one difference was a comma in a scanned form (ATT, GEN, ADMIN OFFICE versus ATT, GEN, ADMIN, OFFICE) and did not change the aggregate error counts. Two scanned samples were repeated for each variant and reproduced their own outputs (4/4).

The evaluation runtime was oMLX 0.7.0.dev4, MLX 0.32.2, mlx-vlm 0.7.1, and Transformers 5.17.0.

Use

Serve the parent directory with an oMLX build that can load the bundled teleocr_mlx.py adapter. The directory name is the model id.

omlx serve --model-dir /path/to/parent --host 127.0.0.1 --port 8000

Request model TeleOCR-oQ5. The October evaluation used the pinned oMLX checkout named above rather than a stock Qwen2.5-VL loader.

Downloads last month
41
Safetensors
Model size
1B params
Tensor type
U32
·
BF16
·
MLX
Hardware compatibility
Log In to add your hardware

5-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for groxaxo/TeleOCR-oQ5-MLX

Quantized
(11)
this model