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

MiniCPM-OCR-1.0-AWQ

Date: 2026-11-15Commit: b7e9594Signed: 2DC28CC7B26A283B ✓

Image text to text model with 1.3B parameters. Safetensors weights, 1.89 GB in all. Published by openbmb under Apache-2.0.

1.3B params1.89GBMiniCPM-OCR-1.0-AWQsafetensorspermissive
FactsParams1.3BSize1.89 GBFormatssafetensorsTaskimage text to textLicenseApache-2.0From sourcepermissive
$ fw get openbmb/MiniCPM-OCR-1.0-AWQ
# manifest sha256 c451bfd60ede… · 1.89 GB · 11 files
$ fw verify ./MiniCPM-OCR-1.0-AWQ openbmb/MiniCPM-OCR-1.0-AWQ
From sourceHosted (signed)openbmb/MiniCPM-OCR-1.0-AWQLast check: 2026-11-15 04:45 UTC

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

Quantized of MiniCPM-OCR-1.0.

Works with

Overview

Size
1.89 GB
Weights
1.87 GB (safetensors)
Parameters
1.3B
Formats
safetensors
Task
image text to text
License
Apache-2.0 (permissive)
Files
11, each with a sha256
Publisher
openbmb
Added
2026-11-15
Section
alt.freeweights.minicpm
Lineage

Original release from the publisher.

Base model: openbmb/MiniCPM-OCR-1.0

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:45 UTCpassed

Model card

From the publisher at commit b7e9594. 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 AWQ W4A16 quantized version of MiniCPM-OCR 1.0. For the original BF16 weights and the base model card, see openbmb/MiniCPM-OCR-1.0. Everything below describes the model itself; see Quantization for what changed.

MiniCPM-OCR 1.0 (1.3B) is the first OCR-specific model in the MiniCPM-V/o family. It focuses on text-centric document understanding β€” text, tables, formulas, charts, seals, and structured information extraction β€” and balances quality against speed on real-world captures.

Highlights#

  • πŸ† SOTA document parsing: 93.68 on Real5-OmniDocBench, a benchmark for real-world document parsing, with leading results on OmniDocBench v1.6, Wild-OmniDocBench, and olmOCR-Bench. Handles Chinese and English documents and PDFs, including scans, curved pages, photographs, skewed pages, and recaptured documents.
  • ⚑ Efficient inference. With DSpark decoding acceleration (BF16, GGUF) end-to-end processing efficiency improves by 55%. Throughput is about 1.49Γ— PaddleOCR-VL-1.6 and 3.62Γ— MinerU2.5 Pro.
  • πŸ” General recognition and information extraction: 54.7 on OCRBench v2, plus key information extraction (KIE) for downstream automation.
  • πŸ› οΈ Easy to deploy and develop: vLLM, SGLang, llama.cpp, and Ollama from day one, with quantized variants and multi-chip builds. Supports further fine-tuning, and ships a pip SDK, a full API, and agent workflows. Online demos: China Β· Global.

SOTA quality at higher throughput#

Among the open-source OCR models compared, MiniCPM-OCR 1.0 reaches 1.2 pages/s and the highest equal-weight average score across OmniDocBench v1.6, Real5-OmniDocBench, Wild-OmniDocBench, and olmOCR-Bench.

Image: Throughput versus parsing quality for open-source OCR models. Horizontal axis: pages per second (log scale). Vertical axis: equal-weight average score across four document parsing benchmarks.

Average score is the equal-weight mean of the four benchmarks. All models use accelerated configurations. Settings and reproduction: reproduction guide. Per-model throughput: model guide.

Benchmark comparisons#

Image: Radar chart comparing MiniCPM-OCR 1.0 with other OCR models across six benchmarks.

Full MiniCPM-OCR 1.0 evaluation results#

Image: Detailed OCR model results on OmniDocBench v1.6, Real5-OmniDocBench, Wild-OmniDocBench, olmOCR-Bench, CHAOS-Bench, and OCRBench v2.

Image: Per-benchmark bar charts for Real5-OmniDocBench, Wild-OmniDocBench, OmniDocBench v1.6, olmOCR-Bench, OCRBench v2, and CHAOS-Bench.

Each panel keeps its own benchmark's scores; higher is better. Scores from different benchmarks are not directly comparable. Test settings and reproduction steps are in the reproduction guide; per-benchmark discussion is in the model guide.

Throughput#

On an NVIDIA GeForce RTX 5090 with all 1651 OmniDocBench v1.6 images, image-level concurrency 1, and each system's accelerated configuration, MiniCPM-OCR 1.0 reaches 1.2 pages/s (relative throughput 1.00Γ—; higher is faster).

