GitHub · API · Demo · DSpark

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.

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

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

Full MiniCPM-OCR 1.0 evaluation results

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

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).

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

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

Chinese documents

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

More examples

Original documents and parsed results, side by side.

English documents

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

Chinese documents

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

Model architecture

Item Description
Parameters 1.3B
Base Trained for OCR on top of MiniCPM-V 4.6
Components SigLIP vision encoder + Qwen3.5 language model
Primary languages Chinese and English
Tasks Text, tables, formulas, charts, seals, and key information extraction
Parsing pipeline MiniCPM-OCR 1.0 + PP-DocLayoutV3 layout model + minicpmvocr SDK
Visual tokens 4× compression, scale_resolution 448, up to 9 slices

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

Quick start

Document parsing (SDK)

The SDK parses whole documents; the model recognises regions:

  1. Read — accept PDF/PNG/JPG and rasterise PDF pages.
  2. Layout — PP-DocLayoutV3 detects regions and reading order, then crops them.
  3. Recognise — regions are sent to the MiniCPM-OCR 1.0 service concurrently.
  4. Assemble — results are merged into Markdown in reading order; tables become HTML, formulas stay LaTeX.

SDK and inference service use separate Python environments and may run on different machines. See the SDK tutorial.

vLLM

vllm serve openbmb/MiniCPM-OCR-1.0-AWQ \
  --served-model-name MiniCPM-OCR \
  --trust-remote-code \
  --max-model-len 40960

Full API example (request fields, image encoding, response checks): vLLM deploy guide.

Other runtimes

Prompts

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

Region Prompt Output
Text block / paragraph / title / page Text Recognition: plain text
Table Table Recognition: HTML (via SDK post-processing)
Formula Formula Recognition: LaTeX
Inline formula Text Recognition: LaTeX
Seal Seal Recognition: seal text
Chart Chart 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

Field Value
Method AWQ (quant_method: awq, version: gemm, zero_point: true)
Weight bits 4
Group size 128
Activations BF16 (W4A16)
Not quantized lm_head, vision tower, merger, in_proj_a / in_proj_b
Tool tc-mb/AutoAWQ (AutoAWQ fork)
Calibration 234 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.

File Notes
model.safetensors 4-bit quantized weights, BF16 vision tower
config.json base config + quantization_config
tokenizer.json, tokenizer_config.json, chat_template.jinja tokenizer and chat template
preprocessor_config.json, processor_config.json image preprocessing and processor configs
generation_config.json generation defaults

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

Related checkpoints

Format Hugging Face ModelScope
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.

Downloads last month
-
Safetensors
Model size
1B params
Tensor type
I32
·
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for openbmb/MiniCPM-OCR-1.0-AWQ

Quantized
(4)
this model

Collection including openbmb/MiniCPM-OCR-1.0-AWQ