跳到主要内容

OCR 与文档解析

PaddleOCR 私有化部署:从 1.9MB 的 tiny 检测模型到 0.9B 的 VL 产线,一张卡全部跑通

PaddleOCR 早就不只是「检测 + 识别」两件套了。3.7.0 之后它同时维护着毫秒级的 PP-OCRv6 经典产线和 0.9B 的 PaddleOCR-VL 文档解析产线,两条线对显卡的要求完全不同——选错卡,服务能起来,但会一直超时。

PaddleOCR 是百度 PaddlePaddle 团队维护的开源 OCR 工具链,Apache 2.0 协议,商用无需额外授权。它的定位这两年发生了根本变化:2025 年之前大家装 PaddleOCR 是为了拿到文字框和文字内容,2026 年装它更多是为了把一份 PDF 直接变成结构正确的 Markdown。3.7.0 版本(2026 年 6 月 11 日)推出 PP-OCRv6,检测比 PP-OCRv5_server 提升 4.6%、识别提升 5.1%,并且用一个模型统一覆盖中文、英文、日文和 46 种拉丁语系文字,合计 50 语种;同时 OpenVINO 路径上拿到 5.2 倍 CPU 加速。

另一条线是 PaddleOCR-VL。3.3.0(2025 年 10 月)首次发布,用 NaViT 风格的动态分辨率视觉编码器接 ERNIE-4.5-0.3B 语言模型,支持 109 种语言;3.4.0 的 1.5 版本把语种扩到 111 种;3.6.0(2026 年 5 月 28 日)的 PaddleOCR-VL-1.6 在 OmniDocBench v1.6 上拿到 96.33% 的成绩。1.6 相对 1.5 的做法是「区域感知数据优化」——先定位上一代模型的弱势区域再做定向增强,架构与 1.5 完全兼容,所以升级是零成本平替,改个模型名就行。2026 年 7 月 22 日又追加了 HPD-Parsing,基于 InternVL3.5-1B 的 1B 模型,用分层并行解码在 A800 80GB、batch 512、vLLM 环境下打到 4,752 tokens/s 的峰值吞吐。

真正决定你租哪张卡的,不是参数量而是后端。PaddleOCR-VL 的 vLLM 与 SGLang 后端要求 GPU 算力(Compute Capability)不低于 8.0、CUDA 不低于 12.6。官方明确写了:在算力 7.x 的 T4、V100 上服务「能启动」,但「容易超时或 OOM,因此不推荐」。这是自建 PaddleOCR-VL 最常踩的坑——机器跑起来了,日志也没报错,就是一直卡住。下面按两条产线分别给出可用的卡型和价格。

01 —

当前在维护的模型与产线

经典产线按 MB 算,VL 产线按 B 算,两者解决的问题完全不同

版本参数量显存上下文说明
PP-OCRv6(PaddleOCR 3.7.0)tiny 1.5M / small 7.7M / medium 34.5Mdet 权重 1.9MB / 9.6MB / 59.4MB,rec 权重 4.4MB / 20.4MB / 73.3MB,显存以百 MB 计中英日 + 46 种拉丁语系,共 50 语种当前经典产线的默认选择。medium 检测 86.2%、识别 83.2%,比 PP-OCRv5_server 更准且模型更小;tiny 档位是给端侧和高并发流水线准备的。
PP-OCRv5 server / mobileserver / mobile 两档server det 84.3MB + rec 81MB,合计约 165MB 权重;单卡 24GB 可开很大 batch简体中文、繁体中文、英文、日文、拼音手写已被 PP-OCRv6 超越但仍在维护,好处是文档和第三方集成最成熟。GPU 单图耗时 server 89.55ms + 8.46ms,mobile 10.67ms + 5.43ms,是目前唯一有完整官方推理耗时表的一代。
PaddleOCR-VL-1.6(PaddleOCR 3.6.0)0.9B(Hugging Face 卡片按张量统计标注 1.0B)bf16 权重约 2GB(0.9B × 2 字节);vLLM 实占由 gpu-memory-utilization 决定,官方推荐 0.3109 语种,NaViT 动态分辨率输入当前文档解析的主力,OmniDocBench v1.6 96.33%。与 1.5 架构完全兼容,升级只需换模型名,不用改推理代码。
PaddleOCR-VL-1.5(PaddleOCR 3.4.0)0.9B同 1.6,bf16 权重约 2GB111 语种语种覆盖比 1.6 还多两种,如果你的场景里有 1.6 没覆盖的小语种,这一版仍然值得留着。OmniDocBench 报 94.5%。
HPD-Parsing(2026.07.22)1B,基于 InternVL3.5-1Bbf16 权重约 2GB;官方吞吐数据是在 A800 80GB、batch 512 下测的动态切图,最多 24 个 448×448 图块为高吞吐批量解析设计。分层并行解码 + P-MTP 投机解码,峰值 4,752 tokens/s,是现有最快文档解析器的 2.62 倍、自身自回归基线的 3.06 倍,OmniDocBench v1.6 得分 94.91%。
PP-StructureV3多模型组合产线取决于所选检测/识别/表格子模型组合整页版面 + 表格 + 公式不走 VLM 的结构化路线:版面分析、表格识别、公式识别各用专用小模型拼成产线。3.5.0 起支持导出 Markdown 与 DOCX,适合要求可解释、可逐模块替换的场景。

02 —

该租哪张卡

先看算力等级,再看显存——PaddleOCR-VL 的门槛是算力 8.0,不是显存

  • PP-OCRv6 / PP-OCRv5 经典产线,票据、证照、批量图片识别

    RTX 3090 24GB$0.193/卡·时

    模型权重只有几十 MB,24GB 显存全部用来堆 batch;算力 8.6 同时满足未来切 VL 产线的门槛,而且这是我们最便宜的一张卡。

  • PaddleOCR-VL-1.6 单卡起 vLLM 服务,做文档转 Markdown

    RTX 4090 24GB$0.540/卡·时

    算力 8.9、原生 CUDA 12.6+,FlashAttention 编译顺畅,官方推荐的 gpu-memory-utilization 0.3 在 24GB 上就是约 7GB 显存池,跑 0.9B 模型绰绰有余。

  • 高并发文档解析服务,需要更大 KV cache 和更高 vl_rec_max_concurrency

    RTX 5090 32GB$0.723/卡·时

    多出的 8GB 显存直接换成并发数,版面分析模型和 VLM 可以共卡常驻,不用再为两阶段产线开两台机器。

  • HPD-Parsing 高吞吐批处理,复现 batch 512 的 4,752 tokens/s

    A100 SXM4 80GB$1.088/卡·时

    官方吞吐是在 A800 80GB 上测的,A100 SXM4 80GB 是同代同规格同显存的对应卡型,batch 512 的 KV cache 只有 80GB 级别的卡装得下。

03 —

从空机器到出 Markdown

四步,全部用官方文档里的原话命令

  1. 01

    开一台算力 8.0 以上的实例,装 PaddlePaddle 与 PaddleOCR

    在 NexGPU 控制台选 RTX 4090 或 RTX 3090,从 2,000+ 预置镜像里挑 PyTorch 或 Ubuntu CLI 起步。注意装的是 CUDA 12.6 通道的 paddlepaddle-gpu,官方要求框架版本不低于 3.2.1,PaddleOCR 本体要 3.6.0 以上才带 PaddleOCR-VL-1.6。

    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]>=3.6.0"
  2. 02

    起 VLM 推理服务

    最省事的是直接拉官方 GenAI 服务镜像,vLLM 版约 13GB、FastDeploy 版约 43GB(带 -offline 后缀的是离线镜像)。如果你更想自己控环境,也可以用 paddleocr install_genai_server_deps vllm 装依赖,backend 支持 vllm、sglang、fastdeploy 三种。

    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 vllm
  3. 03

    走完整产线,不要只调 VLM

    官方反复强调:PaddleOCR-VL 是两阶段系统,第一阶段做版面分析、判定阅读顺序并裁出子图,第二阶段才把子图喂给 VLM 识别再按阅读顺序合并。绕过第一阶段直接把整页丢给 VLM,是效果不及预期最常见的原因。产线客户端连上第二步起的服务即可。

    paddleocr install_genai_server_deps vllm
  4. 04

    按显存调两个参数

    vLLM 侧官方推荐 gpu-memory-utilization 设 0.3、max-num-seqs 设 128;如果是显存紧张的小卡(文档以 RTX 3060 举例)则调到 0.7。客户端侧用 vl_rec_max_concurrency 控制并发——服务端要同时服务多个客户端或算力有限时,把这个值降下来。跑完 docker stop,计算费用当秒停止。

    paddleocr genai_server --model_name PaddleOCR-VL-1.6-0.9B --backend vllm --port 8118

算一笔真实的账

