字节笔记本

2026年2月22日

PaddleOCR-VL: 0.9B 超轻量级多语言文档解析视觉语言模型

PaddleOCR-VL 是百度飞桨团队开源的一款超轻量级多语言文档解析视觉语言模型,仅需 0.9B 参数即可实现 SOTA 级别的文档解析性能,支持 109 种语言的文本、表格、公式和图表识别。

项目简介

PaddleOCR-VL 是一款专为文档解析设计的 SOTA 级资源高效模型。其核心组件 PaddleOCR-VL-0.9B 是一个紧凑而强大的视觉语言模型(VLM),集成了 NaViT 风格的动态分辨率视觉编码器与轻量级 ERNIE-4.5-0.3B 语言模型,实现精准的文档元素识别。

该模型在多项公开基准测试和内部基准测试中均达到 SOTA 性能,在页面级文档解析和元素级识别方面显著优于现有解决方案,同时保持极快的推理速度,非常适合实际部署场景。

核心特性

紧凑而强大的 VLM 架构

采用创新的视觉语言模型设计,专为资源高效推理而优化:

  • 集成 NaViT 风格动态高分辨率视觉编码器
  • 结合轻量级 ERNIE-4.5-0.3B 语言模型
  • 显著提升识别能力和解码效率
  • 在保持高精度的同时降低计算需求

SOTA 文档解析性能

  • 在页面级文档解析和元素级识别方面均达到 SOTA 性能
  • 显著优于现有的基于流水线的解决方案
  • 与顶级视觉语言模型相比具有强劲竞争力
  • 擅长识别复杂文档元素:文本、表格、公式、图表
  • 支持手写文本和历史文档等挑战性内容类型

多语言支持

支持 109 种语言,涵盖全球主要语言:

  • 中文、英文、日文、拉丁文、韩文
  • 俄文(西里尔字母)、阿拉伯文、印地文(天城文)、泰文等不同文字体系

模型架构

PaddleOCR-VL 采用编码器-解码器架构:

  • 视觉编码器:NaViT 风格动态分辨率处理
  • 语言模型:ERNIE-4.5-0.3B 轻量级大语言模型
  • 参数规模:仅 0.9B,适合端侧部署

安装使用

安装依赖

bash
# 安装 PaddlePaddle (CUDA 12.6 版本示例)
python -m pip install paddlepaddle-gpu==3.2.1 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/

# 安装 PaddleOCR
python -m pip install -U "paddleocr[doc-parser]"

# Linux 系统安装 safetensors
python -m pip install https://paddle-whl.bj.bcebos.com/nightly/cu126/safetensors/safetensors-0.6.2.dev0-cp38-abi3-linux_x86_64.whl

# Windows 系统安装 safetensors
python -m pip install https://xly-devops.cdn.bcebos.com/safetensors-nightly/safetensors-0.6.2.dev0-cp38-abi3-win_amd64.whl

注意:macOS 用户请使用 Docker 搭建环境

CLI 使用

bash
paddleocr doc_parser -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png

Python API 使用

python
from paddleocr import PaddleOCRVL

pipeline = PaddleOCRVL(pipeline_version="v1")
output = pipeline.predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png")

for res in output:
    res.print()
    res.save_to_json(save_path="output")
    res.save_to_markdown(save_path="output")

使用 vLLM 加速推理

bash
# 启动 vLLM 推理服务
docker run \
  --rm \
  --gpus all \
  --network host \
  ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddleocr-genai-vllm-server:latest \
  paddleocr genai_server --model_name PaddleOCR-VL-0.9B --host 0.0.0.0 --port 8080 --backend vllm

# 调用服务
paddleocr doc_parser \
  -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png \
  --vl_rec_backend vllm-server \
  --vl_rec_server_url http://127.0.0.1:8080/v1

Transformers 库支持

python
from PIL import Image
import torch
from transformers import AutoModelForCausalLM, AutoProcessor

model_path = "PaddlePaddle/PaddleOCR-VL"
image_path = "test.png"
task = "ocr"  # 可选: 'ocr' | 'table' | 'chart' | 'formula'

DEVICE = "cuda" if torch.cuda.is_available() else "cpu"

PROMPTS = {
    "ocr": "OCR:",
    "table": "Table Recognition:",
    "formula": "Formula Recognition:",
    "chart": "Chart Recognition:",
}

image = Image.open(image_path).convert("RGB")
model = AutoModelForCausalLM.from_pretrained(
    model_path,
    trust_remote_code=True,
    torch_dtype=torch.bfloat16
).to(DEVICE).eval()

processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)

messages = [{
    "role": "user",
    "content": [
        {"type": "image", "image": image},
        {"type": "text", "text": PROMPTS[task]},
    ]
}]

inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_dict=True,
    return_tensors="pt"
).to(DEVICE)

outputs = model.generate(**inputs, max_new_tokens=1024)
outputs = processor.batch_decode(outputs, skip_special_tokens=True)[0]
print(outputs)

性能表现

OmniDocBench v1.5 基准测试

PaddleOCR-VL 在整体、文本、公式、表格和阅读顺序等指标上均达到 SOTA 性能。

元素级识别性能

任务类型性能表现
文本识别OmniDocBench-OCR-block 评测领先
表格识别支持中英文、有无边框、合并单元格等复杂场景
公式识别支持印刷体、手写体、复杂公式
图表识别多样化图表类型精准识别

最新动态

  • 2025.11.07: Transformers 库启用 flash-attn,推理速度更快
  • 2025.11.04: PaddleOCR-VL-0.9B 正式支持 vLLM
  • 2025.10.29: 支持通过 transformers 库调用 PaddleOCR-VL-0.9B
  • 2025.10.16: PaddleOCR-VL 正式发布

相关链接

许可证

Apache-2.0 License

分享: