Skip to content
AI Primer
release

OpenBMB releases MiniCPM-OCR with a 2B model to judge OCR output

OpenBMB released MiniCPM-OCR with a separate 2B judge that flags unreliable OCR output. The open-source suite has launch-day OpenVINO support on Intel hardware.

4 min read
OpenBMB releases MiniCPM-OCR with a 2B model to judge OCR output
OpenBMB releases MiniCPM-OCR with a 2B model to judge OCR output

TL;DR

Jev takes the source crop, candidate text, and an image rendered from that text. The parser's full-document pipeline delegates layout detection and reading order to PP-DocLayoutV3, then sends individual regions to the recognition model.

Document parsing

MiniCPM-OCR 1.0 combines a SigLIP vision encoder with a Qwen3.5 language model, trained for OCR on top of MiniCPM-V 4.6. Chinese and English are its primary languages, according to the official repository.

The minicpmvocr SDK handles four stages:

  1. Read: Accept PDF, PNG, or JPG input and rasterize PDF pages.
  2. Layout: Detect regions and reading order, then crop the regions.
  3. Recognize: Send crops to the model service concurrently.
  4. Assemble: Merge results into Markdown, preserving HTML tables and LaTeX formulas.

The SDK and inference service use separate Python environments and can run on different machines.

Jev region scoring

Jev is the more interesting half of the release: it can sit behind an existing OCR parser, as OpenBMB explained. It retains Qwen3.5-2B's vision encoder and language backbone, replacing lm_head with a binary classification head.

The Jev model card describes three integration steps:

  1. Submit a candidate: Provide the original crop, OCR text, and category: text, formula, or table.
  2. Score: A renderer-equipped service generates the candidate image internally and returns a score from 0 to 1. Renderer-less services also require that image as input.
  3. Route or select: Apply a threshold for automatic acceptance or human review. With multiple candidates for the same region, select the highest-scoring result.

Best-of-N selection requires candidates to share the same crop and content boundaries. Its ceiling is the coverage and correctness of the candidates supplied.

OpenBMB reports 93.6 AUROC (×100), measuring discrimination between correct and incorrect parses, versus 90.1 for JEV-35B-A3B. A separate cross-parser test used 200 randomly sampled JevOCRBench examples, with candidates independently generated by four parsers and hand-labelled; AUROC ranged from 91.9 to 93.4.

OCR benchmarks

OpenBMB published six benchmark comparisons for MiniCPM-OCR 1.0, including document parsing and general OCR recognition.

The parser trails TeleOCR by 0.40 points on OmniDocBench v1.6 and Surya OCR-2 by 0.6 points on olmOCR-Bench, despite leading four of the six displayed comparisons.

Correlated errors and calibration

A 0-to-1 score needs separate calibration before it can represent a probability of correctness across document types, OpenBMB said in a reply. The team also acknowledged that a separate judge can share the parser's failure modes.

Independent human evaluation remains necessary to avoid optimizing for the judge rather than actual OCR accuracy, the team added.

DSpark throughput

OpenBMB's published throughput setup uses an NVIDIA GeForce RTX 5090 and all 1,651 OmniDocBench v1.6 images. Image-level concurrency is one, while regions within each page are still recognized in parallel.

  • Measured throughput: 1.2 pages per second, equivalent to 72 pages per minute.
  • Relative throughput: 1.49× PaddleOCR-VL-1.6 and 3.62× MinerU2.5 Pro, using accelerated configurations.
  • SDK peak: Up to 128 pages per minute with additional concurrency optimizations, according to the launch announcement.

DSpark uses a draft model, with matching main and draft checkpoints required from the same release. OpenBMB said it had no verified P95 latency figure to share in response to a question about interactive workloads.

OpenVINO and local serving

Both models' weights, code, and documentation use Apache 2.0, according to the repository's license statement. Published deployment options include:

  • Runtimes: vLLM, SGLang, llama.cpp, and Ollama.
  • Weight formats: BF16, GGUF, AWQ W4A16, and GPTQ W4A16.

OpenBMB also offers a hosted demo and API.

SDK status and authentication

Jev services can return fixed fallback values when processing fails. Only verdict: scored means model scoring actually ran, according to the integration notes.

After feedback about securing the endpoint, OpenBMB said it would check SDK API-key support and review the deployment example.

Further reading

Discussion across the web

Where this story is being discussed, in original context.

On X· 7 threads
TL;DR2 posts
Document parsing1 post
Jev region scoring2 posts
OCR benchmarks1 post
Correlated errors and calibration2 posts
DSpark throughput2 posts
OpenVINO and local serving2 posts
Share on X