PaddlePaddle

技术栈
AI 框架
deep-learningbaiduchinese-nlpindustrialeast-asia

概览

PaddlePaddle

PaddlePaddle(飞桨)是百度于 2016 年开源的产业级深度学习平台,是中国市场占有率最高的深度学习框架。它以中文 NLP 见长,提供从开发、训练到部署的端到端产业方案,尤其在 OCR、语音、工业质检等领域有丰富的预训练模型。

核心价值:

  • 中文 NLP 最强:ERNIE 系列模型、PaddleNLP 套件中文理解能力一流
  • 端到端部署:PaddleLite(移动端)、PaddleServing(服务端)、Paddle.js(浏览器)
  • 产业套件:PaddleOCR(OCR)/ PaddleSpeech(语音)/ PaddleDetection(检测)
  • 动静态图统一:动态图开发 + 静态图部署一键切换
  • 国产硬件适配:华为昇腾 / 寒武纪 / 昆仑芯全支持

适用场景: 中文 NLP 应用、OCR 识别、工业质检、国产化部署。

安装

环境准备

  • Python:>= 3.8(推荐 3.10)
  • 系统:Linux 最佳(Windows/macOS 也支持)
  • GPU:NVIDIA CUDA 10.2+ / 11.2 / 11.6 / 11.7 / 12.0

安装命令

CPU 版

pip install paddlepaddle

GPU 版(按 CUDA 版本选择)

# CUDA 11.7
pip install paddlepaddle-gpu==2.6.1.post117 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html

# CUDA 12.0
pip install paddlepaddle-gpu==2.6.1.post120 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html

# CUDA 11.2
pip install paddlepaddle-gpu==2.6.1.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html

完整工具链

# NLP 套件
pip install paddlenlp

# OCR 套件
pip install paddleocr

# 语音套件
pip install paddlespeech

验证安装

import paddle
print(paddle.__version__)
print("GPU 可用:", paddle.is_compiled_with_cuda())
paddle.set_device("gpu:0" if paddle.is_compiled_with_cuda() else "cpu")
print("当前设备:", paddle.get_device())

常见安装问题

Q1: No module named 'paddle'

包名是 paddlepaddle 而非 paddle。运行 pip install paddlepaddle

Q2: GPU 版安装后 paddle.is_compiled_with_cuda() 返回 False

CUDA 版本不匹配。飞桨对 CUDA 版本敏感,确认 GPU 驱动 CUDA 版本与安装的 whl 严格一致。

Q3: Mac M 系列芯片

飞桨目前对 Apple Silicon 支持有限。建议用 Docker:docker run -it paddlepaddle/paddle:latest-dev-cpu

示例

PaddleOCR 三行搞定文字识别.md

PaddleOCR:三行代码搞定中文 OCR

目标

用 PaddleOCR 一键识别图片中的中文/英文文字,体验飞桨产业级套件的开箱即用。

完整代码

from paddleocr import PaddleOCR
import cv2
import numpy as np

# ─── 1. 初始化(自动下载模型) ───
ocr = PaddleOCR(
    use_angle_cls=True,  # 文字方向分类
    lang='ch',           # 中英文混合
    use_gpu=False,       # CPU
)

# ─── 2. 识别图片 ───
result = ocr.ocr("test_chinese.jpg", cls=True)

# ─── 3. 输出结果 ───
for line in result[0]:
    bbox, (text, confidence) = line
    print(f"[{confidence:.2%}] {text}")
    print(f"  位置: ({int(bbox[0][0])}, {int(bbox[0][1])}) → ({int(bbox[2][0])}, {int(bbox[2][1])})")

# ─── 画框可视化 ───
img = cv2.imread("test_chinese.jpg")
for line in result[0]:
    bbox, (text, confidence) = line
    pts = np.array(bbox, dtype=np.int32).reshape((-1, 1, 2))
    cv2.polylines(img, [pts], True, (0, 255, 0), 2)
    cv2.putText(img, text, (int(bbox[0][0]), int(bbox[0][1]) - 10),
                cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2)

cv2.imwrite("result.jpg", img)
print("结果已保存到 result.jpg")

运行步骤

pip install paddlepaddle paddleocr opencv-python
python paddleocr_demo.py

