ZH ·
🌏 English

PaddleOCR 上手实录:Conda 独立环境 + GPU 推理一条龙

操作演示

一、创建独立 Conda 环境

为了保持开发环境的纯净,避免依赖冲突,我习惯使用 Conda 创建独立环境。根据官方文档,PaddleOCR 基础版支持 Python 3.8+,但如果需要安装 [all] 等可选依赖组(包含文档解析、信息抽取等高级功能),则建议 Python 版本在 3.9 以上。这里我选择 Python 3.11,既能满足所有功能需求,又能获得较好的性能。

conda create -n paddleocr python=3.11
conda activate paddleocr

二、安装 PaddleOCR 与 PaddlePaddle GPU

安装过程分为两步:先安装 OCR 工具包,再安装底层的 PaddlePaddle 引擎。paddleocr[all] 会拉取所有可选组件,适合需要完整功能的场景。对于 PaddlePaddle 引擎,如果你使用 GPU 推理,必须安装 paddlepaddle-gpu 版本。

这里有一个关键注意点:选择 cu118 还是 cu126 取决于你的显卡驱动版本,而不是主机安装的 CUDA Toolkit 版本。驱动版本 ≥ 550.54.14 可选 cu126,否则建议选 cu118。我在记录中选择了 cu126 以适配较新的驱动环境,安装后建议验证版本以确保成功。

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 -c "import paddle; print(paddle.__version__)"

三、命令行快速验证

安装完成后,可以直接通过 paddleocr 命令行工具进行验证。我在测试过程中尝试了 CPU 和 GPU 两种模式,并调整了输出目录(如 ./output./temp)。为了提升推理速度,可以通过 --use_doc_orientation_classify False 等参数关闭文档方向分类、去畸变等预处理步骤。

以下是一个典型的 GPU 推理命令,支持直接输入本地路径或图片 URL,结果会打印到终端并保存可视化图片到指定目录。

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 \
  --device gpu:0

如果想试用其他版本的 OCR 模型,可以通过 --ocr_version 参数切换,例如指定 PP-OCRv4:

paddleocr ocr -i ./general_ocr_002.png --ocr_version PP-OCRv4

切到 CPU 推理时,把 --device gpu:0 改成 --device cpu 即可,其余参数保持不变。

四、Python 脚本集成

除了命令行,PaddleOCR 也提供了便捷的 Python API,方便集成到业务代码中。根据我的测试目录结构,我将图片放在 data 目录下,结果输出到 output 目录。

mkdir paddleocr_test && cd paddleocr_test
mkdir data && cd data
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png
cd .. && mkdir output

PaddleOCR 初始化时可以传入与命令行相同的优化参数。predict() 方法返回一个 Result 列表,每个结果对象都提供了 .print().save_to_img().save_to_json() 方法,分别用于控制台打印、保存可视化图片和保存结构化数据。

# test.py
from paddleocr import PaddleOCR
import os

os.makedirs("output", exist_ok=True)

ocr = PaddleOCR(
    use_doc_orientation_classify=False,
    use_doc_unwarping=False,
    use_textline_orientation=False,
    lang='ch',
)

result = ocr.predict("./data/general_ocr_002.png")

for res in result:
    res.print()
    res.save_to_img("output")
    res.save_to_json("output")

运行:

python test.py

小结

PaddleOCR 的部署流程非常清晰,Conda 隔离环境配合 pip 安装即可快速上手。命令行工具适合快速测试和单张图片处理,而 Python API 则提供了更灵活的集成能力,通过关闭不必要的预处理选项,能在保持精度的同时显著提升推理效率。

参考