Loading...

文章背景图

PaddleOCR:百度开源 OCR 全流程工具库与文档解析引擎|部署与使用全指南

2026-10-27
0
- 字
- 分钟
|

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 主视觉图

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

PaddleOCR 整体架构

一、项目介绍与适用场景

是什么: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 端侧部署。

适用人群:

人群

典型用法

RAG / LLM 应用开发者

用 PP-StructureV3 或 PaddleOCR-VL 把 PDF 转 Markdown 入知识库

后端 / 数据工程师

paddlex --serve 起 HTTP 服务,给业务系统提供 OCR API

爬虫 / 自动化脚本作者

CLI 一行命令批量识别截图、票据、证件

算法工程师

微调 det / rec 模型,替换为私有模型权重

嵌入式 / 国产硬件适配者

CPU / XPU / NPU 后端 + 高性能推理插件

不适合的场景:

  • 需要纯前端、零后端的轻量场景——可以用官方 PaddleOCR.js,但功能仅限 PP-OCRv5 级别的本地推理;

  • 通用手写体自由排版识别精度要求极高的场景——建议先用官方在线体验中心验证效果再决定是否私有化部署;

  • 不想引入飞桨框架依赖的极小环境——PaddleOCR 3.x 的默认引擎是飞桨,可以用 onnxruntime / transformers 引擎替代,但依赖体积和功能覆盖仍有取舍。

二、核心功能逐条拆解

  1. 通用 OCR 产线(PP-OCR 系列):由"文档图像方向分类 → 文本图像矫正 → 文本行方向分类 → 文本检测 → 文本识别"五个模块组成,支持 PP-OCRv3 / v4 / v5 / v6 四代模型,默认使用 PP-OCRv6_medium。检测定位文字框,识别输出文字与置信度。

PP-OCRv5 检测识别演示
  1. 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 种语言。

  2. PP-StructureV3 版面解析:把复杂 PDF / 图片整页解析为 Markdown 或 JSON,包含版面区域检测、表格结构识别(含单元格坐标)、公式识别、印章识别、图表理解(PP-Chart2Table)等子模块,输出粒度比 VLM 方案更细。

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

PaddleOCR-VL 文档解析演示
  1. 多语言场景识别:PP-OCRv5 覆盖 109 种语言文字(含西里尔文、阿拉伯文、天城文、藏文等);PP-OCRv6 主打拉丁语系统一模型。通过 lang 参数即可切换。

  2. 信息抽取与文档翻译:PP-ChatOCRv4 产线结合 LLM 从文档中抽取姓名、日期、金额等关键信息;PP-DocTranslation 产线做整篇文档翻译;结果支持导出 DOCX。

  3. 高性能推理(HPI):enable_hpi=True 一键开启,自动选型 Paddle Inference / OpenVINO / ONNX Runtime / TensorRT 并自动完成静态图到 ONNX 的转换,无需手工调优。

  4. 服务化部署:基于 PaddleX 的 paddlex --serve 一条命令把任意产线变成 HTTP 服务(默认 8080 端口),并另有基于 NVIDIA Triton 的高稳定性方案;客户端可用任意语言通过 REST API 调用。

  5. 多硬件后端:除 NVIDIA GPU 外,官方文档提供昆仑芯 XPU、NPU 等国产生态的安装指引;device 参数支持 gpu:0、npu:0、xpu:0、mlu:0、dcu:0、metax_gpu:0、iluvatar_gpu:0 等写法。

  6. 并行与 benchmark:device="gpu:0,1,2,3" 一行开启多卡并行;PADDLE_PDX_PIPELINE_BENCHMARK=True 可逐层统计推理耗时,辅助性能调优。

  7. 官方云端 API 与 SDK:除本地部署外,官方提供托管 API,配套 Python / TypeScript / Go SDK 和 paddleocr api CLI 子命令,适合不想自建推理服务的团队。

  8. MCP Server 与 Skills 集成:官方提供 MCP Server 与 Agent Skills 集成方案,可以把 OCR 能力挂进支持 Model Context Protocol 的 AI 编码助手。

三、全套官方链接

资源

地址

GitHub 仓库

https://github.com/PaddlePaddle/PaddleOCR

