Skip to page content
SAVRN
Search Plan a project

Open-weight model · Image and text to text

unlimited-ocr-mlx-coreml

by Fluid Inference Community FluidInference/unlimited-ocr-mlx-coreml

unlimited-ocr-mlx-coreml is an open-weight model for image and text to text from Fluid Inference Community, released under MIT License. Its published files total 9.3 GB. It draws 50 downloads a month.

Baidu's Unlimited-OCR (DeepSeek-OCR architecture: SAM-B + CLIP-L page encoder, 12-layer DeepseekV2 MoE decoder, 3B parameters / ~0.5B active) for Apple silicon, including its multi-page mode: up to 16 pages go in as one prompt and the whole document comes out…

Parameters—
Context—
Weights8.9 GB
Licensemit
AccessOpen weights
Monthly Downloads50

Model Card

By Fluid Inference Community, published under mit, revision 9d5f274c989a.

Baidu's Unlimited-OCR (DeepSeek-OCR architecture: SAM-B + CLIP-L page encoder, 12-layer DeepseekV2 MoE decoder, 3B parameters / ~0.5B active) for Apple silicon, including its multi-page mode: up to 16 pages go in as one prompt and the whole document comes out of a single generation as markdown, -separated, with label [x1, y1, x2, y2] layout boxes (0–999 page coordinates). Offline. Two runtimes share the Core ML page encoder: - MLX decoder (mlx/, recommended): 8-bit, upstream's R-SWA cache, ~200–260 tokens/s on an M5 Pro. Baidu's 14-page paper in one pass: 13,420 tokens in ~70 s. - Core ML decoder (UnlimitedOcrDecoder.mlpackage): stateful 8-bit, ~50 tokens/s. Runtime: UnlimitedOcrFastManager…

Read Fluid Inference Community's full model card

Baidu's Unlimited-OCR (DeepSeek-OCR architecture: SAM-B + CLIP-L page encoder, 12-layer DeepseekV2 MoE decoder, 3B parameters / ~0.5B active) for Apple silicon, including its multi-page mode: up to 16 pages go in as one prompt and the whole document comes out of a single generation as markdown, <PAGE>-separated, with <|det|>label [x1, y1, x2, y2]<|/det|> layout boxes (0–999 page coordinates). Offline.

Two runtimes share the Core ML page encoder:

  • MLX decoder (mlx/, recommended): 8-bit, upstream's R-SWA cache, ~200–260 tokens/s on an M5 Pro. Baidu's 14-page paper in one pass: 13,420 tokens in ~70 s.
  • Core ML decoder (UnlimitedOcrDecoder.mlpackage): stateful 8-bit, ~50 tokens/s.

Runtime: UnlimitedOcrFastManager (MLX) and UnlimitedOcrManager (Core ML) in FluidUse (Swift, macOS 15+), with a SwiftUI demo (UnlimitedOcrDemo): drop a PDF, every page is read in one pass while the page thumbnails highlight the block being written.

Packages

File Role Size Precision
UnlimitedOcrPageEncoder.mlpackage DeepEncoder + projector: one 1024 × 1024 page → 273 embeddings (16 rows of 16 + row newlines + view separator) 0.8 GB fp16
UnlimitedOcrDecoder.mlpackage decoder with a stateful K/V cache; functions prefill_P{384,640,1152,2304} (128 tokens per call) and decode_P… (1 token), weights shared 2.7 GB 8-bit weights (per block of 32), fp16 compute
mlx/decoder.safetensors, mlx/config.json MLX decoder (embeddings, 12 layers, SwitchGLU experts, head) 3.1 GB 8-bit affine, group 64
embeddings.f16 input token embeddings for the Core ML decoder (host-side gather) 0.3 GB fp16
tokenizer.json, config.json tokenizer; shapes, buckets, prompt token ids

Upstream's R-SWA attention keeps the whole prefix (prompt + page tokens) plus a ring of the last 128 generated tokens, so the cache has a fixed size per prefix bucket: k_cache / v_cache are Core ML state, [12 × (P + 128), 1280]. P = 384 / 640 / 1152 / 2304 holds 1 / 2 / 4 / 8 pages (each page is 273 tokens). Decoder inputs: x [1, C, 1280] embeddings, cos / sin [C, 128], additive mask [1, 1, C, P + 128 + C] (cached slots, then the C new tokens), write_idx [C] cache slots, out_index [1]; outputs the top-16 logits of each vocab half. The host (Swift runtime is the reference) assembles the prefix, places generated token t in slot P + t % 128, and applies upstream's 35-gram no-repeat ban.

