alt.freeweights.minicpm / MiniCPM-OCR-1.0-gguf
From: openbmb <huggingface.co/openbmb>Newsgroups: alt.freeweights.minicpmSubject:

MiniCPM-OCR-1.0-gguf

Date: 2026-11-15Commit: 0133ad8Signed: 2DC28CC7B26A283B ✓

Image text to text model. Gguf weights, 8.23 GB in all. Published by openbmb under Apache-2.0.

minicpm8.23GBMiniCPM-OCR-1.0-ggufggufpermissive
FactsParamsnot statedSize8.23 GBFormatsggufTaskimage text to textLicenseApache-2.0From sourcepermissive
$ fw get openbmb/MiniCPM-OCR-1.0-gguf
# manifest sha256 38b0449579c2… · 8.23 GB · 16 files
$ fw verify ./MiniCPM-OCR-1.0-gguf openbmb/MiniCPM-OCR-1.0-gguf
From sourceHosted (signed)openbmb/MiniCPM-OCR-1.0-ggufLast check: 2026-11-15 04:38 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Quantized of MiniCPM-V-4.6.

Works with

Convert with

Overview

Size
8.23 GB
Weights
501 MB (smallest of 11 GGUF variants)
Parameters
not stated
Formats
gguf
Task
image text to text
License
Apache-2.0 (permissive)
Files
16, each with a sha256
Publisher
openbmb
Added
2026-11-15
Section
alt.freeweights.minicpm
Lineage

Original release from the publisher.

Base model: openbmb/MiniCPM-V-4.6

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 04:38 UTCpassed

Model card

From the publisher at commit 0133ad8. Shown as plain text with links; images open at the publisher.

MiniCPM logo

Usage Guide

| πŸš€ Free API

Try it online for free, then call the API from your own code.

Playground (CN / Global)

API docs (CN / Global)

| πŸ€– Agent Skill

One prompt: the agent installs it and parses your first document.

SKILL.md

| πŸ’» Self-hosting

vLLM / SGLang / llama.cpp / Ollama, plus an official Docker image. Data stays on your side.

Deployment guide

| πŸ“± Mobile App

On-device and offline. Document parsing is iOS-only for now.

iOS Demo

Demo (CN / Global) &nbsp;Β·&nbsp; GitHub &nbsp;Β·&nbsp; SDK usage &nbsp;Β·&nbsp; DSpark &nbsp;Β·&nbsp; Discord &nbsp;|&nbsp; δΈ­ζ–‡

This repository hosts the GGUF build of MiniCPM-OCR 1.0 for llama.cpp. For the original weights, the full model card, and benchmarks, see the base repository.

MiniCPM-OCR 1.0 (1.3B) parses documents into text, tables, formulas, charts, and seals, and supports key information extraction, for Chinese and English documents and PDFs.

Files#

Every tier needs the vision projector as well β€” --model takes the LLM GGUF, --mmproj takes the projector:

FileSizeNotes
mmproj-model-f16-4x.gguf0.901 GBvision projector, 4Γ— downsample β€” required
MiniCPM-OCR-1_0-F16.gguf1.516 GBreference, no quantization
MiniCPM-OCR-1_0-Q8_0.gguf0.812 GBnear-lossless
MiniCPM-OCR-1_0-Q6_K.gguf0.630 GBgood quality/size balance
MiniCPM-OCR-1_0-Q5_K_M.gguf0.578 GBsmaller, still strong
MiniCPM-OCR-1_0-Q5_K_S.gguf0.563 GB
MiniCPM-OCR-1_0-Q5_1.gguf0.595 GB
MiniCPM-OCR-1_0-Q5_0.gguf0.563 GB
MiniCPM-OCR-1_0-Q4_K_M.gguf0.529 GBsmallest recommended
MiniCPM-OCR-1_0-Q4_K_S.gguf0.505 GB
MiniCPM-OCR-1_0-Q4_1.gguf0.532 GB
MiniCPM-OCR-1_0-Q4_0.gguf0.501 GB

The projector is 4Γ— only; there is no 16Γ— variant for this model.

Which tier#
TierTable / dense text / XML
F16baseline
Q8_0lossless / β‰ˆlossless β€” recommended balance
Q4_K_Mlossless on tables, small degradation on dense text; closing-tag slashes may drop in code-heavy documents