官方网站(在线体验中心 + 云端 API)

https://www.paddleocr.com

官方文档站

https://www.paddleocr.ai/latest/

文档站(GitHub Pages 镜像)

https://paddlepaddle.github.io/PaddleOCR/latest/en/

安装文档

https://www.paddleocr.ai/latest/version3.x/installation.html

通用 OCR 产线教程

https://www.paddleocr.ai/latest/version3.x/pipeline_usage/OCR.html

PP-StructureV3 教程

https://www.paddleocr.ai/latest/version3.x/pipeline_usage/PP-StructureV3.html

PaddleOCR-VL 教程

https://www.paddleocr.ai/latest/version3.x/pipeline_usage/PaddleOCR-VL.html

服务化部署文档

https://www.paddleocr.ai/latest/version3.x/inference_deployment/serving/serving.html

高性能推理文档

https://www.paddleocr.ai/latest/version3.x/inference_deployment/local_inference/high_performance_inference.html

模型列表(含全部下载链接)

https://www.paddleocr.ai/latest/version3.x/model_list.html

HuggingFace 模型集合

https://huggingface.co/collections/PaddlePaddle/pp-ocrv6

ModelScope 模型集合

https://www.modelscope.cn/collections/PaddlePaddle/PP-OCRv6

Release 下载页

https://github.com/PaddlePaddle/PaddleOCR/releases

License

Apache-2.0(仓库 LICENSE 文件)

基于它的生态项目列表

https://github.com/PaddlePaddle/PaddleOCR/blob/main/awesome_projects.md

飞桨框架安装页

https://www.paddlepaddle.org.cn/install/quick

四、硬件与环境前置要求

项目

要求

操作系统

Linux / Windows / macOS(README 标注);高性能推理插件目前仅支持 Linux x86-64

Python

3.8~3.12(paddleocr 与 doc2md 组支持 3.8+;doc-parser、ie、trans、all 等可选依赖组要求 3.9+)

推理引擎

飞桨框架(paddlepaddle / paddlepaddle-gpu),或 Transformers ≥ 5.10.0,或 ONNX Runtime;不同引擎可能存在依赖冲突,官方建议一个环境只装一种

CPU

x86-64(支持 AVX 更佳);Apple Silicon 亦可

内存

建议 ≥ 8GB;PP-StructureV3 / PaddleOCR-VL 等文档解析产线建议 16GB 以上

GPU(可选)

NVIDIA 显卡;cu118 版本要求驱动 ≥ 450.80.02(Linux)/ ≥ 452.39(Windows),cu126 版本要求驱动 ≥ 550.54.14;无需关注物理机 CUDA 版本,只需关注驱动版本

磁盘

基础 OCR 约 2~4GB(含 Python 环境);完整 paddleocr[all] + 文档解析模型建议预留 10GB+

网络

首次运行会从官方源下载模型;离线环境可用 PADDLE_PDX_MODEL_SOURCE=BOS 指定下载源或手动指定本地模型目录

账号

本地部署无需任何账号;使用官方云端 API 需按官网说明获取密钥

五、多平台部署步骤

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

可选依赖组与能力对应关系(来自官方安装文档):

依赖组

对应功能

doc-parser

文档解析:表格、公式、印章、图片等版面元素抽取,含 PP-StructureV3

ie

信息抽取:姓名、日期、地址、金额等,含 PP-ChatOCRv4

trans

文档翻译,含 PP-DocTranslation

doc2md

Word / Excel / PowerPoint 转 Markdown

all

全部功能

也可以直接从源码安装(跟踪仓库默认分支):

python -m pip install "paddleocr@git+https://github.com/PaddlePaddle/PaddleOCR.git"

5.2 安装推理引擎:paddlepaddle 版本对应与 pip 源

使用默认飞桨推理引擎时必须先装飞桨。PaddleOCR、PaddleX 与飞桨框架的版本对应关系(来自官方 paddleocr_and_paddlex.md):

PaddleOCR 版本

PaddleX 版本

飞桨版本

3.0.0 / 3.0.1 / 3.0.2

与 PaddleOCR 同版本号

≥ 3.0.0

3.0.3

≥ 3.0.3

