PaddleOCR-VL部署流程(含VLLM推理框架部署)超强文档解析技术
本教程将详细介绍如何在本地环境中使用Docker部署 PaddleOCR-VL,同时包含VLLM推理模型加速的部署过程,以及踩过的一些坑
目前本人测试了效果确实非常强大,同时响应速度也很快,相比于传统的OCR精准太多了
OK老样子直接开始正题吧。
一、效果展示
首先在部署前先看看效果如何,下面包含官方给出的案例图和本人测试的效果图:


上面为官网给出的效果图,后面根据实际情况测试了一下效果确实非常不错,


二、PaddleOCR-VL 部署全流程
ok废话不多说,直接开始部署吧,飞浆安装指南参考:
https://www.paddlepaddle.org.cn/documentation/docs/zh/install/docker/linux-docker.html
https://www.paddleocr.ai/main/version3.x/pipeline_usage/PaddleOCR-VL.html
1、安装飞浆框架:
这边使用docker拉取镜像
CPU:
docker pull ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.2.0
GPU:
docker pull ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.2.0-gpu-cuda11.8-cudnn8.9
2、启动docker并映射8080端口号
docker run --name paddle_docker -p 6063:8080 -it babc044da8f0 /bin/bash
3、进入docker环境:
docker exec -it <容器名或容器ID> /bin/bash
4、安装推理包:
目前这个项目中只用到 paddleocr[doc-parser],如果需要更全的功能可使用 paddleocr[all]
# 只希望使用基础文字识别功能(返回文字位置坐标和文本内容)
python -m pip install "paddleocr[doc-parser]" -i https://pypi.tuna.tsinghua.edu.cn/simple
# 希望使用文档解析、文档理解、文档翻译、关键信息抽取等全部功能
# python -m pip install "paddleocr[all]"
# 安装相关依赖
python -m pip install paddlepaddle-gpu==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/
python -m pip install https://paddle-whl.bj.bcebos.com/nightly/cu126/safetensors/safetensors-0.6.2.dev0-cp38-abi3-linux_x86_64.whl
5、安装libGL.so.1:
这部分是需要进入容器后手动安装,这里是一个坑,在官方的文档中并没有介绍到这个依赖
导致报错了很多次之后才找到解决的方案是因为缺少了一个 libGL.so.1
# 更新包列表
apt-get update
# 安装 OpenCV 所需的系统依赖
apt-get install -y libgl1 libglib2.0-0 libsm6 libxrender1 libxext6
# 如果需要更多图形相关依赖,可以安装:
apt-get install -y libglu1-mesa libgl1-mesa-glx
6、本地化服务部署
6.1 启动VLLM推理框架(需要先部署 VLLM 服务)
6.1.1 测试VLLM推理模型是否可用
虽然是在同一台机器,由于是不同的docker的原因,因此我这里使用的是
host.docker.internal 而不是 localhost
# (测试是否启动成功:)
curl.exe http://localhost:8118/health
# 在另一个容器内部测试:
curl http://host.docker.internal:8118/health
6.1.2 创建yaml并修改
server_url 必需要修改成VLLM能够正常请求的api接口
# 创建yaml文件:
paddlex --get_pipeline_config PaddleOCR-VL
vim /home/PaddleOCR-VL.yaml
修改下面内容:
VLRecognition:
...
genai_config:
backend: vllm-server
server_url: http://127.0.0.1:8118/v1
6.1.3 通过yaml启动
paddlex --install serving 网络波动较大,如果失败了多重试几次即可
# 安装服务依赖
paddlex --install serving
# 通过yaml的方式进行启动服务:
paddlex --serve --pipeline /home/PaddleOCR-VL.yaml
6.2 不使用VLLM推理框架,直接部署
# 安装服务依赖:
paddlex --install serving
# 启动服务:
paddlex --serve --pipeline PaddleOCR-VL
paddlex --serve --pipeline {产线名称或产线配置文件路径} [{其他命令行选项}]
名称 说明
--pipeline 产线名称或产线配置文件路径。
--device 产线部署设备。默认为 cpu(如 GPU 不可用)或 gpu:0(如 GPU 可用)。
--host 服务器绑定的主机名或 IP 地址。默认为0.0.0.0。
--port 服务器监听的端口号。默认为8080。
--use_hpip 如果指定,则启用高性能推理插件。
--serial_number 高性能推理插件使用的序列号。只在启用高性能推理插件时生效。 请注意,并非所有产线、模型都支持使用高性能推理插件,详细的支持情况请参考PaddleX 高性能推理指南。
--update_license 如果指定,则进行联网激活。只在启用高性能推理插件时生效。
7、在python端调用
详情API文档:https://www.paddleocr.ai/main/version3.x/pipeline_usage/PaddleOCR-VL.html#43
import base64
import requests
import pathlib
API_URL = "http://localhost:8080/layout-parsing" # 服务URL
image_path = "./demo.jpg"
# 对本地图像进行Base64编码
with open(image_path, "rb") as file:
image_bytes = file.read()
image_data = base64.b64encode(image_bytes).decode("ascii")
payload = {
"file": image_data, # Base64编码的文件内容或者文件URL
"fileType": 1, # 文件类型,1表示图像文件
}
# 调用API
response = requests.post(API_URL, json=payload)
# 处理接口返回数据
assert response.status_code == 200
result = response.json()["result"]
for i, res in enumerate(result["layoutParsingResults"]):
print(res["prunedResult"])
md_dir = pathlib.Path(f"markdown_{i}")
md_dir.mkdir(exist_ok=True)
(md_dir / "doc.md").write_text(res["markdown"]["text"])
for img_path, img in res["markdown"]["images"].items():
img_path = md_dir / img_path
img_path.parent.mkdir(parents=True, exist_ok=True)
img_path.write_bytes(base64.b64decode(img))
print(f"Markdown document saved at {md_dir / 'doc.md'}")
for img_name, img in res["outputImages"].items():
img_path = f"{img_name}_{i}.jpg"
pathlib.Path(img_path).parent.mkdir(exist_ok=True)
with open(img_path, "wb") as f:
f.write(base64.b64decode(img))
print(f"Output image saved at {img_path}")
使用以下命令可以验证 PaddlePaddle 是否安装成功:
python -c “import paddle; print(paddle.version)”
8、 部署成功后二次启动:
docker start PaddleOCR_VL
docker exec -it PaddleOCR_VL /bin/bash
# 下面二选一
paddlex --serve --pipeline /home/PaddleOCR-VL.yaml
paddlex --serve --pipeline PaddleOCR-VL
下面是启动成功的效果图:

三、VLLM推理框架部署
1、 下载模型并启动
这里有两种方式,其中一个是官网的PaddleOCR-VL-0.9B模型,另外一个是我个人部署的Qwen3模型,下面主要是讲官网的PaddleOCR-VL-0.9B模型,另外一个感兴趣的朋友也可以试一下
1.1 使用官方的PaddleOCR-VL-0.9B模型:
# 拉取VLLM镜像
docker pull ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddleocr-genai-vllm-server:latest
# 启动镜像并执行
docker run -it --name PaddleOCR-VL_VLLM --gpus all -p 8118:8118 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 8118 --backend vllm
1.2 非官方的部署方式(Qwen3-0.6B)
docker pull vllm/vllm-openai:latest
## 启用国内镜像安装QWen3(8000->8118):
# https://docs.vllm.ai/en/latest/deployment/docker/?h=docker
docker run --runtime nvidia --gpus all --name PaddleOCR_VL_VLLM -v ~/.cache/huggingface:/root/.cache/huggingface --env "HF_ENDPOINT=https://hf-mirror.com" -p 8118:8000 --ipc=host vllm/vllm-openai:latest --model Qwen/Qwen3-0.6B
启动后看一下日志,出现下面结果的就是部署成功了,下面测试一下

2、测试是否启动成功
回到PaddleOCR的docker中测试接口是否能同
# 在本地测试:
curl.exe http://localhost:8118/health
# 在不同的Docker容器内部测试:
curl http://host.docker.internal:8118/health
或者直接进行提问,可以在下面的content中写入想提问的问题
curl http://host.docker.internal:8118/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "user",
"content": "不必解释,直接回答markdown json 格式内容```json\n{\"1\":2}```"
}
],
"temperature": 0.01,
"repetition_penalty": 1.8,
"top_p": 0.9,
"top_k": 20,
"max_tokens": 1000,
"stop": ["\n\n"],
"chat_template_kwargs": {"enable_thinking": false}
}'
3、PaddleOCR_VL连接到VLLM模型
这个时候VLLM模型已经部署成功了,回到PaddleOCR_VL的docker环境
如果使用VLLM模型的话,必须要以yaml的方式进行启动
# 创建yaml文件:
paddlex --get_pipeline_config PaddleOCR-VL
vim /home/PaddleOCR-VL.yaml
修改下面内容:
VLRecognition:
...
genai_config:
backend: vllm-server
server_url: http://127.0.0.1:8118/v1
启动服务即可
# 安装服务依赖
paddlex --install serving
# 通过yaml的方式进行启动服务:
paddlex --serve --pipeline /home/PaddleOCR-VL.yaml
基本上按照这个步骤操作都是没问题的,当然如果帮忙部署的话欢迎私信(白嫖怪勿扰,看着给就行)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)