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 则提供了更灵活的集成能力,通过关闭不必要的预处理选项,能在保持精度的同时显著提升推理效率。