≥ 3.0.0

3.1.x

≥ 3.1.0, < 3.2.0

≥ 3.0.0

3.2.x

≥ 3.2.0, < 3.3.0

≥ 3.0.0

3.3.x

≥ 3.3.0, < 3.4.0

≥ 3.0.0

3.4.x

≥ 3.4.0, < 3.5.0

≥ 3.0.0

3.5.x

≥ 3.5.0, < 3.6.0

≥ 3.0.0

3.6.x

≥ 3.6.0, < 3.7.0

≥ 3.0.0

3.7.x

≥ 3.7.0, < 3.8.0

≥ 3.0.0

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 产线教程):

参数

类型

默认值

说明

input / -i

str

必填

待预测图像 / PDF 的本地路径、URL 或目录(目录不支持含 PDF)

save_path

str

无

推理结果保存路径,不设置则不落盘

use_doc_orientation_classify

bool

True

是否使用文档图像方向分类模块

use_doc_unwarping

bool

True

是否使用文本图像矫正模块

use_textline_orientation

bool

True

是否使用文本行方向分类模块

text_detection_model_name

str

None

文本检测模型名,如 PP-OCRv5_server_det

text_detection_model_dir

str

None

本地检测模型目录,设置后不再联网下载

text_recognition_model_name

str

None

文本识别模型名

text_recognition_model_dir

str

None

本地识别模型目录

text_recognition_batch_size

int

1

识别模型 batch size

textline_orientation_model_name / _dir

str

None

文本行方向模型名 / 目录

textline_orientation_batch_size

int

1

文本行方向 batch size

doc_orientation_classify_model_name / _dir

str

None

文档方向分类模型名 / 目录

doc_unwarping_model_name / _dir

str

None

文本图像矫正模型名 / 目录

text_det_limit_side_len

int

64

检测输入边长限制(产线初始化默认值)

text_det_limit_type

str

min

min 保证最短边不小于该值;max 保证最长边不大于该值

text_det_thresh

float

0.3

检测像素阈值

text_det_box_thresh

float

0.6

检测框平均得分阈值

text_det_unclip_ratio

float

2.0

检测框扩张系数

text_det_input_shape

int×3

None

检测输入形状 C/H/W

text_rec_score_thresh

float

0.0

识别结果过滤阈值,0 表示不过滤

text_rec_input_shape

tuple

None

识别输入形状

return_word_box

bool

False

是否返回单字坐标

lang

str

None

语言,如 ch、en、japan、korean

ocr_version

str

None

PP-OCRv6 / PP-OCRv5 / PP-OCRv4 / PP-OCRv3

device

str

自动

cpu、gpu:0、npu:0、xpu:0、mlu:0、dcu:0、metax_gpu:0、iluvatar_gpu:0;多卡可写 gpu:0,1,2,3

engine

str

None

paddle / paddle_static / paddle_dynamic / transformers / onnxruntime;None 时沿用旧版自动行为

enable_hpi

bool

None

是否启用高性能推理(显式指定 engine 后失效)

use_tensorrt

bool

False

启用 TensorRT 子图引擎(CUDA 11.8 + TensorRT 8.6.x)

precision

str

fp32

计算精度,可设 fp16

enable_mkldnn

bool

True

是否启用 MKL-DNN(oneDNN)CPU 加速

mkldnn_cache_capacity

int

10

MKL-DNN 缓存容量

cpu_threads

int

10

CPU 推理线程数

paddlex_config

str

None

PaddleX 产线 YAML 配置文件路径

已废弃的 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 支持的选项:

选项

说明

默认

--pipeline

PaddleX 产线注册名或配置文件路径

必填

--device

部署设备,GPU 可用时默认用 GPU

自动

--host

绑定地址

0.0.0.0

--port

监听端口

8080

--use_hpip

启用高性能推理

关闭

--hpi_config

高性能推理配置

无

启动成功会输出 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 场景七:离线 / 内网环境模型部署

  1. 在联网机器上跑一次推理,让模型自动下载完成;或直接从官方模型列表页(model_list)下载 *_infer.tar 推理模型包;

  2. 把模型目录拷贝到内网机器;

  3. 通过参数或配置文件指定本地模型路径:

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 字段。

