Model reference · open weights
MinerU2.5-2509 is an open-weight language model from opendatalab. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.
Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.
What it is
| Released by | opendatalab |
|---|---|
| Type | Language models |
| Task | Vision + text |
| Parameters (lead) | 1.2B |
| Context | 16k tokens |
| Runs with | transformers |
| Released | 2025-09-17 |
| Popularity | 10k downloads / month |
| Licence | Commercial licence needed |
About
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 OpenAIEmbeddinFrom the published model card. Full card on the HuggingFace links in the sidebar.
Using it via the API
Once AxForge deploys mineru2-5-2509 for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (mineru2-5-2509 below is illustrative; you get the exact model name on deployment.)
$ curl -sS https://api.axforge.ai/v1/chat/completions \
-H "Authorization: Bearer $AXFORGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"mineru2-5-2509","messages":[{"role":"user","content":"Hello"}]}'
Create an account — your API key is available in the console. 3M free tokens every 30 days with every new account.