Model reference · open weights
MinerU2.5-2509 is an open-weight language model from opendatalab. MinerU2.5-2509-1.2B (BF16) weighs 2.3 GB; the smallest configuration that runs it is RTX 3060 12 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the opendatalab/MinerU2.5-2509-1.2B model card, 2026-10-01
What it is
| Released by | opendatalab |
|---|---|
| Released | 2025-09-17 |
| Parameters | 1.2B |
| VRAM | 2.3 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory |
|---|---|---|---|
| 8K each | |||
| RTX 3060 12 GB | 73 | all 16K | 11.6 GB |
| RTX 4060 Ti 16 GB | 110 | all 16K | 15.4 GB |
| RTX 3090 24 GB | 190 | all 16K | 23.4 GB |
| RTX 4090 24 GB | 189 | all 16K | 23.4 GB |
| RTX 5090 32 GB | 266 | all 16K | 31.0 GB |
| L40S 48 GB | 394 | all 16K | 44.0 GB |
| A100 80 GB | 734 | all 16K | 78.2 GB |
| H100 80 GB | 694 | all 16K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 850 | all 16K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 984 | all 16K | 107 GB |
| H200 141 GB | 1000+ | all 16K | 138 GB |
| B200 180 GB | 1000+ | all 16K | 176 GB |
| Requests at once | 8K tokens each |
|---|---|
| 1 | 4.3 GB |
| 5 | 4.7 GB |
| 8 | 5.0 GB |
| 16 | 5.9 GB |
| 32 | 7.5 GB |
| 64 | 10.7 GB |
One card, with vLLM's small-card settings.
From the model card
MinerU2.5: A Decoupled Vision-Language Model for Efficient High-Resolution Document Parsing
MinerU2.5 is a 1.2B-parameter vision-language model for document parsing that achieves state-of-the-art accuracy with high computational efficiency. It adopts a two-stage parsing strategy: first conducting efficient global layout analysis on downsampled images, then performing fine-grained content recognition on native-resolution crops for text, formulas, and tables. Supported by a large-scale, diverse data engine for pretraining and fine-tuning, MinerU2.5 consistently outperforms both general-purpose and domain-specific models across multiple benchmarks while maintaining low computational overhead.
For convenience, we provide mineru-vl-utils, a Python package that simplifies the process of sending requests and handling responses from MinerU2.5 Vision-Language Model. Here we give some examples to use MinerU2.5. For more information and usages, please refer to mineru-vl-utils.
📌 We strongly recommend using vllm for inference, as the vllm-async-engine can achieve a concurrent inference speed of 2.12 fps on one A100.
# For `transformers` backend
pip install "mineru-vl-utils[transformers]"
# For `vllm-engine` and `vllm-async-engine` backend
pip install "mineru-vl-utils[vllm]"
This model is used in production via the MinerU Open API — no GPU required. Two deployment tracks:
| Track | Requirement | Best for |
|---|---|---|
| 🖥️ Self-hosted | GPU (A100 recommended) | Research, private deployment |
| ☁️ Cloud API | API token (free tier available) | Production use, no GPU needed |
Use mineru-vl-utils to run MinerU2.5 locally on your own GPU.
pip install "mineru-vl-utils[transformers]"
from transformers import AutoProcessor, Qwen2VLForConditionalGeneration
from PIL import Image
from mineru_vl_utils import MinerUClient
model = Qwen2VLForConditionalGeneration.from_pretrained(
"opendatalab/MinerU2.5-2509-1.2B", dtype="auto", device_map="auto"
)
processor = AutoProcessor.from_pretrained(
"opendatalab/MinerU2.5-2509-1.2B", use_fast=True
)
client = MinerUClient(backend="transformers", model=model, processor=processor)
print(client.two_step_extract(Image.open("/path/to/page.png")))
# pip install "mineru-vl-utils[vllm]"
from vllm import LLM
from PIL import Image
from mineru_vl_utils import MinerUClient, MinerULogitsProcessor
client = MinerUClient(
backend="vllm-engine",
vllm_llm=LLM(model="opendatalab/MinerU2.5-2509-1.2B",
logits_processors=[MinerULogitsProcessor])
)
print(client.two_step_extract(Image.open("/path/to/page.png")))
# pip install "mineru-vl-utils[vllm]"
import asyncio, io, aiofiles
from vllm.v1.engine.async_llm import AsyncLLM
from vllm.engine.arg_utils import AsyncEngineArgs
from PIL import Image
from mineru_vl_utils import MinerUClient, MinerULogitsProcessor
async_llm = AsyncLLM.from_engine_args(
AsyncEngineArgs(model="opendatalab/MinerU2.5-2509-1.2B",
logits_processors=[MinerULogitsProcessor])
)
client = MinerUClient(backend="vllm-async-engine", vllm_async_llm=async_llm)
async def main():
async with aiofiles.open("/path/to/page.png", "rb") as f:
image = Image.open(io.BytesIO(await f.read()))
print(await client.aio_two_step_extract(image))
asyncio.run(main())
async_llm.shutdown()
Free Flash mode available without a token (20 pages / 10 MB per file).
# Windows (PowerShell)
irm https://cdn-mineru.openxlab.org.cn/open-api-cli/install.ps1 | iex
# macOS / Linux
curl -fsSL https://cdn-mineru.openxlab.org.cn/open-api-cli/install.sh | sh
# Flash extract — no login, Markdown only
mineru-open-api flash-extract report.pdf
# Precision extract — token required
mineru-open-api auth
mineru-open-api extract report.pdf -o ./output/
# pip install mineru-open-sdk
from mineru import MinerU
# Flash mode — free, no token
result = MinerU().flash_extract("report.pdf")
print(result.markdown)
# Precision mode — tables, formulas, large files
client = MinerU("your-token") # https://mineru.net/apiManage/token
result = client.extract("report.pdf")
print(result.markdown)
# pip install langchain-mineru
from langchain_mineru import MinerULoader
# Flash mode — free, no token
docs = MinerULoader(source="report.pdf").load()
print(docs[0].page_content)
# Precision mode — full RAG pipeline
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddinQuoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.