Prefer Q8_0 for code- or XML-heavy pages.

Parsing pipeline#

MiniCPM-OCR 1.0 parses full documents as a two-stage pipeline orchestrated by the minicpm-ocr SDK. The two stages use separate models, run in separate environments, and may run on different machines:

  • Stage 1 β€” Layout detection (SDK environment). The PP-DocLayoutV3 layout model detects document regions β€” text, tables, formulas, charts, seals β€” and determines reading order; the SDK crops each region. It runs locally inside the SDK environment and requires PaddlePaddle / PaddleX.
  • Stage 2 β€” Region recognition (inference service). The SDK sends each cropped region over HTTP to a MiniCPM-OCR 1.0 inference service β€” served by vLLM, SGLang, llama.cpp, or Ollama β€” with a prompt matching the region type, then assembles the recognized content into the final Markdown / JSON in reading order.

Image: Parsing pipeline: in the minicpm-ocr SDK environment, the PP-DocLayoutV3 layout model detects and crops document regions; each cropped region is sent over HTTP to a separate recognition service running MiniCPM-OCR 1.0 (vLLM, SGLang, llama.cpp, or Ollama); the SDK then assembles the recognized text, tables, formulas, charts, and seals into Markdown and JSON in reading order.

See the model guide for more on architecture, parsing workflow, deployment options, and benchmark breakdowns.

Quick start#

Use with the MiniCPM-OCR SDK#

Required before using either the CLI or Python API: deploy and start the OCR model service first, and wait until it is ready to accept requests. The SDK examples below are clients of that running service; they do not deploy or start the OCR model service automatically.

Use the official minicpm-ocr SDK to parse local images or PDFs with this GGUF checkpoint. The SDK detects layout with PP-DocLayoutV3, recognises each region, and saves structured JSON and Markdown in reading order.

Install Python 3.10+ and the SDK:

pip install "minicpm-ocr[all]"

Install minicpm-ocr for your platform using the installation guide.

Prerequisite: deploy and start the model service#

Before running the SDK, start a llama.cpp recognition service using this repository's MiniCPM-OCR-1_0-Q8_0.gguf and the required mmproj-model-f16-4x.gguf vision projector. Follow the llama.cpp deployment guide. For the SDK examples below, configure the service with --port 8080, --alias minicpm-ocr, --ctx-size 8192, --parallel 1, and --jinja --reasoning off. If you keep the guide's port 18499, change the SDK URL to match. DSpark setup, when used, is covered by the same guide.

The SDK uses the llamacpp backend, an 8192-token context, and one recognition request at a time. Layout detection runs on CPU in these examples; the recognition service can independently use Metal, CUDA, or CPU. If you increase the service context per request slot, update engine.max_model_len accordingly.

CLI#

Start the model service described above and wait until it is ready before running this command. Save a local image as demo.png, then run:

minicpmvocr parse demo.png \
  --backend llamacpp \
  --server-url http://127.0.0.1:8080 \
  --model minicpm-ocr \
  --device cpu \
  --set engine.max_model_len=8192 \
  --workers 1 \
  --set pipeline.queue_mode=serial \
  --set pipeline.overlap_layout=false \
  --set run.run_root=output \
  --output output/demo.md

The CLI automatically downloads PP-DocLayoutV3 to models/PP-DocLayoutV3_infer/ when needed. The final Markdown is saved to output/demo.md; structured JSON and per-page Markdown are kept in output/<run_tag>/results_json/ and output/<run_tag>/output/.

Python API#

The model service described above must already be running before you execute this Python example. Set engine.server_url and engine.model_name to match that service.

The same pipeline is available from Python:

from importlib.resources import files
from pathlib import Path

from minicpmvocr import load_config, pipelined_run
from minicpmvocr.layouts.download import ensure_layout_model


