PaddleOCR:百度开源 OCR 全流程工具库与文档解析引擎|部署与使用全指南
本文基于 PaddleOCR v3.7.0(2026-06-11 发布,撰写时 GitHub main 分支文档)撰写。项目当前 91,000+ Stars、11,500+ Forks,采用 Apache-2.0 许可证,被 Dify、RAGFlow、Cherry Studio、MinerU、Umi-OCR 等数千个开源项目依赖,是事实上的中文 OCR 工业标准。官方 README 明确标注支持 Python 3.8~3.12、Linux / Windows / macOS 三平台,以及 CPU / GPU / XPU(昆仑芯)/ NPU 多种硬件后端。

PaddleOCR 是百度飞桨(PaddlePaddle)团队开源的 OCR(光学字符识别)与文档解析工具库。它能将 PDF、扫描件、拍照图片等"给人看的文档"转换成结构化的 JSON / Markdown 数据,直接喂给大语言模型(LLM)构建 RAG、Agent 应用。从轻量的 PP-OCRv6 场景文字识别,到能还原整份文档版面的 PP-StructureV3,再到 0.9B 参数的文档解析视觉语言模型 PaddleOCR-VL,它覆盖了"检测 → 方向矫正 → 识别 → 版面解析 → 表格 / 公式 / 印章 → 翻译 / 信息抽取"的完整链路。

一、项目介绍与适用场景
是什么:PaddleOCR 3.x 是一个以 Python 为主的工具库(同时提供 C++ 本地部署方案),核心能力按"产线(Pipeline)"组织:通用 OCR、PP-StructureV3 版面解析、PaddleOCR-VL 文档解析、PP-ChatOCRv4 信息抽取、表格识别、公式识别、印章识别、文档翻译等。3.x 版本在推理部署层复用了百度另一款低代码工具 PaddleX 的基础设施(安装 paddleocr 时 PaddleX 会作为依赖一并安装,但只安装 OCR 相关依赖)。
技术定位:
推理引擎可插拔:默认飞桨静态图
paddle_static,也可切换paddle_dynamic(动态图)、transformers(Hugging Face 生态)、onnxruntime;高性能推理(High Performance Inference, HPI)自动在 Paddle Inference、OpenVINO、ONNX Runtime、TensorRT 之间选择最优后端;
支持服务化部署(HTTP API)、多 GPU 并行推理、浏览器端 SDK(PaddleOCR.js)与 C++/Android/iOS 端侧部署。
适用人群:
不适合的场景:
需要纯前端、零后端的轻量场景——可以用官方 PaddleOCR.js,但功能仅限 PP-OCRv5 级别的本地推理;
通用手写体自由排版识别精度要求极高的场景——建议先用官方在线体验中心验证效果再决定是否私有化部署;
不想引入飞桨框架依赖的极小环境——PaddleOCR 3.x 的默认引擎是飞桨,可以用 onnxruntime / transformers 引擎替代,但依赖体积和功能覆盖仍有取舍。
二、核心功能逐条拆解
通用 OCR 产线(PP-OCR 系列):由"文档图像方向分类 → 文本图像矫正 → 文本行方向分类 → 文本检测 → 文本识别"五个模块组成,支持 PP-OCRv3 / v4 / v5 / v6 四代模型,默认使用 PP-OCRv6_medium。检测定位文字框,识别输出文字与置信度。

PP-OCRv6 三档模型:tiny(1.5M 参数)/ small(7.7M)/ medium(34.5M)分别面向端侧、移动端与服务端;medium 档相比 PP-OCRv5_server 检测精度提升 4.6%、识别精度提升 5.1%,CPU(OpenVINO)推理加速 5.2 倍,单一模型覆盖中、英、日及 46 种拉丁语系共 50 种语言。
PP-StructureV3 版面解析:把复杂 PDF / 图片整页解析为 Markdown 或 JSON,包含版面区域检测、表格结构识别(含单元格坐标)、公式识别、印章识别、图表理解(PP-Chart2Table)等子模块,输出粒度比 VLM 方案更细。

