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.

TL;DR
- OpenBMB released a 1.3B OCR parser and a separate 2B quality judge in its MiniCPM-OCR suite.
- Jev scored 93.6 AUROC (×100) on JevOCRBench in OpenBMB's evaluation, 0.2 points behind Qwen3.5-397B-A17B.
- Intel hardware gets launch-day OpenVINO support, OpenBMB confirmed, alongside the suite's other deployment options.
- Parser and judge can share mistakes, OpenBMB acknowledged, while the team cautioned against interpreting scores as calibrated probabilities.
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:
- Read: Accept PDF, PNG, or JPG input and rasterize PDF pages.
- Layout: Detect regions and reading order, then crop the regions.
- Recognize: Send crops to the model service concurrently.
- 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:
- Submit a candidate: Provide the original crop, OCR text, and category:
text,formula, ortable. - 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.
- 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.