def main():
    layout_model = ensure_layout_model(Path("models/PP-DocLayoutV3_infer"))

    cfg = load_config(
        str(files("minicpmvocr").joinpath("configs/minicpmvocr.yaml")),
        overrides={
            "input": {"file_path": str(Path("demo.png").resolve())},
            "engine": {
                "type": "llamacpp",
                "server_url": "http://127.0.0.1:8080",
                "model_name": "minicpm-ocr",
                "max_model_len": 8192,
            },
            "layout": {
                "model_dir": str(layout_model),
                "device": "cpu",
            },
            "pipeline": {
                "overlap_layout": False,
                "queue_mode": "serial",
                "max_workers": 1,
            },
            "run": {"run_root": str(Path("output").resolve())},
        },
    )

    pipelined_run(cfg)

    print("JSON directory:", cfg["_meta"]["result_json_dir"])
    print("Markdown directory:", cfg["_meta"]["output_dir"])


if __name__ == "__main__":
    main()

ensure_layout_model() reuses or downloads the official layout model. Results are written to output/<run_tag>/results_json/ and output/<run_tag>/output/. To parse a PDF, replace demo.png with its local path.

For CUDA layout detection, change --device cpu to --device cuda:0 in the CLI, or set layout.device to cuda:0 in Python, after installing the matching PaddlePaddle runtime. Keep SDK recognition concurrency aligned with the llama.cpp service's request slots.

Run minicpmvocr parse --help for CLI options, or see the SDK API reference for configuration and document-level Markdown export.

Performance#

Single RTX 5090 (32 GB), F16 weights: model + projector load β‰ˆ2.3 s; one table crop (1,312 prompt / 265 output tokens) β‰ˆ1.0 s; VRAM β‰ˆ26 GB at --ctx-size 40960. CPU-only (48 threads): one table image end-to-end (layout + recognition + assembly) β‰ˆ21 s.

Build llama.cpp and further options: llama.cpp deployment guide.

FormatHugging FaceModelScope
BF16 (original)πŸ€—ModelScope
GGUF (llama.cpp) (this repo)πŸ€—ModelScope
AWQ W4A16πŸ€—ModelScope
GPTQ W4A16πŸ€—ModelScope
DSpark draft (BF16)πŸ€—ModelScope
DSpark draft (GGUF)πŸ€—ModelScope

Speculative decoding works in llama.cpp with the DSpark draft GGUF via --spec-type draft-dspark.

FAQ#

Installation, model downloads, GPU memory, input formats, and unexpected outputs: FAQ.

License#

Model weights, code, and documentation are released under the Apache License 2.0.

Files

16 files Β· 8.23 GBWeights 501 MB (smallest of 11 GGUF variants). Sizes and sha256 from the signed manifest.
Hide all 16 files with their sha256
FileSizesha256
.gitattributes2.47 KB8859c63c084574197d47fe3b051c79e6a4951e1012d50d3e1601daf596d64a82
MiniCPM-OCR-1_0-F16.gguf1.52 GB49d08e4dfb3310df2873828257f23fec53d3defad1782ae1fc78cae76dda1859
MiniCPM-OCR-1_0-Q4_0.gguf501 MB9c193d8e51755a52d759f6c6c8ec4793243226b2c9e7ee0650cd990627aae87c
MiniCPM-OCR-1_0-Q4_1.gguf532 MB79a53427f8a2561f640a84743b9963e577277c681454550ff53a56bf3efd0643
MiniCPM-OCR-1_0-Q4_K_M.gguf529 MBc80a703400633f298cc2fddf6d493a541be36918c0801c0b1bf3f14c5703ce49
MiniCPM-OCR-1_0-Q4_K_S.gguf505 MB5f76f7c3c88a920cf74055a8f06c8efa2f37f6832db1613c7cd8100cfd51a728
MiniCPM-OCR-1_0-Q5_0.gguf563 MB9cbb4f0f7b4cd371c40655420705de0ae1f3bced6a4e89d6d423c30bce8d5bea
MiniCPM-OCR-1_0-Q5_1.gguf595 MB51c4ba0f41bf91f9bcae5eac1e0f3d99f8cf2f8f4aa7a227d0ec67b792e75049
MiniCPM-OCR-1_0-Q5_K_M.gguf578 MB34aa54a4cd9871f1a4bbd2686a6c6b27a3a01cb5b7f1812463cc7b885343f16f
MiniCPM-OCR-1_0-Q5_K_S.gguf563 MBcdd2d8fb50410cf1d5770e7a1c6f68bb64d1c2be6a691cc6e09708545637437a
MiniCPM-OCR-1_0-Q6_K.gguf630 MB97cd603be2ab488b82c06584e8e531e67dd0e5515167cff305735c48d0f1aabc
MiniCPM-OCR-1_0-Q8_0.gguf812 MB791486a476bdacb48acb3f31aa3a18dbb5be87e723a4074bcd13a37d61c852e2
README.md12.5 KB808616e3b84e03ad0309748fc3d61583e1f78111f6369b9257e0170d51f3ba63
README_zh.md12.1 KBc42cfc87f1b3cd241a75e6994d4b544c6a76c0f12a0f0dfaadcbd0bbc9e2ba9a
assets/parsing_pipeline.svg4.49 KBe601a364eeb37709a7d100e86b0099e57e7a071610bcaf22884d21fb1e0f127e
mmproj-model-f16-4x.gguf901 MBceed82261b3b1380c3165f8b37c10117a50093be1362cbfeeb692fa036444682
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
0133ad8db6 pinned now2026-11-15 04:38 UTC16 files Β· 8.23 GB