Quality

Reference: upstream's own code (trust_remote_code), fp32 on CPU, greedy, same pixels.

vs upstream fp32
1 page (Baidu paper p. 4), 865 tokens identical
3 pages in one generation (p. 3–5), 2,461 tokens identical text; 2 layout-box coordinates differ by 1
4-bit decoder (not shipped) diverges at token 329

The page encoder must run on the GPU: on the Neural Engine its output is wrong (row cosine down to 0.66).

Speed (M5 Pro, 24 GB, GPU, Swift)

page encoder ~100 ms / page
prefill, 8 pages (2,189 tokens) incl. encoding 3.0 s
decode ~19 ms / token at 1 page, ~23 ms at 8 pages; flat over the whole read
Baidu paper, first 8 pages in one read: 6,727 tokens 160 s (first release; ~17% less decode time per token since)
memory 1.9 GB footprint + 2.7 GB mapped decoder weights

The decoder computes all 64 experts per token (routing weights zero the unselected ones), which keeps the graph static but reads every expert's weights on each step.

Usage (Swift)

import FluidUse
import PDFKit
import UnlimitedOcrMLX

let manager = try await UnlimitedOcrFastManager.load(from: bundleDirectory)  // MLX; UnlimitedOcrManager = Core ML
let pdf = PDFDocument(url: pdfURL)!
let pages = try (0..<min(pdf.pageCount, manager.maxPages)).map {
    try UnlimitedOcrPagePreprocessor.page(from: pdf.page(at: $0)!)
}
var text = ""
for try await event in manager.read(pages: pages) {
    if case .text(let delta) = event { text += delta }
}
print(UnlimitedOcrDocument(parsing: text).markdown)

License and credits