首次运行自动从 PaddleHub 下载检测 + 识别模型(~100 MB)。

预期输出

[2024/06/01 10:23:45] ppocr INFO: 检测模型加载完成
[2024/06/01 10:23:48] ppocr INFO: 识别模型加载完成

[99.87%] 人工智能正在改变世界
  位置: (120, 35) → (580, 85)
[98.52%] PaddleOCR 是最佳中文 OCR 工具
  位置: (100, 120) → (620, 170)
[97.31%] PaddlePaddle 飞桨框架
  位置: (140, 210) → (500, 260)

结果已保存到 result.jpg

高级用法

# 仅检测文字位置(不识别)
ocr = PaddleOCR(use_angle_cls=True, lang='ch', det=True, rec=False)

# 英文
ocr = PaddleOCR(use_angle_cls=True, lang='en')

# GPU 加速
ocr = PaddleOCR(use_angle_cls=True, lang='ch', use_gpu=True)

教程

飞桨生态系统:ERNIE + 动静统一 + 产业套件.md

PaddlePaddle 入门教程:ERINE 与产业套件全景

1. PaddlePaddle 的"双引擎"

PaddlePaddle 的核心差异化在于产业套件 > 基础框架

PaddlePaddle 核心框架
    ├── 动态图开发(dygraph)
    ├── 静态图部署(static graph)
    └── 自动混合精度(AMP)
    
产业套件(开箱即用)
    ├── PaddleOCR    —— OCR 识别全场景
    ├── PaddleNLP    —— 中文 NLP 全任务(ERNIE 3.0)
    ├── PaddleSpeech —— 语音合成/识别
    ├── PaddleDetection —— 目标检测
    ├── PaddleSeg    —— 图像分割
    └── PaddleGAN    —— 图像生成

2. 动态图 ↔ 静态图一键切换

这是飞桨最独特的设计:

import paddle

# 动态图模式(开发阶段)
paddle.disable_static()

@ paddle.jit.to_static  # 👈 一个装饰器即可
def model(x):
    return paddle.nn.functional.relu(paddle.nn.Linear(10, 5)(x))

# 训练:动态图
x = paddle.randn([3, 10])
out = model(x)

# 部署:自动转为静态图,享受图优化
model = paddle.jit.save(model, "inference_model")

动态图用于调试,静态图用于部署——无需重写代码。

3. PaddleNLP + ERNIE:中文 NLP 最强组合

from paddlenlp.transformers import ErnieForSequenceClassification, ErnieTokenizer

tokenizer = ErnieTokenizer.from_pretrained("ernie-3.0-base-zh")
model = ErnieForSequenceClassification.from_pretrained(
    "ernie-3.0-base-zh", num_classes=2
)

texts = ["这部电影太棒了!", "服务态度很差,不推荐。"]
inputs = tokenizer(texts, padding=True, return_tensors="pd")
logits = model(**inputs)
predictions = paddle.argmax(logits, axis=-1)
print(predictions)  # [1, 0]

ERNIE 3.0 在中文理解任务上长期霸榜 CLUE 榜单。

4. 部署三件套

套件 目标平台 特点
PaddleServing 服务端 高性能推理服务
PaddleLite 移动/嵌入式 ARM 优化,端侧推理
Paddle.js 浏览器 WebGL 加速,不用后端

5. PaddlePaddle vs PyTorch vs TensorFlow

维度 PaddlePaddle PyTorch TensorFlow
中文生态 ⭐⭐⭐ 最强 ⭐⭐ ⭐⭐
产业套件 ⭐⭐⭐ 最多 ⭐⭐
国际社区 ⭐⭐ ⭐⭐⭐ ⭐⭐⭐
国产硬件 ⭐⭐⭐
学术论文 ⭐⭐ ⭐⭐⭐ ⭐⭐

6. 选 PaddlePaddle 的理由

  • 你的业务场景以中文为主(OCR/NLP)
  • 需要国产硬件适配(昇腾/昆仑)
  • 需要完整产业方案而非从头搭积木
  • 公司技术栈在百度云生态内