假设你要把一批合同 PDF 转成 Markdown,用 PaddleOCR-VL-1.6 跑一次完整批处理。环境准备:RTX 4090 24GB,$0.540/卡·时,拉 13GB 的 vLLM 镜像加装依赖、跑通 demo,约 40 分钟,即 0.67 × $0.540 ≈ $0.36。正式批处理连跑 12 小时:12 × $0.540 = $6.48。中间产物和输出占 20GB,任务结束后再保留 3 天做抽检:20GB × $0.414/GB·月 × 3/30 ≈ $0.83。最后把 5GB 的 Markdown 和 JSON 拉回本地:5 × $0.0081 ≈ $0.04。合计约 $7.71,一次跑完一批合同。如果你走的是经典 PP-OCRv6 产线,同样 12 小时换成 RTX 3090 只要 12 × $0.193 = $2.32。两个数字都没有起步价、没有配额申请、没有开通费;计算费用在实例停止的那一秒就停,存储盘销毁前才继续计费。

04 —

常见问题

PaddleOCR 本地部署到底需要多大显存?

分两种情况。经典 PP-OCRv6 产线的权重按 MB 算——tiny 检测才 1.9MB、medium 识别也只有 73.3MB,显存需求以百 MB 计,瓶颈是你想开多大 batch。PaddleOCR-VL-1.6 是 0.9B 模型,bf16 权重约 2GB,但真正占多少显存由 vLLM 的 gpu-memory-utilization 决定,官方推荐 0.3;在 24GB 卡上就是约 7GB 的显存池。所以 24GB 是一个非常舒服的起点,NexGPU 的 RTX 3090 24GB $0.193/卡·时 和 RTX 4090 24GB $0.540/卡·时 都在这个档位上。

我有 T4 或 V100,能跑 PaddleOCR-VL 吗?

不建议。官方文档写得很直接:vLLM 后端要求算力不低于 8.0、CUDA 不低于 12.6,虽然在算力 7.x 的 T4、V100 上服务能启动,但「容易超时或 OOM,因此不推荐」。T4 算力 7.5、V100 算力 7.0、P40 更低到 6.1,都在门槛之下。这也是我们不把 Tesla T4 16GB $0.298/卡·时 推荐给 VL 产线的原因——它比 RTX 3090 还贵,算力却不达标。在 NexGPU 上直接开一张 RTX 4090 或 RTX 5090,算力 8.9 起,省掉这一整类排查。

PP-OCRv6 和 PaddleOCR-VL 该选哪个?

看你要的输出形态。只需要文字框加文字内容、追求毫秒级延迟和极低成本,选 PP-OCRv6,一张 RTX 3090 就能扛住相当大的吞吐。需要把整页文档还原成结构正确的 Markdown,带表格、公式、阅读顺序,那就得上 PaddleOCR-VL-1.6,它在 OmniDocBench v1.6 上是 96.33%。很多团队两条都要——正好在 NexGPU 上按秒各开一台,评估完停掉不用的那台,计算费用立刻停止计费。

PaddleOCR 可以商用吗?授权怎么算?

PaddleOCR 与 PaddleOCR-VL、HPD-Parsing 都是 Apache 2.0 协议,商用不需要额外授权,也不需要向百度申请。这正是很多团队从调用第三方 OCR API 转向自建的原因:数据不出自己的机器,成本从按页计费变成按卡时计费。在 NexGPU 上租卡自建,机器是你的,模型权重是你拉的,我们只收算力钱。

为什么我只把图片丢给 PaddleOCR-VL,效果比官方演示差很多?

因为你跳过了第一阶段。PaddleOCR-VL 是两阶段设计:先做版面分析,检测表格、公式等元素并确定阅读顺序、裁出子图,再把子图送进 VLM 识别,最后按阅读顺序合并。官方原文强调要发挥 PaddleOCR-VL 的能力必须走整合了版面分析与 VLM 识别的完整产线,而不是单独使用 VLM 组件。另外官方也提醒,本地直接推理未必满足生产环境要求,强烈建议起一个专用 VLM 推理服务——在 NexGPU 上,这就是多开一个端口的事。

装 vLLM 后端一直编译失败,有绕开的办法吗?

有。vLLM 和 SGLang 都依赖 FlashAttention,需要 CUDA 编译工具链,这一步在环境不干净的机器上很容易卡住;FastDeploy 后端则不需要执行这一步。你可以直接拉 FastDeploy 版官方镜像(离线包约 43GB)换掉 vLLM。当然,最省事的做法是在 NexGPU 上从 2,000+ 预置镜像里选一个已经配好 CUDA 12.6 与 PyTorch 的环境重开一台——按秒计费,重开一台的成本是几分钱,比在坏环境里排查便宜得多。遇到卡点可以直接在 Telegram 上找我们,中英文都行,没有工单队列。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。