PaddleOCR-VL 文档解析大模型:0.9B 参数的视觉语言模型(NaViT 动态分辨率编码器 + ERNIE-4.5-0.3B),最新版本 PaddleOCR-VL-1.6 在 OmniDocBench v1.6 上达到 96.3% 精度,支持 109+ 种语言,擅长古籍、生僻字、印章、图表等复杂内容。

多语言场景识别:PP-OCRv5 覆盖 109 种语言文字(含西里尔文、阿拉伯文、天城文、藏文等);PP-OCRv6 主打拉丁语系统一模型。通过
lang参数即可切换。信息抽取与文档翻译:PP-ChatOCRv4 产线结合 LLM 从文档中抽取姓名、日期、金额等关键信息;PP-DocTranslation 产线做整篇文档翻译;结果支持导出 DOCX。
高性能推理(HPI):
enable_hpi=True一键开启,自动选型 Paddle Inference / OpenVINO / ONNX Runtime / TensorRT 并自动完成静态图到 ONNX 的转换,无需手工调优。服务化部署:基于 PaddleX 的
paddlex --serve一条命令把任意产线变成 HTTP 服务(默认 8080 端口),并另有基于 NVIDIA Triton 的高稳定性方案;客户端可用任意语言通过 REST API 调用。多硬件后端:除 NVIDIA GPU 外,官方文档提供昆仑芯 XPU、NPU 等国产生态的安装指引;
device参数支持gpu:0、npu:0、xpu:0、mlu:0、dcu:0、metax_gpu:0、iluvatar_gpu:0等写法。并行与 benchmark:
device="gpu:0,1,2,3"一行开启多卡并行;PADDLE_PDX_PIPELINE_BENCHMARK=True可逐层统计推理耗时,辅助性能调优。官方云端 API 与 SDK:除本地部署外,官方提供托管 API,配套 Python / TypeScript / Go SDK 和
paddleocr apiCLI 子命令,适合不想自建推理服务的团队。MCP Server 与 Skills 集成:官方提供 MCP Server 与 Agent Skills 集成方案,可以把 OCR 能力挂进支持 Model Context Protocol 的 AI 编码助手。
三、全套官方链接
四、硬件与环境前置要求
五、多平台部署步骤
5.1 通用第一步:安装 paddleocr Python 包
# 只安装基础 OCR 能力(含通用 OCR 与文档图像预处理)
python -m pip install paddleocr
# 安装全部可选能力:文档解析、信息抽取、文档翻译等
python -m pip install "paddleocr[all]"
# 国内网络可追加清华镜像源加速(对 paddleocr 及其常规依赖生效)
python -m pip install paddleocr -i https://pypi.tuna.tsinghua.edu.cn/simple
可选依赖组与能力对应关系(来自官方安装文档):
也可以直接从源码安装(跟踪仓库默认分支):
python -m pip install "paddleocr@git+https://github.com/PaddlePaddle/PaddleOCR.git"
5.2 安装推理引擎:paddlepaddle 版本对应与 pip 源
使用默认飞桨推理引擎时必须先装飞桨。PaddleOCR、PaddleX 与飞桨框架的版本对应关系(来自官方 paddleocr_and_paddlex.md):
CPU 版安装命令(官方文档原文命令):
python -m pip install paddlepaddle==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
GPU 版安装命令(按驱动版本二选一):
# CUDA 11.8 轮子,要求显卡驱动 ≥ 450.80.02(Linux)或 ≥ 452.39(Windows)
python -m pip install paddlepaddle-gpu==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/
# CUDA 12.6 轮子,要求显卡驱动 ≥ 550.54.14(Linux / Windows)
python -m pip install paddlepaddle-gpu==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/
注意:飞桨的 GPU 轮子自带 CUDA / cuDNN 运行库,不需要物理机安装 CUDA,但要确认驱动版本达标。更多历史版本 wheel 请查飞桨官网安装页。
平台差异说明:
Linux:上面两条命令即官方推荐路径;高性能推理插件(HPI)仅支持 Linux + x86-64 + Python 3.8~3.12。
Windows:CPU / GPU pip 安装与 Linux 相同;使用 NVIDIA 50 系显卡时,常规 wheel 不支持,需按官方文档安装专门构建的
paddlepaddle_gpu-3.0.0.dev20250717系列 wheel(按 Python 3.9~3.12 区分,链接见官方paddlepaddle_installation.md第 3 节)。macOS:官方 pip 源提供 CPU 版本;macOS 上可用的 GPU 加速 wheel 请以飞桨官网安装页为准。macOS(Apple M 系)在新版本中有专门的推理加速档位(如 PP-OCRv6 tiny 在 Apple M4 上加速 6.1 倍)。
Windows 高性能推理:官方明确建议在 Docker 容器或 WSL 环境中安装 HPI 依赖。
验证安装:
python -c "import paddle; print(paddle.__version__)"
# 输出 3.2.0 即成功
python - <<'EOF'
import paddleocr
print(f"PaddleOCR版本: {paddleocr.__version__}")
import paddle
print(f"Paddle版本: {paddle.__version__}")
print(f"GPU可用: {paddle.is_compiled_with_cuda()}")
print(f"GPU数量: {paddle.device.cuda.device_count()}")
EOF
5.3 Windows 部署步骤
# 1. 安装 Python 3.9~3.12(Microsoft Store 或 python.org)
# 2. 创建虚拟环境
python -m venv venv
.\venv\Scripts\Activate.ps1
# 3. 安装飞桨 CPU 版
python -m pip install paddlepaddle==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
# 4. 安装 paddleocr
python -m pip install paddleocr
# 5. 验证
python -c "import paddle; print(paddle.__version__)"
paddleocr ocr -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png
Windows 下若使用 NVIDIA 50 系显卡,请到官方《飞桨框架安装》文档第 3 节复制对应 Python 版本的 .whl 直链安装,例如 Python 3.11 对应 paddlepaddle_gpu-3.0.0.dev20250717-cp311-cp311-win_amd64.whl。官方同时注明:该 Windows 50 系 wheel 的"文本识别模型训练"功能存在已知问题,仍在完善中。
5.4 Linux 部署步骤
# 1. 建议 conda/venv 隔离环境
conda create -n paddleocr python=3.10 -y
conda activate paddleocr
# 2. 安装飞桨(GPU 机器把上一条换成 5.2 节的 GPU 命令)
python -m pip install paddlepaddle==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
# 3. 安装 paddleocr(按需选 all)
python -m pip install "paddleocr[all]"
# 4.(可选)安装高性能推理依赖
paddleocr install_hpi_deps cpu # 纯 CPU
paddleocr install_hpi_deps gpu # NVIDIA GPU(需 TensorRT 8.6.1.6 才能用 TRT 后端)
# 5. 冒烟测试
paddleocr ocr -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png \
--use_doc_orientation_classify False \
--use_doc_unwarping False \
--use_textline_orientation False \
--save_path ./output
5.5 macOS 部署步骤
# Apple Silicon / Intel 通用
brew install python@3.11
python3.11 -m venv venv && source venv/bin/activate
python -m pip install paddlepaddle==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
python -m pip install paddleocr
paddleocr ocr -i ./test.png
WSL2 注意事项:在 Windows 上通过 WSL2 跑 Linux 子系统时,GPU 直通需要 Windows NVIDIA 驱动 ≥ 550.54.14(对应 cu126 wheel),且 WSL 内不需要再装 Linux 显卡驱动;官方文档明确建议"Windows 系统安装高性能推理依赖时使用 Docker 或 WSL"。WSL 内首次运行如提示无法找到 CUDA,请先在 PowerShell 执行 nvidia-smi 确认驱动直通正常。
5.6 Docker 部署(推荐用于服务器)
官方提供百度智能云镜像仓库的飞桨镜像,CPU 与 GPU 变体不同,注意 tag 的区别:
# CPU 变体
docker run --name paddleocr -v $PWD:/paddle --shm-size=8G --network=host \
-it ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.0.0 /bin/bash
# GPU 变体(CUDA 11.8 + cuDNN 8.9 + TensorRT 8.6),驱动 ≥ 450.80.02
docker run --gpus all --name paddleocr -v $PWD:/paddle --shm-size=8G --network=host \
-it ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.0.0-gpu-cuda11.8-cudnn8.9-trt8.6 /bin/bash
# GPU 变体(CUDA 12.6 + cuDNN 9.5 + TensorRT 10.5),驱动 ≥ 550.54.14
docker run --gpus all --name paddleocr -v $PWD:/paddle --shm-size=8G --network=host \
-it ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.0.0-gpu-cuda12.6-cudnn9.5-trt10.5 /bin/bash
进入容器后执行 python -m pip install paddleocr 即可。若要使用高性能推理,官方推荐直接使用 PaddleX 官方镜像:
# CPU
ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlex/paddlex:paddlex3.0.1-paddlepaddle3.0.0-cpu
# GPU CUDA 11.8
ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlex/paddlex:paddlex3.0.1-paddlepaddle3.0.0-gpu-cuda11.8-cudnn8.9-trt8.6
# GPU CUDA 12.6(注意:该组合的高性能推理目前仅支持 OpenVINO / ONNX Runtime 后端,暂不支持 TensorRT)
ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlex/paddlex:paddlex3.0.1-paddlepaddle3.0.0-gpu-cuda12.6-cudnn9.5-trt10.5
Docker 版本 ≤ 19.03 但 ≥ 17.06 时,把 --gpus all 换成 nvidia-docker run;≤ 17.06 官方要求升级 Docker。
5.7 源码安装(训练 / 微调场景)
推理使用 pip 包即可;如需模型训练与导出,官方要求单独走源码路径:
git clone --depth 1 https://github.com/PaddlePaddle/PaddleOCR.git
cd PaddleOCR
# 需要完整提交历史时:git fetch --unshallow
# 需要固定版本时:git clone --depth 1 --branch release/3.5 https://github.com/PaddlePaddle/PaddleOCR.git PaddleOCR-3.5
python -m pip install -r requirements.txt
GitHub 访问困难时可换成 Gitee 镜像 https://gitee.com/paddlepaddle/PaddleOCR.git(官方注明镜像可能滞后 3~5 天)。训练 / 导出支持 Python 3.8+,并依赖飞桨框架。
六、配置文件全部参数解释
PaddleOCR 3.x 没有"全局配置文件"概念,配置通过三个入口生效:CLI 参数 / Python API 参数 / PaddleX 产线 YAML 配置文件。产线配置文件可通过下述命令导出(文件名可自定义,社区常称 PaddleOCR.yaml):
from paddleocr import PaddleOCR
pipeline = PaddleOCR()
pipeline.export_paddlex_config_to_yaml("PaddleOCR.yaml")
# 或通过 PaddleX CLI 获取官方默认配置
paddlex --get_pipeline_config OCR
通用 OCR 产线主要参数表(CLI 与 Python API 同名,下表整理自官方 OCR 产线教程):
已废弃的 2.x 旧参数(官方列出以方便迁移,不能与新参数同时指定):det_model_dir→text_detection_model_dir、det_limit_side_len→text_det_limit_side_len、det_db_thresh→text_det_thresh、det_db_box_thresh→text_det_box_thresh、det_db_unclip_ratio→text_det_unclip_ratio、rec_model_dir→text_recognition_model_dir、rec_batch_num→text_recognition_batch_size、use_angle_cls→use_textline_orientation、cls_model_dir→textline_orientation_model_dir、cls_batch_num→textline_orientation_batch_size。
带注释的完整产线配置示例(PaddleOCR.yaml,节选自官方文档示例结构):
pipeline_name: OCR # PaddleX 产线注册名:通用 OCR 为 OCR
SubModules:
TextDetection: # 文本检测子模块
model_name: PP-OCRv6_medium_det # 模型名;换模型时必须同步修改
model_dir: null # 本地模型权重目录;null 表示自动下载官方模型
limit_side_len: 64 # 输入边长限制
limit_type: min # min/max 两种限制方式
thresh: 0.3 # 像素阈值
box_thresh: 0.6 # 框阈值
unclip_ratio: 1.5 # 扩张系数
max_side_limit: 4000 # 最大边长上限
# 也可为单个子模块单独指定推理引擎(优先级高于全局)
engine: paddle_static
engine_config:
device_type: cpu
cpu_threads: 4
run_mode: mkldnn # 可选 paddle / trt_fp32 / trt_fp16 / mkldnn
TextLineOrientation: # 文本行方向分类子模块
model_name: PP-LCNet_x1_0_textline_ori
model_dir: null
batch_size: 6
module_name: textline_orientation
TextRecognition: # 文本识别子模块
model_name: PP-OCRv6_medium_rec
model_dir: null
batch_size: 6
score_thresh: 0.0 # 识别得分过滤阈值
module_name: text_recognition
# 服务化部署相关(仅 paddlex --serve 时生效)
Serving:
return_urls: false # true 时以预签名 URL 返回二进制内容(当前仅支持百度 BOS 对象存储)
extra:
max_num_input_imgs: null # 解除 PDF 默认 10 页限制
加载方式:
paddleocr ocr --paddlex_config PaddleOCR.yaml -i ./test.png
from paddleocr import PaddleOCR
pipeline = PaddleOCR(paddlex_config="PaddleOCR.yaml")
优先级规则:CLI / Python API 显式参数 > 产线配置文件 > 各参数默认初始化值;产线配置文件内子模块可覆盖顶层全局 engine / engine_config。
七、启动、后台常驻、开机自启、改端口
7.1 前台启动(CLI / Python)
# CLI 单次推理
paddleocr ocr -i ./test.png --save_path ./output
# HTTP 服务(基于 PaddleX 服务化插件)
paddlex --install serving # 首次需安装 serving 插件
paddlex --serve --pipeline OCR # 默认监听 0.0.0.0:8080
paddlex --serve 支持的选项:
启动成功会输出 INFO: Uvicorn running on http://0.0.0.0:8080。
7.2 systemd 常驻(Linux)
# /etc/systemd/system/paddleocr-serving.service
[Unit]
Description=PaddleOCR HTTP Serving
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/paddleocr
# 建议写虚拟环境内绝对路径
ExecStart=/opt/paddleocr/venv/bin/paddlex --serve --pipeline OCR --port 8080
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now paddleocr-serving
sudo systemctl status paddleocr-serving
7.3 Supervisor 常驻
; /etc/supervisor/conf.d/paddleocr.conf
[program:paddleocr]
command=/opt/paddleocr/venv/bin/paddlex --serve --pipeline OCR --port 8080
directory=/opt/paddleocr
autostart=true
autorestart=true
stdout_logfile=/var/log/paddleocr.log
stderr_logfile=/var/log/paddleocr.err.log
7.4 Windows 计划任务 / NSSM
# 方式一:计划任务开机启动(以管理员 PowerShell 运行)
schtasks /create /tn "PaddleOCR" /tr "C:\paddleocr\venv\Scripts\paddlex.exe --serve --pipeline OCR" /sc onstart /ru SYSTEM
# 方式二:NSSM 注册为 Windows 服务
nssm install PaddleOCR "C:\paddleocr\venv\Scripts\paddlex.exe" "--serve --pipeline OCR"
nssm set PaddleOCR AppDirectory C:\paddleocr
nssm start PaddleOCR
7.5 Docker Compose 自启(GPU 示例)
# docker-compose.yml
services:
paddleocr:
image: ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.0.0-gpu-cuda12.6-cudnn9.5-trt10.5
restart: unless-stopped
shm_size: 8g
working_dir: /paddle
volumes:
- ./workspace:/paddle
command: >
bash -lc "pip install paddleocr && paddlex --serve --pipeline OCR --port 8080"
ports:
- "8080:8080"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
docker compose up -d
注:容器内端口仍是 8080,宿主机映射端口写在
ports左侧即可。
7.6 改端口 + Nginx 反向代理
paddlex --serve --pipeline OCR --host 127.0.0.1 --port 9000
server {
listen 80;
server_name ocr.example.com;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
client_max_body_size 50m; # 请求体含 Base64 图片,需放宽体积
}
}
八、功能实操教程
8.1 场景一:命令行快速识别一张图片
# 下载官方示例图
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png
paddleocr ocr -i ./general_ocr_002.png \
--use_doc_orientation_classify False \
--use_doc_unwarping False \
--use_textline_orientation False \
--save_path ./output
终端会打印 JSON 结果,关键字段:rec_texts(识别文字列表)、rec_scores(每行置信度)、dt_polys / rec_polys(检测框多边形坐标)、rec_boxes(矩形框)、text_det_params(本次检测参数)。指定 --save_path 后还会输出可视化图(检测框叠加)到 output 目录。
8.2 场景二:Python API 调用 predict()
from paddleocr import PaddleOCR
ocr = PaddleOCR(
use_doc_orientation_classify=False, # 不使用文档方向分类
use_doc_unwarping=False, # 不使用文本图像矫正
use_textline_orientation=False, # 不使用文本行方向分类
)
# 常用变体:
# ocr = PaddleOCR(lang="en") # 英文模型
# ocr = PaddleOCR(ocr_version="PP-OCRv5") # 切换到 PP-OCRv5
# ocr = PaddleOCR(device="gpu") # 使用 GPU
# ocr = PaddleOCR(
# text_detection_model_name="PP-OCRv5_server_det",
# text_recognition_model_name="PP-OCRv5_server_rec",
# ) # 指定 server 级模型
result = ocr.predict("./general_ocr_002.png")
for res in result:
res.print() # 打印结果
res.save_to_img("output") # 保存可视化图
res.save_to_json("output") # 保存 JSON
8.3 场景三:切换引擎(transformers / onnxruntime)
pip install "transformers>=5.10.0" # 或 pip install onnxruntime-gpu
paddleocr ocr -i ./general_ocr_002.png --engine transformers
paddleocr ocr -i ./general_ocr_002.png --engine onnxruntime
from paddleocr import PaddleOCR
ocr = PaddleOCR(engine="onnxruntime", use_doc_orientation_classify=False,
use_doc_unwarping=False, use_textline_orientation=False)
result = ocr.predict("./general_ocr_002.png")
大多数场景下默认 paddle_static 引擎性能最好,官方建议优先使用。
8.4 场景四:整份 PDF 转 Markdown(PP-StructureV3)
from pathlib import Path
from paddleocr import PPStructureV3
pipeline = PPStructureV3()
output = pipeline.predict("./your_pdf_file.pdf")
markdown_list = []
markdown_images = []
for res in output:
res.print()
res.save_to_json(save_path="output")
res.save_to_markdown(save_path="output") # 每页一个 Markdown
res.save_to_word(save_path="output") # 3.5+ 支持导出 DOCX
CLI 等价命令:
paddleocr pp_structurev3 -i ./pp_structure_v3_demo.png --device gpu
依赖组为 doc-parser,需要 python -m pip install "paddleocr[doc-parser]" 或 paddleocr[all]。
8.5 场景五:HTTP 服务调用(含多语言客户端)
启动服务后,POST /ocr 即可调用。请求体:file(图片/PDF 的 URL 或 Base64)、fileType(0=PDF,1=图片)、useDocOrientationClassify、useDocUnwarping、useTextlineOrientation 等字段;成功时响应包含 logId、errorCode=0、errorMsg="Success"、result。
curl -X POST http://127.0.0.1:8080/ocr \
-H "Content-Type: application/json" \
-d '{"file": "https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png", "fileType": 1}'
Python / TypeScript / Go 官方 SDK 与 paddleocr api CLI 子命令均封装了"提交文件 → 轮询异步任务 → 解析结果"的完整流程,具体类名与方法签名以官方文档 paddleocr_official_api 章节(Python SDK)为准。
注意区分:
paddleocr api/ 官方 SDK 走的是官方托管云端 API(不在本机跑模型,文件会上传);paddlex --serve起的是本机服务,数据不出内网。
8.6 场景六:性能调优(HPI + benchmark + 多卡)
# 1) 启用高性能推理
paddleocr install_hpi_deps gpu
paddleocr ocr -i ./test.png --enable_hpi True
# 2) 半精度 + TensorRT(CUDA 11.8 + TensorRT 8.6.1.6)
paddleocr ocr -i ./test.png --use_tensorrt True --precision fp16
# 3) 多卡并行
paddleocr ocr -i ./images_dir/ --device 'gpu:0,1,2,3'
import os
os.environ["PADDLE_PDX_PIPELINE_BENCHMARK"] = "True" # 必须在 import 前设置
from paddleocr import PaddleOCR, benchmark
pipeline = PaddleOCR()
benchmark.start_warmup()
for _ in range(50):
pipeline.predict("./general_ocr_002.png")
benchmark.stop_warmup()
for _ in range(100):
pipeline.predict("./general_ocr_002.png")
benchmark.print_pipeline_data() # 打印逐操作耗时
benchmark.save_pipeline_data("./benchmark") # 输出 detail.csv / summary.csv
8.7 场景七:离线 / 内网环境模型部署
在联网机器上跑一次推理,让模型自动下载完成;或直接从官方模型列表页(model_list)下载
*_infer.tar推理模型包;把模型目录拷贝到内网机器;
通过参数或配置文件指定本地模型路径:
paddleocr ocr -i ./test.png \
--text_detection_model_name PP-OCRv5_mobile_det \
--text_detection_model_dir /models/pp-ocrv5_mobile_det \
--text_recognition_model_dir /models/pp-ocrv5_mobile_rec
from paddleocr import PaddleOCR
pipeline = PaddleOCR(
text_detection_model_dir="/models/det",
text_recognition_model_dir="/models/rec",
)
国内网络下载慢或失败时,可设置环境变量切换模型下载源:os.environ['PADDLE_PDX_MODEL_SOURCE'] = 'BOS'(使用百度云存储;官方还支持 AIStudio、ModelScope 等源,取值以官方文档为准)。
8.8 场景八:微调模型替换默认模型
按官方"二次开发"指引,对检测漏检、识别错字等场景分别微调对应模块(方向分类、文本检测、文本识别等模块均有官方微调教程),训练产物通过 text_detection_model_dir 等参数或 PaddleOCR.yaml 中 SubModules.*.model_dir 挂载;若微调模型名与默认不同,需同时修改 model_name 字段。
九、全套报错故障排查
上表中第 3、4、5、6、9、19 条为社区高频问题,官方文档未逐条收录;解决步骤以官方《安装》与《飞桨框架安装》文档为准。
十、升级、回滚与卸载
10.1 版本查看
pip show paddleocr | head -2
python -c "import paddleocr; print(paddleocr.__version__)"
python -c "import paddle; print(paddle.__version__)"
paddleocr --help # CLI 可用即安装成功
10.2 升级
pip install -U paddleocr
# 升级飞桨(先看版本对应表)
pip install -U paddlepaddle==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
# 升级后清理旧模型缓存与引擎缓存可避免兼容问题(模型缓存目录由 PaddleX 管理,位置以其文档为准)
10.3 回滚到指定版本
pip install "paddleocr==3.5.0"
pip install paddlepaddle==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
回滚时务必同步核对第六章的 PaddleOCR ↔ PaddleX ↔ 飞桨版本对应表,避免依赖自动解析到不兼容版本。
10.4 Docker 升级 / 回滚
docker pull ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.0.0-gpu-cuda12.6-cudnn9.5-trt10.5
# 回滚:直接改用旧 tag 重建容器
docker stop paddleocr && docker rm paddleocr
docker run --gpus all --name paddleocr ... # 换回旧镜像 tag
10.5 完整卸载清单
# 1. 卸载 Python 包
pip uninstall -y paddleocr paddlex paddlepaddle paddlepaddle-gpu
# 2. 停止并删除服务
sudo systemctl disable --now paddleocr-serving
sudo rm /etc/systemd/system/paddleocr-serving.service && sudo systemctl daemon-reload
# supervisor: supervisorctl stop paddleocr && supervisorctl remove paddleocr
# nssm: nssm stop PaddleOCR && nssm remove PaddleOCR confirm
# 3. 删除容器与镜像
docker rm -f paddleocr
docker rmi ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.0.0
# 4. 删除虚拟环境与工作目录
rm -rf ~/miniconda3/envs/paddleocr /opt/paddleocr
# 5. 删除模型缓存(位置以 PaddleX 文档为准,通常在用户主目录下的 paddlex 隐藏目录)
rm -rf ~/.paddlex
# 6. 删除结果输出与配置
rm -rf ./output ./PaddleOCR.yaml
十一、商用许可与合规风险提示
License:PaddleOCR 采用 Apache-2.0 许可证。允许商用、修改、再分发与闭源集成,但必须保留版权与许可证声明、随分发提供 LICENSE 副本并标注修改;Apache-2.0 同时包含专利授权与商标条款——Apache-2.0 不授予 "PaddleOCR" 商标的使用权,对外宣传产品时不得暗示百度官方背书。
模型权重:官方预训练模型随仓库 / 官方源发布,同受 Apache-2.0 覆盖,但请在生产使用前核对模型下载页的最新许可说明。
云端 API 费用:官方托管 API 与在线体验中心按官网公布的计费策略收费,与本地部署无关;本地部署本体免费。
数据隐私与出网:本地推理不出网(首次下载模型除外);使用
paddlex --serve时注意服务默认绑定0.0.0.0,公网部署务必加鉴权与反代;使用官方云端 API / SDK 时,待识别文件会上传到官方托管服务,涉密数据请勿使用。生产环境风险:OCR 结果直接驱动业务时请设置置信度过滤(
text_rec_score_thresh)与人工复核;paddlex --serve基础服务化方案无内置鉴权,高并发场景建议评估官方基于 Triton 的高稳定性方案并做好容器资源隔离。国产化适配:XPU / NPU 等后端由官方单独文档维护,采购硬件前请先核对支持列表。
附录:命令速查
# 安装
pip install paddleocr # 基础版
pip install "paddleocr[all]" # 全功能
python -m pip install paddlepaddle==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/ # 飞桨 CPU
python -m pip install paddlepaddle-gpu==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/ # 飞桨 GPU
paddleocr install_hpi_deps cpu|gpu # 高性能推理依赖
# 推理
paddleocr ocr -i img.png # 最简 OCR
paddleocr ocr -i img.png --device gpu:0 --save_path ./output
paddleocr ocr -i img.png --ocr_version PP-OCRv5 --lang en
paddleocr ocr -i img.png --enable_hpi True
paddleocr pp_structurev3 -i doc.pdf # PDF 转 Markdown
paddleocr text_detection -i img.png # 单模块
# 服务化
paddlex --install serving
paddlex --serve --pipeline OCR --port 8080
curl -X POST http://127.0.0.1:8080/ocr -H "Content-Type: application/json" -d '{"file":"<URL或Base64>","fileType":1}'
# 配置与调优
paddlex --get_pipeline_config OCR # 获取产线 YAML
paddleocr ocr --paddlex_config PaddleOCR.yaml -i img.png
PADDLE_PDX_PIPELINE_BENCHMARK=True python bench.py # 逐层耗时
# 环境验证
python -c "import paddle; print(paddle.__version__)"
python -c "import paddleocr; print(paddleocr.__version__)"