九、全套报错故障排查

#

现象

原因

解决

1

pip install paddleocr 依赖冲突、安装失败

环境里残留旧版 PaddleOCR / PaddleSeg 等包

按官方 FAQ 新建干净虚拟环境:conda create -n paddleocr python=3.8 && conda activate paddleocr && pip install paddleocr

2

import paddle 报错或 GPU 不可用

飞桨版本与 paddleocr 不匹配,或 GPU wheel 装成了 CPU 版

按第六章版本对应表重装飞桨;用 paddle.is_compiled_with_cuda() 验证

3

GPU 推理报 CUDA_ERROR_NO_DEVICE / 检测不到设备

驱动版本低于 wheel 要求,或容器未挂 GPU

cu118 需驱动 ≥450.80.02、cu126 需 ≥550.54.14;Docker 加 --gpus all;nvidia-smi 排查

4

报 CUDNN_STATUS_EXECUTION_FAILED

cuDNN 与 CUDA 版本不匹配(尤其自装 CUDA 的环境)

优先用官方 Docker 镜像;pip 安装时保持 wheel 自带组件,勿混装系统 cuDNN

5

报显卡算力 / SM 未注册类错误

显卡太新(如 50 系)或太旧,wheel 未编译对应架构

50 系按官方文档装专用 Windows wheel;其余情况升级飞桨到最新 stable

6

libGL.so.1: cannot open shared object file

系统缺 OpenGL 运行库(OpenCV 依赖)

Debian/Ubuntu:sudo apt install -y libgl1;CentOS:sudo yum install -y mesa-libGL

7

首次运行卡在下载模型 / 下载失败

默认源网络不通

设置 PADDLE_PDX_MODEL_SOURCE=BOS;或手动下载模型后用 *_model_dir 指定本地路径

8

程序无响应、异常退出、内存耗尽、推理极慢

加载了超出需求的模块 / 大模型

关闭不需要的模块:use_doc_orientation_classify=False、use_doc_unwarping=False、use_textline_orientation=False;换 tiny/small 档模型

9

GPU 显存不足(CUDA out of memory)

batch 或图片过大

按官方 FAQ:减小 batch size、text_det_limit_side_len=640、换 mobile 档模型;具体显存参数以官方 FAQ 为准

10

GPU 推理速度慢

未走最优后端

--enable_hpi True;TensorRT 加速(CUDA 11.8 + TRT 8.6.1.6);--precision fp16

11

CUDA 12.6 环境启用高性能推理报不支持 TensorRT

官方明确该组合暂不支持 TRT 后端

改用 OpenVINO / ONNX Runtime 后端,或降级到 CUDA 11.8 + TRT 8.6

12

高性能推理首次执行特别慢

正在构建推理引擎

官方说明引擎构建结果会缓存在模型目录,后续启动复用缓存

13

服务化接口返回超大响应

Base64 内联返回大图 / 多页 PDF

产线配置 Serving.return_urls: true 走 BOS 预签名 URL;或解除/调整 max_num_input_imgs

14

PDF 只处理了前 10 页

服务默认限制

配置文件加 Serving: extra: max_num_input_imgs: null

15

paddlex --serve 端口被占用

8080 被其他进程占用

--port 9000 换端口,或用 Nginx 反代(见第七章)

16

多进程 / 多卡推理报 device 解析错误

设备串写法不对

多卡写 gpu:0,1,2,3;至少指定两块卡才能走并行逻辑

17

训练日志保存失败、albumentations 报错

旧版 bug(3.2.0 已修复)

升级到最新 paddleocr

18

与其他飞桨生态库(如 PaddleSeg 旧版)冲突

共享环境内依赖版本打架

官方建议训练与推理可共存但建议干净环境;不同推理引擎不要混装在同一环境

19

Windows 命令行中文乱码

控制台编码非 UTF-8

PowerShell 执行 chcp 65001 后重试

20

Apple Silicon 上无 GPU wheel 可装

飞桨 pip 源以 CPU 版为主

macOS 使用 CPU 版;确有 GPU 需求请查飞桨官网安装页的最新说明

上表中第 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__)"

评论交流

文章目录