MiniCPM-OCR: A 1.3B Parser Paired with a 2B Verifier for Reliable Document OCR
The article introduces MiniCPM-OCR, an open-source Chinese OCR system comprising a 1.3B parameter parser and a 2B parameter verifier (Jev), tests them on scanned resumes and financial tables, and shows how Jev detects missing rows, date changes, and amount discrepancies with AUROC 0.936.
MiniCPM-OCR Overview
ModelBest (面壁智能) and OpenBMB have released MiniCPM-OCR, an open-source OCR suite under Apache-2.0 license. The suite consists of two models designed to work together: MiniCPM-OCR 1.0 (1.3B parameters) for document parsing, and MiniCPM-OCR Jev (2B parameters) for verifying parsing results. The project repository is at https://github.com/OpenBMB/MiniCPM-OCR.
MiniCPM-OCR 1.0 Capabilities
MiniCPM-OCR 1.0 is the first OCR-specialized model in the MiniCPM V/o family. It supports bilingual (Chinese/English) document parsing, handling body text, formulas, tables, and various capture conditions (scans, photos, tilted pages, curved paper). Official benchmarks report Real5-OmniDocBench score of 93.68 and Wild-OmniDocBench score of 92.39, both focusing on real-world capture scenarios. The model also supports Key Information Extraction (KIE), allowing users to specify fields to extract rather than processing entire pages.
Performance: With DSpark decoding acceleration on an RTX 5090, the end-to-end throughput is approximately 1.2 pages/second (tested on OmniDocBench v1.6 with 1,651 images, image-level concurrency 1, official SDK defaults).
MiniCPM-OCR Jev: The Verifier
MiniCPM-OCR Jev (2B parameters) is described as the first System-1 decision model for OCR parsing results. It judges block-level parsing results for text, formulas, and tables, returning a probability that the result is correct. It does not re-recognize or correct errors; instead, the application uses the score to decide which content needs re-recognition or human review. Judgment requires only a single forward pass, making it suitable as a fast post-parsing filter.
On the official JevOCRBench, MiniCPM-OCR Jev achieves AUROC 0.936 , compared to Qwen3.5-397B-A17B at 0.938 and JEV-35B-A3B at 0.901. Jev can be attached to other OCR models (e.g., GLM-OCR, PaddleOCR-VL-1.6) without being bound to MiniCPM-OCR 1.0.
Deployment and Usage
Code and weights are open-source. The repository provides SDK, deployment guides, and fine-tuning instructions. An online demo is also available. Local deployment splits into an inference service (recognition) and an SDK (layout detection, cropping, result assembly). The official tutorial uses Linux + NVIDIA GPU, Python 3.12. SDK installation: python -m pip install "minicpm-ocr[all]==1.0.2" Layout detection requires a separate PaddlePaddle installation and inference service. After starting the service, parse PDFs or images to Markdown with:
minicpmvocr parse --input doc.pdf --output doc.md \
--device cuda:0 \
--server-url http://127.0.0.1:18499 \
--model minicpm-ocrllama.cpp backend deployment is also documented, requiring both GGUF main model and visual projector files. Model file size does not equal runtime memory; context length affects usage. MiniCPM-OCR Jev needs a separate scoring service that takes original images and recognition results to produce verification scores.
Case Study 1: Scanned Resume Parsing for InterviewGuide
The author integrates MiniCPM-OCR into InterviewGuide, an interview practice platform that previously used Apache Tika and failed on scanned PDFs. Test setup: M5 Pro (48GB RAM), llama.cpp with F16 quantization, 8K context. A fictional two-column Java backend resume (converted to image-only PDF) was processed.
Full-page recognition time: 5.40 seconds.
Output reads left column then right column without mixing content.
Project dates and technical keywords (Spring Boot, Redis, Kafka) preserved.
Example extracted sentence: "使用 Redis 保存任务进度,避免前端重复发起分析" (Use Redis to save task progress, avoid frontend duplicate analysis triggers).
Line-by-line comparison with original shows only spacing/separator differences; footer test marker missing in raw output.
Case Study 2: Financial Report Table Extraction for AgentInvest
AgentInvest, a stock research project, needs to extract tables from PDF annual reports. Four pages from Tencent's 2025 annual report were tested: two Statement of Changes in Equity (nine columns, multi-level headers) and two Cash Flow Statements (two years, footnote numbers, parentheses for negatives). Same local environment (M5 Pro, llama.cpp F16, 8K context).
Per-page recognition time: 7.49–9.69 seconds (Cash Flow Statement page: 8.22 seconds).
52 numeric values and dash cells verified in order.
Key figures correctly extracted: Operating cash flow 2025 = 347,751, Income tax paid = (44,699), Net operating cash flow = 303,052; 2024 column aligned, parentheses preserved for sign handling.
Model returns OTSL table structure; converted to readable tables. Manual correction added Note column, fixed year headers, split merged rows; amounts unchanged.
Equity table had one error: (3,597) became -(3,597) (extra minus sign), flagged for Jev verification.
Case Study 3: Jev Verification of Parsing Results
Jev tested on both correct and deliberately corrupted outputs (human-injected errors: deleted lines, changed dates, altered amounts, swapped year columns). Threshold for review set at 0.5 .
Original resume project block score: 0.989 .
Deleted line "使用 Redis 保存任务进度" → score 0.003 .
Date changed 2024.03 → 2023.03 → score <0.001 .
Cash flow amount 347,751 → 347,715 → score <0.001 .
Swapped 2025/2024 columns → score <0.001 .
Jev flagged all injected errors.
Single scoring request latency: 0.24–0.87 seconds (excludes candidate image rendering), same M5 Pro, F16, 16K context.
Some false negatives (missed minus sign, table structure) and false positives observed; Jev best used as a triage filter for human review.
Conclusion
MiniCPM-OCR combines a 1.3B parser and a 2B verifier (Jev) to enable "trustworthy OCR": extraction plus reliability scoring. In local tests, scanned resume text extraction was largely complete; financial tables required structural corrections. Jev successfully identified injected omissions, date changes, and amount mismatches, though with some misses and false alarms. The suite is suitable for resume processing, financial report ingestion, knowledge base import, and similar pipelines where extracted content must be verified before downstream use.
Project repository:
https://github.com/OpenBMB/MiniCPM-OCRSigned-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
JavaGuide
Backend tech guide and AI engineering practice covering fundamentals, databases, distributed systems, high concurrency, system design, plus AI agents and large-model engineering.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
