测试验证环境
vllm version : 0.19.0

通过OpenAI服务API接口启动服务运行vllm命令

python3 -m vllm.entrypoints.openai.api_server --model /data/MinerU2.5-2059-1.2B \
--max-num-seqs 64 \
--max-model-len 16384 \
--max-num-batched-tokens 8092 \
--dtype bfloat16 \
--tensor-parallel-size 1 \
--api-key sk-sWHOCgcCHM7QL7CyqjlQxuMCPSIMwAKJ  \
--host 192.168.0.11 \
--port 1025 \
--gpu-memory-utilization 0.9 \
--served-model-name MinerU2_5-2509-1_2B \
--enable-prefix-caching \
--enable-chunked-prefill \
--trust-remote-code 

模型起来之后,测试示例

安装依赖python 包

pip install pymupdf requests

python 示例

import fitz  # pymupdf
import base64
import requests
from io import BytesIO

# ---------- 配置 ----------
pdf_path = "test.pdf"      # 你的测试 PDF 路径
page_num = 0               # 第一页(索引从0开始)
api_url = "http://192.168.0.11:1025/v1/chat/completions"
api_key = "sk-sWHOCgcCHM7QL7CyqjlQxuMCPSIMwAKJ"
# --------------------------

def pdf_page_to_base64(pdf_path, page_num=0, zoom=2.0):
    """将 PDF 的指定页转为 PNG 的 base64 字符串"""
    doc = fitz.open(pdf_path)
    page = doc[page_num]
    # 放大渲染,提升 OCR 精度(zoom 越大图片越清晰,但数据量也越大)
    mat = fitz.Matrix(zoom, zoom)
    pix = page.get_pixmap(matrix=mat)
    img_bytes = pix.tobytes("png")
    b64 = base64.b64encode(img_bytes).decode("utf-8")
    doc.close()
    return b64

# 获取 base64 图片
img_b64 = pdf_page_to_base64(pdf_path, page_num, zoom=2.0)

# 构造请求
headers = {
    "Authorization": f"Bearer {api_key}",
    "Content-Type": "application/json"
}
payload = {
    "model": "MinerU2_5-2509-1_2B",
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {"url": f"data:image/png;base64,{img_b64}"}
                },
                {
                    "type": "text",
                    "text": "请将该文档页面内容解析为 Markdown 格式,保留表格、标题等结构,不要遗漏任何文字。"
                }
            ]
        }
    ],
    "max_tokens": 4096,
    "temperature": 0
}

# 发送请求
resp = requests.post(api_url, headers=headers, json=payload)
if resp.status_code == 200:
    markdown = resp.json()["choices"][0]["message"]["content"]
    print(markdown)
else:
    print(f"请求失败,状态码:{resp.status_code}")
    print(resp.text)

测试结果如下:

PDF内容
在这里插入图片描述
识别结果
在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