思考题

  1. 飞桨的动静态图一键切换与 TensorFlow 的 @tf.function 有何异同?
  2. 为什么飞桨在中文 OCR 上比 Tesseract + EasyOCR 表现更好?
  3. 飞桨的产业套件模式与 HuggingFace 的模型 Hub 模式各有什么优劣?

参考资料

  1. [1] 百度飞桨团队. 飞桨:源于产业实践的开源深度学习平台. 数据与计算发展前沿, 2019. doi:10.11871/jfdc.issn.2096.742X.2019.01.011 https://www.jfdc.cnic.cn/CN/10.11871/jfdc.issn.2096.742X.2019.01.011
  2. [2] PaddlePaddle. PaddlePaddle Official Documentation. PaddlePaddle Docs, 2026. https://www.paddlepaddle.org.cn/documentation/docs/en/guides/index_en.html
  3. [3] PaddlePaddle. PaddlePaddle GitHub Repository. GitHub, 2026. https://github.com/PaddlePaddle/Paddle
  4. [4] PaddlePaddle. PaddleOCR: Awesome multilingual OCR toolkits. GitHub, 2026. https://github.com/PaddlePaddle/PaddleOCR
  5. [5] PaddlePaddle. PaddleNLP Documentation. PaddleNLP Docs, 2026. https://paddlenlp.readthedocs.io/
  6. [6] PaddlePaddle. PaddleDetection Documentation. PaddleDetection Docs, 2026. https://github.com/PaddlePaddle/PaddleDetection
  7. [7] PaddlePaddle. PaddleSeg Documentation. PaddleSeg Docs, 2026. https://github.com/PaddlePaddle/PaddleSeg
  8. [8] PaddlePaddle. PaddleLite Documentation. Paddle Lite Docs, 2026. https://www.paddlepaddle.org.cn/lite
  9. [9] Yanming Huang, Yuan Tang, Zhenkun Cai, et al.. End-to-end Adaptive Distributed Training on PaddlePaddle. arXiv, 2021. https://arxiv.org/abs/2112.02752
  10. [10] Yu Sun, Shuohuan Wang, Yukun Li, et al.. ERNIE: Enhanced Representation through Knowledge Integration. arXiv, 2019. https://arxiv.org/abs/1904.09223
  11. [11] Yu Sun, Shuohuan Wang, Yukun Li, et al.. ERNIE 2.0: A Continual Pre-training Framework for Language Understanding. AAAI, 2020. doi:10.1609/aaai.v34i05.6428 https://arxiv.org/abs/1907.12412
  12. [12] Shuohuan Wang, Yu Sun, Yang Xiang, et al.. ERNIE 3.0 Titan: Exploring Larger-scale Knowledge Enhanced Pre-training for Language Understanding and Generation. arXiv, 2021. https://arxiv.org/abs/2112.12731
  13. [13] Yuning Du, Chenxia Li, Ruoyu Guo, et al.. PP-OCR: A Practical Ultra Lightweight OCR System. arXiv, 2020. https://arxiv.org/abs/2009.09941
  14. [14] Xiang Long, Kaipeng Deng, Guanzhong Wang, et al.. PP-YOLO: An Effective and Efficient Implementation of Object Detector. arXiv, 2020. https://arxiv.org/abs/2007.12099
  15. [15] Shangliang Xu, Xiaohui Wang, Wenqi Lv, et al.. PP-YOLOE: An evolved version of YOLO. arXiv, 2022. https://arxiv.org/abs/2203.16250
  16. [16] PaddlePaddle. PaddleClas: A Practical Image Classification Toolkit for Industry. GitHub, 2021. https://github.com/PaddlePaddle/PaddleClas
  17. [17] Hui Zhang, Zhongzhi Yu, Hao Li. PaddleSpeech: An Easy-to-Use All-in-One Speech Toolkit. arXiv, 2022. https://arxiv.org/abs/2205.12007
  18. [18] PaddlePaddle. FleetX: A Lightweight Large-Scale Distributed Training Library. GitHub, 2026. https://github.com/PaddlePaddle/FleetX
  19. [19] OpenI 启智社区. OpenI 飞桨项目简介. OpenI, 2026. https://openi.org.cn/projects/paddle/
  20. [20] PaddlePaddle. PaddlePaddle PyPI Project. PyPI, 2026. https://pypi.org/project/paddlepaddle/