Use it

$ fw get openbmb/MiniCPM-OCR-1.0-gguf
# manifest sha256 38b0449579c2… · 8.23 GB · 16 files
$ fw verify ./MiniCPM-OCR-1.0-gguf openbmb/MiniCPM-OCR-1.0-gguf
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/openbmb/MiniCPM-OCR-1.0-gguf.json --dir ./MiniCPM-OCR-1.0-gguf $ python3 fw.py verify ./MiniCPM-OCR-1.0-gguf ./openbmb__MiniCPM-OCR-1.0-gguf.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download openbmb/MiniCPM-OCR-1.0-gguf --revision 0133ad8db635210441a55dcf421e25bfb9915142 --local-dir ./MiniCPM-OCR-1.0-gguf
llama.cppDownload one GGUF variant (MiniCPM-OCR-1_0-Q4_0, 501 MB), then serve it.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download openbmb/MiniCPM-OCR-1.0-gguf --include "MiniCPM-OCR-1_0-Q4_0*" --local-dir ./MiniCPM-OCR-1.0-gguf $ llama-server -m ./MiniCPM-OCR-1.0-gguf/MiniCPM-OCR-1_0-Q4_0.gguf
OllamaMake an Ollama model from the downloaded file.
$ printf 'FROM ./MiniCPM-OCR-1.0-gguf/MiniCPM-OCR-1_0-Q4_0.gguf\n' > Modelfile $ ollama create minicpm-ocr-1.0-gguf -f Modelfile

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
808616e3b84e03ad0309748fc3d61583e1f78111f6369b9257e0170d51f3ba63
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: openbmb <huggingface.co/openbmb>Newsgroups: alt.freeweights.minicpmSubject: MiniCPM-OCR-1.0-ggufDate: 2026-11-15Commit: 0133ad8Signed: 2DC28CC7B26A283B ✓
Upstream
openbmb/MiniCPM-OCR-1.0-gguf
Pinned commit
0133ad8db635210441a55dcf421e25bfb9915142
Manifest
MiniCPM-OCR-1.0-gguf.json Β· .minisig
Manifest sha256
38b0449579c242dc20fa6837326cc7dc2676b1866a0f7082571a57186524b35d
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 04:38 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/openbmb/MiniCPM-OCR-1.0-gguf.json $ curl -O https://freeweights.allternit.com/manifests/openbmb/MiniCPM-OCR-1.0-gguf.json.minisig $ minisign -Vm MiniCPM-OCR-1.0-gguf.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

openbmb/MiniCPM-V-4.6 Β· this model is a quantization of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download openbmb/MiniCPM-OCR-1.0-gguf
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. MiniCPM-OCR-1.0-gguf.json. Provenance. Takedown history: none.
From: openbmb <huggingface.co/openbmb>Subject: AgentCPM-Explore-GGUF
From: openbmb <huggingface.co/openbmb>Subject: AgentCPM-Report
From: openbmb <huggingface.co/openbmb>Subject: AgentCPM-Report-GGUF
From: openbmb <huggingface.co/openbmb>Subject: BitCPM-CANN-0.5B-gguf
From: openbmb <huggingface.co/openbmb>Subject: BitCPM-CANN-1B-gguf
From: openbmb <huggingface.co/openbmb>Subject: BitCPM-CANN-3B-gguf