MIT, same as baidu/Unlimited-OCR (LICENSE is Baidu's). All model weights are Baidu's; this repository only changes their format and precision. Conversion by Fluid Inference.

Configuration

Hidden size
1,280
Head dimension
128
Vocabulary size
129,280
RoPE base
10000

Identity and Version

Repository
FluidInference/unlimited-ocr-mlx-coreml
Publisher
Fluid Inference Community
Task
Image and text to text
Modality
Image and text
Library
mlx
Parameters
Not stated by the source
Languages
mlx, ocr, moe
Revision
9d5f274c989a49f11049eeee77ed8511be3f3596
First published
2026-10-11
Last updated
2026-10-13

Files and Weights

16 files, 9.3 GB in total. The weights are 6 files totalling 8.9 GB in bin, mlmodel, safetensors.

Weights6 files · 8.9 GB
Configuration5 files · 2.8 KB
Tokenizer1 file · 10.0 MB
Documentation2 files · 5.8 KB
Other1 file · 331.0 MB
Repository1 file · 1.6 KB
Every file
FileTypeSizeSHA-256
UnlimitedOcrDecoder.mlpackage/Data/com.apple.CoreML/model.mlmodelWeights3.4 MB 4a339171fbfd
UnlimitedOcrDecoder.mlpackage/Data/com.apple.CoreML/weights/weight.binWeights2.9 GB 9dca216cc86a
UnlimitedOcrPageEncoder.mlpackage/Data/com.apple.CoreML/model.mlmodelWeights480.8 KB 7dcce3bed4dc
UnlimitedOcrPageEncoder.mlpackage/Data/com.apple.CoreML/weights/weight.binWeights806.0 MB 767a77ddc86f
mlx-turbo/decoder.safetensorsWeights2.1 GB 64111bfd978c
mlx/decoder.safetensorsWeights3.1 GB 155e9ff5f5e8
UnlimitedOcrDecoder.mlpackage/Manifest.jsonConfiguration617 B —
UnlimitedOcrPageEncoder.mlpackage/Manifest.jsonConfiguration617 B —
config.jsonConfiguration704 B —
mlx-turbo/config.jsonConfiguration479 B —
mlx/config.jsonConfiguration425 B —
LICENSEDocumentation1.1 KB —
README.mdDocumentation4.7 KB —
embeddings.f16Other331.0 MB 5d1df8b73bdf
.gitattributesRepository1.6 KB —
tokenizer.jsonTokenizer10.0 MB —

License and Download

License
mit
Access
Open weights, no gate
Download size
8.9 GB
Download from Fluid Inference Community

Released by Fluid Inference Community through its official repository on Hugging Face. Read the license.

Built From

Memory Requirements

PrecisionWeights in memory
As published8.9 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About unlimited-ocr-mlx-coreml

Can I use unlimited-ocr-mlx-coreml commercially?

Yes. unlimited-ocr-mlx-coreml is released under MIT License. The MIT License is a short permissive license. It permits commercial use, modification and redistribution, provided the copyright notice and permission notice are included.

Similar Models

Non-uniform GGUF quantizations of a 512-expert MoE, produced with GSQ and RCO, with a vision projector for multimodal use. This repository provides GGUF quantizations of Qwen3.8-Flash-Next at four sizes, together with the model's vision projector (mmproj) for multimodal use. In contrast to uniform quantization, which applies a single quantization type to all weight tensors, each model here assigns a separate quantization type to every tensor. The assignment is obtained by a gradient-based search that allocates precision according to per-tensor sensitivity, subject to a total size budget. The resulting files are standard GGUF and run unmodified in llama.cpp, Ollama, and LM Studio. A…

Open weights apache-2.0 gguf

Model · Image and text to text

Qwen3.8-27B-iMatrix-NVFP4-MTP-GGUF

Michał Piszczek

I built this quant because the ready-made FP4 file answered the wrong question. It was fast, but on my short WikiText-2 control it scored 6.4949 PPL. Plain Q40 scored 6.3798. The first higher-quality hybrid went too far the other way: good perplexity, 34.19 tok/s, and no comfortable room for 256K plus vision. This is the build that survived both gates. It is a 17.1 GB, 5.01 BPW mixed-precision GGUF of Qwen/Qwen3.8-27B. It keeps large, tolerant matrices in native NVFP4 and spends more bits on selected attention, Gated DeltaNet, and late FFN tensors. The trained MTP layer remains embedded in the same GGUF. This is not a fine-tune. I built the private calibration workload from 5,472 messages…

Open weights apache-2.0

Model · Image and text to text

Huihui-Qwen3.8-27B-abliterated-GGUF

Huihui.ai

This is an uncensored version of Qwen/Qwen3.8-27B created with abliteration (see remove-refusals-with-transformers to know more about it). This is a crude, proof-of-concept implementation to remove refusals from an LLM model without using TransformerLens. The newly added Huihui-Qwen3.8-27B-abliterated-Underdog-Saluki series come from ConwayResearch/Underdog-Saluki-27B-1.0 and ukisai/Swift-1.5-Qwen3.8-27B-GSQ-RCO-GGUF. Only layers 22 to 52 (0-based indexing) have been ablated, while the other layers remain unablated. It may come with a small disclaimer warning. Due to ConwayResearch/Underdog-Saluki-27B-1.0 not providing an imatrix file, we will attempt to perform ablation by mixing the GGUF…

Open weights apache-2.0 transformers

Qwen3.8-27B uncensored by HauhauCS 0/465 Refusals. This is the Aggressive variant: direct answers, no refusal behavior, and minimal preamble on hard prompts. Every text GGUF preserves Qwen3.8's native NextN head, and this release adds HauhauCS FastMTP: a specific acceleration sidecar qualified across the complete quant lineup at maximum native context. Vision is included through the separate BF16 projector. No changes to datasets or intended capabilities. This release preserves Qwen3.8-27B's text, reasoning, agentic, image, and video capabilities while applying the HauhauCS Aggressive uncensoring profile. Pick Aggressive when you specifically want the model to get to the answer without…

Open weights apache-2.0

Model · Image and text to text

Qwen3.8-27B-GGUF

GGML Org

Run with https://llama.app - https://huggingface.co/Qwen/Qwen3.8-27B - https://huggingface.co/incoai/Qwen3.8-27B-DFlash2 - add info

Open weights apache-2.0

Model · Image and text to text

Tiel-Coder-35B-A3B-GGUF-MTP

Saga

Tiel is the fast coder of the arsenal. At 4-bit quantization and 23 GB it fixes real codebase issues at the rate (and speed, with the right GPU) of Opus 4.6 medium, while holding the best multi-turn conversation of any local model we have measured. It is also cheerfully bad at trivia. Pick it for work. Pick something else for exams. Where it sits against the other local builds Multi-turn conversation Reasoning and knowledge Where it stands. On 25 SWE-bench-Live problems Tiel fixes 12 — the same as Opus 4.6 (medium), four more than Ornith-1.5 itself, three more than Nail, and four more than Sonnet 5 (medium). Among models of its own class it is first; the ones ahead are dense 27Bs and Opus…

Open weights mit gguf