This repository hosts the AWQ W4A16 quantized version of MiniCPM-OCR Jev. For the original BF16 weights and the base model card, see openbmb/MiniCPM-OCR-Jev. Everything below describes the model itself; see Quantization for what changed.
MiniCPM-OCR Jev (2B) is an OCR quality-assessment model for text, formula, and table regions. Given a region image and a candidate OCR result, it returns a score from 0 to 1 — higher means the candidate is more likely correct.
MiniCPM-OCR Jev is a 2B OCR quality-assessment model for text, formula, and table regions. Given a region image and a candidate OCR result, it returns a score from 0 to 1 — higher means the candidate is more likely correct. Use it to auto-accept reliable regions, route the rest to human review, or pick the best result among several OCR models.
🛡️ A small model that beats larger ones: at only 2B parameters, decision AUROC (×100) on JevOCRBench is 93.6, above JEV-35B-A3B (90.1) and close to Qwen3.5-397B-A17B (93.8).
🧩 Stable generalization: on parses from MiniCPM-OCR 1.0, GLM-OCR, PaddleOCR-VL-1.6, and Xiaomi-OCR-0, AUROC (×100) stays in 91.9–93.4.
Trained from Qwen3.5-2B. The vision encoder and language backbone are retained, and the language-model output head lm_head is replaced with a binary classification head that learns whether a candidate is correct.
Item
Description
Assessment unit
One text / formula / table region plus its candidate OCR result
Original region image
The crop from the document
Candidate content
OCR text and an image rendered from that text
Output
Score in 0–1; higher = more likely correct
When calling the cloud API, the Docker image, or the SDK service with a built-in renderer, supply the original region image, the candidate text, and the region category (text / formula / table) — the service renders internally. A service without a renderer requires you to supply the rendered image as well.
The table below reports overall and per-category AUROC (×100) on JevOCRBench. Higher values indicate better discrimination between correct and incorrect parsing results.
Same 200 samples drawn at random from JevOCRBench; four models parse them independently, every candidate is hand-labelled, then scored by MiniCPM-OCR Jev. Maximum gap 1.5 points.
Score the parsed result for each region and choose a threshold using samples from your application. Results above the threshold proceed automatically; the rest go to human review. A higher threshold typically reduces the number of results that pass automatically, so monitor both the accuracy of automatically accepted results and the volume of human review.
Selecting across models to improve parsing quality#
Use the same layout segmentation to have several OCR models parse each region. MiniCPM-OCR Jev scores the candidates for the same region, selects the highest-scoring candidate, and combines the selected results in reading order. If all candidates fall below the application threshold, the region can still be sent for human review.
Candidates for the same region must share the crop and content boundaries. Jev selects among existing candidates, so quality is bounded by their coverage and correctness.
When a service has a built-in renderer (cloud API, Docker, SDK), check verdict before using the score — only scored means model scoring actually ran. Fixed values returned for precheck, rendering, or forward-pass failures must not be read as low model scores.
Keep page/region ids, original region images, region categories, and candidate text while parsing.
Submit image + category + candidate text (renderer service), or image + rendered image (renderer-less service).
Check status, associate scores with candidates, apply your threshold, and compare candidates within each region when several models are in play.
Emit selected results in the original reading order and keep pending regions for reviewers.
Use score for one candidate, score_best for best-of-N within a block, and score_best_batch across blocks — see the API documentation (stub for now; until it lands use the vLLM deploy guide for Jev).