本页目录
简短回答:先安装 GPU 版 PaddlePaddle 3.2.1 及以上,再 pip install "paddleocr[doc-parser]",然后调用 PaddleOCRVL().predict("file.pdf")。这会运行完整产线——版面分析加上 0.9B VLM——为每一页输出 Markdown 和 JSON。生产环境中,把 VLM 放到 vLLM、SGLang 或 FastDeploy 推理服务后面,再通过 vl_rec_backend 让产线调用它。没有 GPU 的话,官方托管的 PaddleOCR API 提供的是同一个模型。
我们测了什么、没测什么。我们的测试机没有 GPU,因此没有运行过 PaddleOCR-VL,本页也不报告任何我们自己测得的速度。下面的每条命令和每个参数都已对照 PaddleOCR 3.7.0 wheel、PaddleX 3.7.2 配置和官方文档核实,行号见文末来源。如果想看一个我们在 CPU 上实际运行并计时过的文档解析方案,请见 PP-StructureV3。
PaddleOCR-VL 是什么#
PaddleOCR-VL 是一条两阶段产线,而不是单个模型。1第一阶段是版面分析模型:检测页面上的每个元素(段落、标题、表格、公式、图表、印章),排好阅读顺序并裁剪出来。第二阶段是一个小型视觉语言模型:逐个读取裁剪出的区块,输出 Markdown、HTML 表格、LaTeX 或图表数据表。最后产线按阅读顺序把各部分重新拼接起来。
restructure_pages() 跨页合并。VLM 组件由 NaViT 风格的动态分辨率视觉编码器和 ERNIE-4.5-0.3B 语言模型组成。1Hugging Face API 给出的参数量为 958,588,736(BF16 safetensors),三个版本都一样——v1、1.5 和 1.6 共用同一套架构。4PaddleOCR-VL-1.6-0.9B 这类名称中的“0.9B”仅指这个 VLM 组件,并不是另一种模型规模。1
请使用完整产线。官方文档对此说得很直白:通过 Transformers、vLLM、SGLang 或 FastDeploy 把整页图片直接送进 VLM,与运行 PaddleOCR-VL“is not equivalent”(并不等价)。如果发现精度差或出现幻觉文字,首先检查版面分析阶段有没有在运行。1
选 PaddleOCR-VL 还是 PP-StructureV3?#
两者都能把文档转换为 Markdown 和 JSON,也都包含在 paddleocr[doc-parser] 中。README 的定位是:需要更细粒度坐标(例如表格单元格框和文本行框)时选 PP-StructureV3,VL 系列不返回这些坐标。5PaddleOCR-VL 则是精度之选:在 OmniDocBench v1.5 榜单上,PaddleOCR-VL-1.5 得分 94.50,PP-StructureV3 为 86.73。7PP-StructureV3 在 CPU 上就能流畅运行;PaddleOCR-VL 则是为 GPU 设计的。
版本:v1、1.5 与 1.6#
- PaddleOCR-VL(v1)随 PaddleOCR 3.3.0 发布。支持 109 种语言;文本、表格、公式和图表;arXiv 2510.14528。54
- 支持 Hugging Face Transformers。4
- 官方支持 vLLM。4
- PaddleOCR-VL-1.5随 PaddleOCR 3.4.0 发布。新的 PP-DocLayoutV3 版面模型支持多边形框,新增印章识别、文字定位识别(spotting)、跨页表格合并和标题层级;新增藏文和孟加拉文;arXiv 2601.21957。15
- 1.5 支持 llama.cpp(GGUF)。4
- PaddleOCR-VL-1.6随 PaddleOCR 3.6.0 发布。架构与 1.5 相同;据百度称,古籍、生僻字、印章、文字定位和图表的效果更好。技术报告 arXiv 2606.03264 于 6 月 3 日发布。19
- 发布独立的高吞吐文档解析方案 HPD-Parsing(见下文)。5
| 版本 | Python / 命令行取值 | 版面模型 | VLM 组件 |
|---|---|---|---|
| PaddleOCR-VL(v1) | v1 | PP-DocLayoutV2 | PaddleOCR-VL-0.9B |
| PaddleOCR-VL-1.5 | v1.5 | PP-DocLayoutV3 | PaddleOCR-VL-1.5-0.9B |
| PaddleOCR-VL-1.6 | v1.6(默认) | PP-DocLayoutV3 | PaddleOCR-VL-1.6-0.9B |
版面模型和组件名来自 PaddleX 3.7.2 的产线配置。3VLM 通过任务提示词工作:v1 支持 OCR:、Table Recognition:、Formula Recognition: 和 Chart Recognition:;1.5 和 1.6 新增 Spotting: 和 Seal Recognition:。4PP-DocLayoutV2 和 V3 使用同样的 25 个标签,包括 display_formula、inline_formula、vertical_text、seal 和 chart。15V3 在一次前向中同时预测多边形框和阅读顺序;它自己的模型卡称 GLM-OCR 也在使用它。15
基准测试:PaddleOCR-VL 处于什么水平#
文档解析领域引用最多的基准是 OmniDocBench,由 OpenDataLab 发布——这个团队也在开发 MinerU,而 MinerU 就出现在同一张榜单上。下面的榜单来自 OmniDocBench 自己的 README,而不是百度。各行数据按原样照录。6其中“综合得分”(Overall)为 ((1 − TextEdit) × 100 + TableTEDS + FormulaCDM) / 3,基于 1,651 页计算。6
OmniDocBench v1.6_full 端到端综合得分,越高越好。取自截至 2026 年 10 月 27 日 OmniDocBench README 中 35 行数据的前 10 名。
| 模型(规模) | 综合得分 |
|---|---|
| TeleOCR (1.2B) | 96.91 |
| OvisOCR2 (0.8B) | 96.47 |
| PaddleOCR-VL-1.6 (0.9B) | 96.34 |
| MinerU2.5-Pro (1.2B) | 95.75 |
| GLM-OCR (0.9B) | 95.22 |
| PaddleOCR-VL-1.5 (0.9B) | 94.93 |
| PaddleOCR-VL v1 (0.9B) | 94.18 |
| Unlimited-OCR (3B) | 94.00 |
| Qianfan-OCR (4B) | 93.90 |
| Youtu-Parsing (2.5B) | 93.74 |
在这十个系统中,PaddleOCR-VL-1.6 的公式得分最高(CDM 97.53),TeleOCR 的表格得分领先,OvisOCR2 的文本编辑距离最好。6作为参照,同一张表中 Gemini 3 Pro 为 92.91,dots.ocr 为 90.77,GPT-5.2 为 86.59,MinerU 产线为 86.47。GPT-4o 和 PP-StructureV3 不在这张表中。6请记住,在一个 1,651 页的基准上相差 1–2 分,对你自己的文档说明不了太多——请用自己的样本测试。
每个版本提升了多少?#
拍摄页面的提升最大。综合得分。OmniDocBench v1.6_full 为第三方基准;Real5-OmniDocBench(扫描、弯曲、屏幕翻拍、光照、倾斜)由 PaddleOCR 团队构建。
| 版本 | OmniDocBench v1.6_full(第三方) | Real5-OmniDocBench(官方自报) |
|---|---|---|
| PaddleOCR-VL v1 | 94.18 | 85.54 |
| PaddleOCR-VL-1.5 | 94.93 | 92.05 |
| PaddleOCR-VL-1.6 | 96.34 | 93.19 |
.eval_results/real5_omnidocbench.yaml。Real5-OmniDocBench 是百度自己的基准。在 Real5-OmniDocBench 上,从 v1 到 1.5 的跃升主要来自困难样本:倾斜页面从 77.47 提升到 91.66,屏幕翻拍从 82.54 提升到 91.76,这与 PP-DocLayoutV3 改用多边形版面框相吻合。8请把这些当作厂商数据看待。在独立榜单上提升幅度更小:v1 到 1.5 为 +0.75,1.5 到 1.6 为 +1.41。6
硬件要求#
在 NVIDIA GPU 上,要求取决于运行 VLM 的推理引擎:1
| VLM 推理引擎 | 计算能力(CC) | CUDA |
|---|---|---|
| PaddlePaddle(默认) | ≥ 7.0 | ≥ 11.8 |
| Transformers | ≥ 7.0 | ≥ 11.8 |
| vLLM | ≥ 8.0 | ≥ 12.6 |
| SGLang | 8.0 – 低于 12.0 | ≥ 12.6 |
| FastDeploy | 8.0 – 低于 12.0 | ≥ 12.6 |
- T4 和 V100(CC 7.x)可以启动 vLLM,但文档说“prone to timeouts or OOM”(容易超时或显存不足),不推荐使用。这些显卡请使用 PaddlePaddle 推理引擎。1
- RTX 30/40/50 和 A10/A100 的 CC 均在 8 以上,所有后端都可用,只是 RTX 50(Blackwell,CC 12)不在 SGLang 和 FastDeploy 的支持范围内。Blackwell 有单独的指南:需要支持 CUDA 12.9+ 的驱动和
-sm120镜像。11 - 显存:仓库中没有任何地方给出最低要求。唯一与显存相关的说明是针对 NVIDIA RTX 3060 的调优建议:为 vLLM 或 FastDeploy 设置
gpu-memory-utilization: 0.7。1 - x64 CPU:支持矩阵把 x64 CPU 上的本地 PaddlePaddle 推理标为支持,但 MCP 服务器文档说 VL 系列“CPU inference is not recommended”(不推荐 CPU 推理)。116我们没有测过耗时。
各推理方式支持哪些设备#
| 版面 + VLM 推理引擎 | NVIDIA | x64 CPU | Apple Silicon | AMD | 昇腾 |
|---|---|---|---|---|---|
| PaddlePaddle | 支持 | 支持 | 支持 | 支持 | 待定 |
| Transformers | 支持 | 支持 | 待定 | 待定 | 待定 |
| + vLLM 服务 | 支持 | 不支持 | 不支持 | 支持 | 支持 |
| + SGLang 服务 | 支持 | 不支持 | 不支持 | 待定 | 待定 |
| + FastDeploy 服务 | 支持 | 不支持 | 不支持 | 待定 | 待定 |
| + MLX-VLM 服务 | 不支持 | 不支持 | 支持 | 不支持 | 不支持 |
| + llama.cpp 服务 | 支持 | 支持 | 待定 | 待定 | 待定 |
“+ 服务”各行表示版面分析在客户端用 PaddlePaddle 运行,VLM 在对应的推理服务上运行。“待定”表示文档标注为进行中或尚未验证。官方矩阵还涵盖昆仑芯、海光、沐曦、天数智芯和 Intel Arc(见下文)。vLLM、SGLang 和 FastDeploy 不能在 Windows 上原生运行,因此在 Windows 上请使用 Docker。1
安装#
VL 指南要求 PaddlePaddle 3.2.1 或更高版本、Python 3.9–3.13,并建议使用虚拟环境。不要同时安装 CPU 版和 GPU 版 PaddlePaddle。1
python -m venv .venv_paddleocr && source .venv_paddleocr/bin/activate
python -m pip install paddlepaddle-gpu==3.2.1 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/
python -m pip install -U "paddleocr[doc-parser]"python -m venv .venv_paddleocr && source .venv_paddleocr/bin/activate
python -m pip install paddlepaddle==3.2.1 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
python -m pip install -U "paddleocr[doc-parser]"# 约 8 GB 的镜像,已预装 PaddlePaddle;需要支持 CUDA 12.6+ 的驱动
docker run -it --gpus all --network host --user root \
ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddleocr-vl:latest-nvidia-gpu \
/bin/bash
# 然后在容器内运行 paddleocr 命令行或 Python
# 离线版(约 10 GB):...:latest-nvidia-gpu-offline两点来自我们自己测试的版本说明。使用 PyPI 上默认的 paddlepaddle(撰写本文时为 3.3.1)时,我们在 CPU 上运行 PP-OCRv6 推理会因 ConvertPirAttribute2RuntimeAttribute 错误而崩溃——所以我们锁定了指南中给出的确切版本。另外,如果看到 A dependency error occurred during pipeline creation,说明安装 paddleocr 时没有带 [doc-parser] extra。两者都收录在我们的报错排查中;各操作系统和 CUDA 选项的完整组合见安装教程。
Python 与命令行用法#
from paddleocr import PaddleOCRVL
pipeline = PaddleOCRVL() # 默认加载 v1.6
# pipeline = PaddleOCRVL(pipeline_version="v1.5")
# pipeline = PaddleOCRVL(engine="transformers")
# pipeline = PaddleOCRVL(device="cpu") # Apple Silicon
for res in pipeline.predict("paper.png"):
res.print()
res.save_to_json(save_path="output")
res.save_to_markdown(save_path="output")
res.save_to_word(save_path="output") # .docxpaddleocr doc_parser -i paper.png --save_path ./output
# 指定版本,或切换推理引擎
paddleocr doc_parser -i paper.png --pipeline_version v1.5 --save_path ./output
paddleocr doc_parser -i paper.png --engine transformers --save_path ./output
# 先校正旋转或弯曲的页面
paddleocr doc_parser -i photo.jpg --use_doc_orientation_classify True --use_doc_unwarping Truepipeline_version 只接受 "v1"、"v1.5" 和 "v1.6",分别对应 PaddleX 产线 PaddleOCR-VL、PaddleOCR-VL-1.5 和 PaddleOCR-VL-1.6。2每个结果的 parsing_res_list 结构与 PP-StructureV3 相同——block_label、block_content、block_bbox、block_order——保存方法有 save_to_json、save_to_markdown、save_to_html、save_to_xlsx、save_to_word 和 save_to_img。1
多页 PDF:restructure_pages()#
PDF 会按页各返回一个结果。要合并跨页延续的表格、在整篇文档范围内重建标题层级,或把所有内容合并成一个结果,请把页面列表传给 restructure_pages():1
from paddleocr import PaddleOCRVL
pipeline = PaddleOCRVL()
pages = list(pipeline.predict("report.pdf"))
# 代码中 merge_tables 和 relevel_titles 默认已经是 True
merged = pipeline.restructure_pages(pages, concatenate_pages=True)
for res in merged: # concatenate_pages=True 时只有一个结果
res.save_to_markdown(save_path="output")PaddleOCR 3.7.0 中的签名是 restructure_pages(res_list, merge_tables=True, relevel_titles=True, concatenate_pages=False),返回一个列表。2官方示例显式传入了 merge_tables=True, relevel_titles=True,看起来像是默认关闭;实际上并非如此。只有 concatenate_pages 需要手动打开。另外还有一个更简单的 concatenate_markdown_pages(markdown_list) 辅助方法,与 PP-StructureV3 中的那个相同。
常用参数#
| 参数 | 默认值 | 作用 |
|---|---|---|
pipeline_version | "v1.6" | 加载哪个版本。 |
vl_rec_backend | native(配置) | native、vllm-server、sglang-server、fastdeploy-server、mlx-vlm-server、llama-cpp-server。 |
vl_rec_server_url | — | VLM 服务的 URL,例如 http://localhost:8118/v1。 |
vl_rec_max_concurrency | — | 客户端向服务端发送的并发请求数。 |
use_layout_detection | True | 关闭后,整张图片会连同一个提示词直接送给 VLM。 |
prompt_label | "ocr" | 仅在关闭版面检测时生效:ocr、formula、table、chart、spotting、seal。 |
use_chart_recognition | False | 把图表转换为表格。 |
use_seal_recognition | False | 识别印章(1.5+)。 |
use_ocr_for_image_block | False | 同时识别被标为图片的区块中的文字。 |
use_doc_orientation_classify / use_doc_unwarping | False | 在版面分析前校正旋转或弯曲的页面。 |
merge_layout_blocks | True | 合并相邻的版面区块。 |
layout_shape_mode | "auto" | 框的几何形状:rect、quad、poly 或 auto。 |
markdown_ignore_labels | 7 个标签 | 不写入 Markdown 的区块:number、footnote、header、header_image、footer、footer_image、aside_text。 |
max_new_tokens、temperature、top_p、repetition_penalty | — | VLM 采样参数。 |
vl_rec_* 类参数只能在构造函数中设置;其余参数既可在构造函数中设置,也可在每次调用 predict() 时设置,但 prompt_label、layout_shape_mode 和采样参数只能在 predict() 中设置。默认值来自使用文档和 3.7.0 源码;prompt_label 的取值来自 PaddleX 3.7.2 代码,它接受六个标签,尽管报错信息里只列出四个。123有一处矛盾:文档给出 layout_threshold 的默认值为 0.5,而 PaddleX 配置中 1.5 和 1.6 使用 0.3,v1 则按类别使用 0.4–0.5。3要查看你的产线实际使用的配置,可调用 pipeline.export_paddlex_config_to_yaml("vl.yaml");修改后再用 PaddleOCRVL(paddlex_config="vl.yaml") 传回。2
服务化部署:vLLM、SGLang、FastDeploy、llama.cpp#
上面的快速开始方式在一个 Python 进程内运行全部内容。文档称其适合“rapid validation”(快速验证),生产环境则推荐使用独立的 VLM 推理服务。1分工如下:VLM 服务端只运行 0.9B 模型;你的客户端——仍然是 PaddleOCRVL 产线——在本地做版面分析,再把裁剪出的区块发送给服务端。由于客户端仍要运行版面模型,文档建议客户端也使用 GPU。1
启动 VLM 推理服务#
docker run -it --rm --gpus all --network host \
ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddleocr-genai-vllm-server:latest-nvidia-gpu \
paddleocr genai_server --model_name PaddleOCR-VL-1.6-0.9B --host 0.0.0.0 --port 8118 --backend vllmdocker run -it --rm --gpus all --network host \
ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddleocr-genai-fastdeploy-server:latest-nvidia-gpu \
paddleocr genai_server --model_name PaddleOCR-VL-1.6-0.9B --host 0.0.0.0 --port 8118 --backend fastdeploypython -m venv .venv_vlm && source .venv_vlm/bin/activate
python -m pip install "paddleocr[doc-parser]"
paddleocr install_genai_server_deps vllm # 或:sglang、fastdeploy
paddleocr genai_server --model_name PaddleOCR-VL-1.6-0.9B --backend vllm --port 8118# GGUF 文件:huggingface.co/PaddlePaddle/PaddleOCR-VL-1.6-GGUF
./build/bin/llama-server \
-m /path/to/PaddleOCR-VL-1.6-GGUF.gguf \
--mmproj /path/to/PaddleOCR-VL-1.6-GGUF-mmproj.gguf \
--port 8111 --host 0.0.0.0 --temp 0以上命令原样摘自使用教程。1install_genai_server_deps 安装的 vLLM 和 SGLang 构建面向 CUDA 12.6,且 vLLM/SGLang 需要 FlashAttention 2.8.2。Transformers 推理引擎不能与 vLLM 或 SGLang 共用一个环境,因为它们需要不同版本的 transformers。1服务端调优参数写在一个 YAML 文件里,通过 --backend_config 传入(例如 vLLM 的 gpu-memory-utilization 和 max-num-seqs)。
| Docker 镜像 | 大小 | 离线版 |
|---|---|---|
paddleocr-vl(完整产线) | ~8 GB | ~10 GB |
paddleocr-genai-vllm-server | ~13 GB | ~15 GB |
paddleocr-genai-fastdeploy-server | ~43 GB | ~45 GB |
让产线调用推理服务#
from paddleocr import PaddleOCRVL
pipeline = PaddleOCRVL(
vl_rec_backend="vllm-server", # 或 sglang-server、fastdeploy-server
vl_rec_server_url="http://localhost:8118/v1",
vl_rec_max_concurrency=16, # 根据你的 GPU 调整
)
for res in pipeline.predict("report.pdf"):
res.save_to_markdown(save_path="output")paddleocr doc_parser --input report.pdf \
--vl_rec_backend vllm-server \
--vl_rec_server_url http://localhost:8118/v1# 用普通 `vllm serve` 启动的服务(端口 8000):传入 HF 仓库 ID
paddleocr doc_parser --input report.pdf \
--vl_rec_backend vllm-server \
--vl_rec_server_url http://localhost:8000/v1 \
--vl_rec_api_model_name 'PaddlePaddle/PaddleOCR-VL-1.6'托管的 VLM 端点用法相同,另加 --vl_rec_api_key。根据文档,SiliconFlow(硅基流动)只提供 v1 和 1.5(请使用 pipeline_version="v1.5"),Novita AI 只提供 v1。1
完整的 HTTP API#
如果需要一个运行整条产线的 HTTP 接口,文档提供了 Docker Compose 方案(监听 8080 端口)或 paddlex --serve --pipeline PaddleOCR-VL。两者都一次只处理一个请求;需要并发时,文档指向另一套高性能服务化部署(HPS)方案。1请求格式和客户端见我们的服务化部署与 API 指南(英文)。
官方公布的吞吐量(百度数据)#
百度公布了 PaddleOCR-VL-1.5 在 OmniDocBench v1.5 上的端到端吞吐量(单张 A100,批大小 512):FastDeploy 2.3 为 1.4335 页/秒,vLLM 0.10.2 为 1.1433,SGLang 0.5.2 为 1.0091。同一张表中,MinerU2.5 在 vLLM 上为 0.9984 页/秒。10这些表格在仓库中只以图片形式存在,数值由我们转录。1.6 的文档称其推理速度与 1.5 相同。9我们没有自己的 GPU 数据。
Apple Silicon、AMD、昇腾及其他硬件#
每种加速硬件都有自己的官方指南,各自注明了一款经过验证的设备:11
| 硬件 | 验证设备 | VLM 运行方式 |
|---|---|---|
| Apple Silicon | M4(列出了 M1–M3,未确认) | PaddlePaddle 在 CPU 上运行,或 pip install "mlx-vlm>=0.3.11"、mlx_vlm.server --port 8111,客户端使用 --vl_rec_backend mlx-vlm-server。不支持 Docker。 |
| AMD GPU | MI300X | vLLM 镜像 paddleocr-genai-vllm-server:latest-amd-gpu(约 31 GB) |
| NVIDIA Blackwell | RTX 5070 | 支持 CUDA 12.9+ 的驱动、-sm120 镜像、从 cu129 源安装 PaddlePaddle |
| 华为昇腾 | 910B | 不支持本地直接推理;使用 vLLM 服务 |
| 昆仑芯 XPU | P800 | PaddlePaddle 或 FastDeploy |
| 沐曦 GPU | C550 | PaddlePaddle 或 FastDeploy |
| 海光 DCU | K100AI | PaddlePaddle 或 vLLM |
| Intel Arc | Arc B60 Pro | vLLM |
| 天数智芯 GPU | BI-V150 | PaddlePaddle 或 FastDeploy |
Hugging Face 与 Transformers#
模型权重发布在 Hugging Face 上:PaddlePaddle/PaddleOCR-VL、-1.5 和 -1.6,另有一个 GGUF 版本和独立的 PP-DocLayoutV3 版面模型。模型卡中附有一个直接调用 Transformers 的示例,发送一张图片和一个任务提示词,例如 OCR: 或 Table Recognition:;1.5 和 1.6 需要 transformers>=5.0.0。4这是元素级识别——适合处理裁剪好的表格或公式,但不是整页解析器。如果要通过 Transformers 处理整篇文档,请保留产线并切换其推理引擎:PaddleOCRVL(engine="transformers")。1
托管 API(无需 GPU)#
PaddleOCR 3.7.0 自带官方托管服务的客户端,文档解析默认使用 PaddleOCR-VL-1.6。13你需要从 AI Studio(飞桨星河社区)获取访问令牌。我们对照 3.7.0 源码核实了代码,但没有实际调用过该服务。
# export PADDLEOCR_ACCESS_TOKEN="..."
from paddleocr import PaddleOCRClient, Model
client = PaddleOCRClient()
result = client.parse_document(
file_path="report.pdf",
model=Model.PADDLE_OCR_VL_16, # 默认值
)
for page in result.pages:
print(page.markdown_text)
client.close()export PADDLEOCR_ACCESS_TOKEN="..."
paddleocr api --model_type doc_parsing --file_path report.pdfAI Studio 的配额页面称,每个用户每个模型每天最多解析 3,000 页,且每个文件只解析前 100 页;异步 API 指南则说单个请求最多支持 1,000 页 PDF。两份官方页面说法不一致,请用自己的文件测试。14我们能查阅到的页面上都没有公布价格。详细说明、TypeScript 和 Go 的 SDK 以及错误码见我们的 API 页面(英文)。
HPD-Parsing:主打吞吐量的姊妹方案#
HPD-Parsing 于 2026 年 7 月 22 日发布,是一个独立的约 1B 文档 VLM,基于 InternVL3.5-1B 构建,面向大批量解析。它不是把一页解码成一条长 token 序列,而是由一个主版面分支派生出多个内容分支并行解码,并通过渐进式多 token 预测(Progressive Multi-Token Prediction,P-MTP)进一步减少解码步数。12
- 精度(官方自报):在 OmniDocBench v1.6 上综合得分 94.91。HPD-Parsing 不在 OmniDocBench README 的表格中,因此没有独立数据;作为对比,PaddleOCR-VL-1.6 在该表中为 96.34。126
- 速度(官方自报):在 A800 80GB 上使用 vLLM、批大小 512 时为 2.68 页/秒、4,752.1 tokens/秒,自回归基线为 1.02 页/秒。12
- 环境要求:NVIDIA GPU(已在 H100、H800、H20、A100、A800、A30、L20、RTX Pro 6000 上验证)、支持 CUDA 12.8+ 的驱动、Linux x86-64、Python 3.10–3.13,以及基于 v0.17.1 的定制 vLLM 构建。它完全不使用
paddleocr包。12
docker run -it --rm --gpus all --network host \
ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/hpd-parsing-vllm:latest-nvidia-gpu服务监听 8118 端口,兼容 OpenAI API;客户端每页都发送固定提示词 document parsing with fork.。12如果每 GPU 小时处理的页数比最后一点精度更重要,且你使用的是受支持的数据中心 GPU,选 HPD-Parsing;如果看重精度、更广泛的硬件支持以及 paddleocr 工具链,选 PaddleOCR-VL。
微调#
VLM 可以通过 ERNIEKit 进行监督微调(SFT);版面模型和阅读顺序模型则不能。1有一处不一致:v1 算法文档的 FAQ 在一个回答中说微调“not supported”(不支持),在另一个回答中又推荐用 ERNIEKit SFT。以使用教程中的 ERNIEKit 章节为准。
常见问题#
PaddleOCR-VL 和 PaddleOCR-VL-0.9B 有什么区别?
PaddleOCR-VL 是完整产线:版面模型加识别模型。PaddleOCR-VL-0.9B(以及 PaddleOCR-VL-1.5-0.9B、PaddleOCR-VL-1.6-0.9B)只是其中的 VLM 识别模型。不经过版面分析阶段、直接用 0.9B 模型处理整页,与完整产线并不等价,通常精度也更低。
如何指定使用 PaddleOCR-VL-1.6?
它是 PaddleOCR 3.6.0 及以后版本的默认版本:PaddleOCRVL() 就会加载它。如需显式指定,传入 pipeline_version="v1.6",命令行则用 --pipeline_version v1.6。对于 VLM 推理服务,模型名是 PaddleOCR-VL-1.6-0.9B。
PaddleOCR-VL 必须用 GPU 吗?
严格来说不是——官方矩阵把使用 PaddlePaddle 的 x64 CPU 和 Apple Silicon 列为支持——但文档说 VL 系列不推荐 CPU 推理。在 NVIDIA 上,PaddlePaddle 推理引擎需要计算能力 7.0+ 和 CUDA 11.8+;vLLM 需要 CC 8.0+ 和 CUDA 12.6+。没有 GPU 时,托管 API 是现实的选择,或者改用 PP-StructureV3,我们在 4 核 CPU 上运行过它。
PaddleOCR-VL 需要多少显存?
官方文档没有给出最低要求。唯一与显存相关的说明针对 RTX 3060:在 vLLM 或 FastDeploy 服务上把 gpu-memory-utilization 设为 0.7。我们没有运行过,所以不做猜测。
PaddleOCR-VL 有 API 吗?
有两种。官方托管 API(AI Studio)默认运行 PaddleOCR-VL-1.6;用访问令牌调用 PaddleOCRClient().parse_document(...) 或 paddleocr api --model_type doc_parsing 即可。或者自行部署:Docker Compose 提供一个监听 8080 端口的完整 HTTP 服务,paddleocr genai_server 则提供一个仅含 VLM、兼容 OpenAI 接口的服务供产线调用。见服务化部署与 API(英文)。
PaddleOCR-VL 比 MinerU 或 GPT-5 更好吗?
在 OmniDocBench v1.6_full 榜单上,PaddleOCR-VL-1.6(96.34)领先于 MinerU2.5-Pro(95.75)、Gemini 3 Pro(92.91)和 GPT-5.2(86.59),落后于 TeleOCR(96.91)和 OvisOCR2(96.47)。这只是一个基准;一两分的差距在你的文档上未必成立。我们的对比页面(英文)涵盖了更多工具。
PaddleOCR-VL 支持多少种语言?
能把整个 PDF 转换成一个 Markdown 文件吗?
可以。先用 list(pipeline.predict("file.pdf")) 收集各页结果,再调用 pipeline.restructure_pages(pages, concatenate_pages=True)。跨页表格合并和标题层级重建默认都是开启的。
参考来源
- PaddleOCR-VL 使用教程,docs/version3.x/pipeline_usage/PaddleOCR-VL.en.md(仓库 commit dab3fe3,2026-09-16):架构(第 10 行)、版本说明(12–14)、完整产线警告(16–22)、硬件支持矩阵(44–237)、CC/CUDA 要求(240–247)、安装(312–345)、命令行与 Python(356–1690)、VLM 推理服务(1695–1855)、客户端(1856–1946)、调优(1948–2000)、服务化部署(2002–2160)、微调(3365–3369)。中文版:PaddleOCR-VL.md。
- PaddleOCR 3.7.0 包源码(PyPI wheel),
paddleocr/_pipelines/paddleocr_vl.py:_AVAILABLE_PIPELINE_VERSIONS = ["v1","v1.5","v1.6"]、默认值"v1.6"、六个vl_rec_backend取值、restructure_pages(res_list, merge_tables=True, relevel_titles=True, concatenate_pages=False)(第 25–34、219–229 行)。paddleocr.dev 于 2026-10-27 阅读。 - PaddleX 3.7.2 wheel(PyPI,2026-06-25):
configs/pipelines/PaddleOCR-VL.yaml、PaddleOCR-VL-1.5.yaml、PaddleOCR-VL-1.6.yaml——版面模型(第 25/26 行)、VLM 组件名(84/60/60)、layout_threshold(28–53 / 29 / 29)、batch_size64 与use_queues(4–6);prompt_label可接受的取值见inference/pipelines/paddleocr_vl/pipeline.py:855-868。 - Hugging Face 模型卡与 API:PaddleOCR-VL(架构 L53,日期 L78–80,提示词 L172–182)、PaddleOCR-VL-1.5(L43、L55–67、L79–80)、PaddleOCR-VL-1.6(L53–81,transformers>=5.0.0 见 L164,提示词 L175 与 L197–204)。参数量 958,588,736(BF16 safetensors 总计)取自
huggingface.co/api/models/PaddlePaddle/PaddleOCR-VL*,2026-10-27 获取。 - PaddleOCR README.md:3.3.0 的发布条目(第 119 行)、3.4.0 / PaddleOCR-VL-1.5 及“111 languages”(107–113)、3.6.0 / PaddleOCR-VL-1.6(85–89)、HPD-Parsing(65–68)。
- OmniDocBench 榜单,github.com/opendatalab/OmniDocBench
main分支 README,2026-10-27 获取:标题为“OmniDocBench (v1.6_full)”的表格(第 524 行)、综合得分公式(519–521)、1651 页(104)、更新日志“[2026/04/30] Updated from v1.6 to v1.7”(71)与“[2026/09/11] Added TeleOCR, OvisOCR2, and Unlimited-OCR”(66)。各行数据按原样照录。 - OmniDocBench
v1_5分支 README:表格“OmniDocBench (v1.5)”(第 417 行)、PaddleOCR-VL-1.5 94.50(432–443)、PaddleOCR-VL 92.86(464–473)、PP-StructureV3 86.73(806–817)。 - Real5-OmniDocBench 得分取自各 PaddleOCR-VL Hugging Face 仓库中的
.eval_results/real5_omnidocbench.yaml。该数据集由 PaddleOCR 团队基于 OmniDocBench v1.5 构建(HF PaddleOCR-VL-1.6 模型卡 L275),因此属于官方自报数据。 - PaddleOCR-VL-1.6 算法文档
docs/version3.x/algorithm/PaddleOCR-VL/PaddleOCR-VL-1.6.en.md:OmniDocBench v1.6 得分 96.33(第 3 行),与 1.5“identical inference speeds”(64);技术报告 arXiv 2606.03264(2026-06-03)。1.5 的算法文档里仍留着占位文字“achieves xxx% accuracy”(第 14 行)。 - 吞吐量表格见
algorithm/PaddleOCR-VL/PaddleOCR-VL-1.5.en.md:65-69(OmniDocBench v1.5,单张 A100)与PaddleOCR-VL.en.md:113-120(OmniDocBench v1.0)。原文仅以图片形式发布,数值由 paddleocr.dev 转录。 docs/version3.x/pipeline_usage/下的各硬件指南:PaddleOCR-VL-Apple-Silicon.en.md(第 12–19、87–109 行)、-AMD-GPU.en.md(12、123、127)、-NVIDIA-Blackwell.en.md(20–22、64、97–98)、-Huawei-Ascend-NPU.en.md(12、20)、-Hygon-DCU、-Iluvatar-GPU、-Intel-Arc-GPU、-Kunlunxin-XPU、-MetaX-GPU(各自第 12 行)。- HPD-Parsing:使用文档(第 7–26、104–155 行;中文版)与 Hugging Face 模型卡(L15、L48、L57、L75、L213)。所有精度和速度数据均为官方自报。
- 官方 API SDK 文档
docs/version3.x/inference_deployment/serving/paddleocr_official_api/python.en.md与cli.en.md;PaddleOCR 3.7.0 源码paddleocr/_api_client/client.py:102-117与results.py:29-51。 - AI Studio《API Quota Rules and Error Code Description》(2026-02-10 更新,ai.baidu.com/ai-doc/AISTUDIO/pmjcld5qm)与《Asynchronous API Usage Guide》(2026-02-04 更新,Mml7n69e7)。
- PP-DocLayoutV2 / PP-DocLayoutV3 标签列表:PaddlePaddle/PP-DocLayoutV3 以及 PaddleOCR-VL 仓库中 PP-DocLayoutV2 文件夹内
inference.yml的第 27–52 行;V3 模型卡 L23、L37、L48–50。 - PaddleOCR MCP 服务器文档
docs/version3.x/deployment/mcp_server.en.md:261:PaddleOCR-VL 系列“CPU inference is not recommended”。