Image: OCR system throughput with accelerated configurations; MiniCPM-OCR 1.0 achieves 1.2 pages/s.

Concurrency 1 is image-level: regions inside a page are still recognised in parallel. Real throughput also depends on page content, backend, concurrency, and hardware.

Examples#

Left to right: original document, detected layout, and rendered Markdown.

English documents

Image: English document animation: original, detected layout, and rendered Markdown.

Chinese documents

Image: Chinese document animation: original, detected layout, and rendered Markdown.

More examples#

Original documents and parsed results, side by side.

English documents

Image: English examples comparing inputs and results: handwriting, historical and scanned documents, newspapers, financial statements, and key information extraction.

Chinese documents

Image: Chinese examples comparing inputs and results: handwritten notes, complex formulas, newspapers, financial statements, stamped documents, illustrations, and key information extraction.

Model architecture#

ItemDescription
Parameters1.3B
BaseTrained for OCR on top of MiniCPM-V 4.6
ComponentsSigLIP vision encoder + Qwen3.5 language model
Primary languagesChinese and English
TasksText, tables, formulas, charts, seals, and key information extraction
Parsing pipelineMiniCPM-OCR 1.0 + PP-DocLayoutV3 layout model + minicpmvocr SDK
Visual tokens4Γ— compression, scale_resolution 448, up to 9 slices

See the model guide for 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 AWQ 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 vLLM recognition service for the AWQ checkpoint in this repository, openbmb/MiniCPM-OCR-1.0-AWQ, following the vLLM deployment guide. Use this repository ID as the served model path, --served-model-name minicpm-ocr, --port 8080, and --max-model-len 40960. The service reads the AWQ quantization settings from this repository's config.json.

The SDK examples use http://127.0.0.1:8080, model alias minicpm-ocr, the vllm backend, and an NVIDIA GPU for layout detection. Match the URL, alias, and context length to your service. The SDK connects to the running service; it does not load the quantized weights into the SDK process.

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 vllm \
  --server-url http://127.0.0.1:8080 \
  --model minicpm-ocr \
  --device cuda:0 \
  --set engine.max_model_len=40960 \
  --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": "vllm",
                "server_url": "http://127.0.0.1:8080",
                "model_name": "minicpm-ocr",
                "max_model_len": 40960,
            },
            "layout": {
                "model_dir": str(layout_model),
                "device": "cuda:0",
            },
            "pipeline": {"overlap_layout": True},
            "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 CPU layout detection, use --device cpu in the CLI or set layout.device to cpu in Python. This changes only the layout detector; the recognition service still uses the deployed quantized model.

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

Prompts#

The prompt selects the task and must match the region you cropped:

RegionPromptOutput
Text block / paragraph / title / pageText Recognition:plain text
TableTable Recognition:HTML (via SDK post-processing)
FormulaFormula Recognition:LaTeX
Inline formulaText Recognition:LaTeX
SealSeal Recognition:seal text
ChartChart to Table:table

If finish_reason is length, the output was truncated β€” raise the token budget.

Key information extraction (KIE)#

MiniCPM-OCR 1.0 can pull specified fields straight out of an image β€” for example the store name and amount on a receipt. Send the image with a field-extraction prompt and ask for a JSON object; you do not need to produce page Markdown first.

Use the image recognition API example and replace Text Recognition: with:

Extract the "store_name", "amount". Format the output as a JSON object with keys: "store_name", "amount". If an item is not in the image, use "###".

Replace both field lists with your own field names (Chinese or English). The response is model-generated text: parse the JSON and check fields and values before using it downstream.

Agent skill#

Have a coding agent follow the skill to set up the environment, download the model, and parse a first document:

Read and execute https://github.com/OpenBMB/MiniCPM-OCR/blob/main/docs/SKILL_en.md
Fine-tuning#

LLaMA-Factory Β· ms-swift β€” data preparation, full-parameter SFT with the multimodal projector frozen, training, and evaluation (French handwritten text lines).

Quantization#

FieldValue
MethodAWQ (quant_method: awq, version: gemm, zero_point: true)
Weight bits4
Group size128
ActivationsBF16 (W4A16)
Not quantizedlm_head, vision tower, merger, in_proj_a / in_proj_b
Tooltc-mb/AutoAWQ (AutoAWQ fork)
Calibration234 document-style samples derived from OmniDocBench annotations

Only the language-model linear layers are quantized. The vision encoder, multimodal projector, lm_head, and the GatedDeltaNet in_proj_a / in_proj_b projections stay in BF16, so image encoding is unchanged and recurrent gating is preserved.

Weight footprint drops from about 2.42 GiB (BF16) to about 1.74 GiB.

FileNotes
model.safetensors4-bit quantized weights, BF16 vision tower
config.jsonbase config + quantization_config
tokenizer.json, tokenizer_config.json, chat_template.jinjatokenizer and chat template
preprocessor_config.json, processor_config.jsonimage preprocessing and processor configs
generation_config.jsongeneration defaults

quantization_config in config.json is what vLLM reads; no extra flag is needed.

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

DSpark requires a matching main and draft model from the same release β€” do not mix draft weights with a different main checkpoint. See DSpark acceleration.

For OCR quality assessment (auto-accept, human-review routing, best-of-N across models), see MiniCPM-OCR Jev.

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

11 files Β· 1.89 GBWeights 1.87 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 11 files with their sha256
FileSizesha256
.gitattributes2.21 KB3b0749ff7885fec1612bcc8b28f5dd80bd712e6a6afcbd3a4b31a301d315b335
README.md18.8 KBb41825311fea177699a7b4d3e921368574dfe04be6e0e817888b16f54a12d415
README_zh.md17.9 KB565b43ff42de707f97a7c0b450a7ef209b51d5ed0a6764a5757c889b6ebe82b4
chat_template.jinja7.34 KBc6a5f1387c6baa0befecc39e36f293e44baba865a9c7809ac93fae1604b2c210
config.json2.61 KB0bc10696c1699654d04c2d8871a74c3068c774c6471c9f0710dbf21b222be4b6
generation_config.json133 B7cecf81e246f8db6bcc4c14f22313dd7decf2d6a70dd1b45c4d237a2e6927405
model.safetensors1.87 GB2802f4b339bd00c8528aca1f1dab701671dd9628c8b46cbd1aac10dc55c76f21
preprocessor_config.json340 B7b46cf09f350fa1cd3bfd4d20fe8b8532e76dcc5d892a0052660f803c8ad532b
processor_config.json46 Bb71fbc3e22a7dbe04622e1a2641e8553375bc1434875ac438066c58a88b974b1
tokenizer.json20.0 MB6269eb38f25c20c0f2ba676577f2e5603f79eab3be573dfdaa727ca6eeb5522d
tokenizer_config.json1.46 KB74f51078120066292803d9dfe5437f67b778c5ef6d16eb04dbc6a3f7a13e5826
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
b7e9594897 pinned now2026-11-15 04:45 UTC11 files Β· 1.89 GB

Use it

$ fw get openbmb/MiniCPM-OCR-1.0-AWQ
# manifest sha256 c451bfd60ede… · 1.89 GB · 11 files
$ fw verify ./MiniCPM-OCR-1.0-AWQ openbmb/MiniCPM-OCR-1.0-AWQ
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-AWQ.json --dir ./MiniCPM-OCR-1.0-AWQ $ python3 fw.py verify ./MiniCPM-OCR-1.0-AWQ ./openbmb__MiniCPM-OCR-1.0-AWQ.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download openbmb/MiniCPM-OCR-1.0-AWQ --revision b7e9594897a3677f0ccff15a10cfe80b4305f70c --local-dir ./MiniCPM-OCR-1.0-AWQ
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForImageTextToText, AutoProcessor processor = AutoProcessor.from_pretrained("openbmb/MiniCPM-OCR-1.0-AWQ", revision="b7e9594897a3677f0ccff15a10cfe80b4305f70c") model = AutoModelForImageTextToText.from_pretrained("openbmb/MiniCPM-OCR-1.0-AWQ", revision="b7e9594897a3677f0ccff15a10cfe80b4305f70c", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve openbmb/MiniCPM-OCR-1.0-AWQ --revision b7e9594897a3677f0ccff15a10cfe80b4305f70c

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
b41825311fea177699a7b4d3e921368574dfe04be6e0e817888b16f54a12d415
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-AWQDate: 2026-11-15Commit: b7e9594Signed: 2DC28CC7B26A283B ✓
Upstream
openbmb/MiniCPM-OCR-1.0-AWQ
Pinned commit
b7e9594897a3677f0ccff15a10cfe80b4305f70c
Manifest
MiniCPM-OCR-1.0-AWQ.json Β· .minisig
Manifest sha256
c451bfd60edebecde2e9bb33388d55a9ffeb05968ffe5804a25ae9087d7c7458
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 04:45 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/openbmb/MiniCPM-OCR-1.0-AWQ.json $ curl -O https://freeweights.allternit.com/manifests/openbmb/MiniCPM-OCR-1.0-AWQ.json.minisig $ minisign -Vm MiniCPM-OCR-1.0-AWQ.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-OCR-1.0 Β· 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-AWQ
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-AWQ.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