Downloads · 30 days
18
8% of all-time downloads
will702/unlimited-ocr-mxfp8-mlx
unlimited-ocr-mxfp8-mlx is a image-text-to-text model from will702. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for mlx-vlm. The card lists the license as mit.
Drop-in MLX pack of sahilchachra/unlimited-ocr-mxfp8-mlx with configs fixed for native Unlimited-OCR loading on mlx-vlm 0.6+.
Downloads · 30 days
18
8% of all-time downloads
All-time downloads
225
Public
Parameters
3.3B
3.8 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors3.8 GB · 100%
How the weights are stored.
U322.9B · 88%
From the Hugging Face model README
Drop-in MLX pack of sahilchachra/unlimited-ocr-mxfp8-mlx with configs fixed for native Unlimited-OCR loading on mlx-vlm 0.6+.
| File | Upstream (old shim) | This repo |
|---|---|---|
config.json model_type | deepseekocr | unlimited-ocr |
processor_config.json processor_class | DeepseekOCRProcessor | UnlimitedOCRHFProcessor |
processor_config.json sft_format | deepseek | unlimitedocr |
| Weights | MXFP8 | unchanged |
On mlx-vlm 0.6+, the upstream deepseekocr shim often generates repetitive garbage. Routing to unlimited-ocr restores correct OCR.
See FINDINGS.md for details and benchmarks.
pip install -U "mlx-vlm>=0.6.0" pymupdf
from mlx_vlm import load, generate
from mlx_vlm.prompt_utils import apply_chat_template
from mlx_vlm.utils import load_config
model_id = "will702/unlimited-ocr-mxfp8-mlx" # update if your namespace differs
model, processor = load(model_id)
config = load_config(model_id)
prompt = apply_chat_template(processor, config, "Free OCR.", num_images=1)
out = generate(
model, processor,
prompt=prompt,
image="page.png",
max_tokens=4096,
temperature=0.0,
repetition_penalty=1.05,
)
text = out.text.replace("Ġ", " ").replace("Ċ", "\n")
print(text)
Prefer prompt Free OCR. — document parsing. often stops immediately on this MLX path.