MinerU2.5-Pro-2604-1.2B
by opendatalab
1.2B document parser achieving 95.69 on OmniDocBench through pure data engineering
opendatalab/MinerU2.5-Pro-2604-1.2Bmixpeek://image_extractor@v1/opendatalab_mineru25_pro_v1Overview
MinerU2.5-Pro is a 1.2B-parameter document parsing model that achieves state-of-the-art results on OmniDocBench v1.6 (95.69) without any architectural changes over the base MinerU2.5. The improvement comes entirely from a Data Engine that expands training data from under 10M to 65.5M samples using Diversity-and-Difficulty-Aware Sampling, Cross-Model Consistency Verification, and a Judge-and-Refine annotation pipeline.
On Mixpeek, MinerU2.5-Pro delivers the highest-accuracy document parsing available at compact model size, surpassing models with 200x more parameters on complex layouts, tables, formulas, and mixed-content documents. Its coarse-to-fine two-stage strategy first analyzes layout on downsampled images then performs targeted OCR on native-resolution crops, balancing throughput with extraction quality.
Architecture
Decoupled coarse-to-fine two-stage architecture. Stage 1: layout analysis on downsampled images for structural element identification. Stage 2: targeted content recognition on native-resolution crops. 0.5B Qwen2-Instruct decoder. 1.2B total parameters. Three-stage progressive training: pre-training, hard sample fine-tuning, GRPO alignment.
Mixpeek SDK Integration
// No extractor parameter takes a Hugging Face model id (checked against
// GET /v1/discovery/extractors, which returns 13), so MinerU2.5-Pro-2604-1.2B runs
// on your side and the output is upserted through POST
// /v1/namespaces/{namespace_id}/documents/upsert. On Enterprise the other
// path is to upload the weights instead: POST /v1/namespaces/{id}/models
// accepts the huggingface format and a custom plugin loads them.
const res = await fetch(
"https://api.mixpeek.com/v1/namespaces/ns_your_namespace/documents/upsert",
{
method: "POST",
headers: {
Authorization: "Bearer API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
collection_id: "col_your_collection",
documents: [
{
document_id: "asset-00412",
// The model produces text, so it lands in payload. Give the
// collection a text vector index and embed that text to make it
// searchable rather than only filterable.
payload: { extracted_text: modelOutput, source_key: "archive/2026/asset-00412" },
vectors: { "text-embedding": embeddingOfModelOutput },
},
],
}),
},
);
// Managed alternative, if this exact model is not the requirement:
// document_graph_extractor@v1 runs intfloat/multilingual-e5-large-instruct
// (1024-d) over a bucket, with no inference of your own.Capabilities
- 95.69 on OmniDocBench v1.6 (SOTA across all model sizes)
- Surpasses models with 200x more parameters
- Native-resolution OCR on extracted layout crops
- Complex layouts: tables, formulas, nested structures, diagrams
- 1.2B parameters: deployable on modest GPU hardware
Use Cases on Mixpeek
Benchmarks
| Dataset | Metric | Score | Source |
|---|---|---|---|
| OmniDocBench v1.6 | Overall Score | 95.69 | OpenDataLab, Apr 2026: arXiv 2604.04771 |
| OmniDocBench v1.6 (tables) | Table Score | 97.2 | OpenDataLab, Apr 2026: arXiv 2604.04771 |
Performance
Common Pipeline Companions
Explore on Mixpeek
Compare alternatives in this category
Hand-picked tools & platforms compared
Deep-dive technical guide
See how Mixpeek runs models as extractors
Store & search embeddings at scale
Usage-based pricing for pipelines
Compare models, APIs & infrastructure
Specification
Research Paper
MinerU2.5-Pro: Pushing the Limits of Data-Centric Document Parsing at Scale
arxiv.orgBuild a pipeline with MinerU2.5-Pro-2604-1.2B
Add this model to a processing pipeline alongside other extractors. Combine with retrieval stages for end-to-end search.
Run it on your own data, free