一、环境准备与系统配置
1.1 基础环境检查
在CentOS 7/8系统上部署前,需确认以下基础条件:
- 系统版本:
cat /etc/centos-release确认版本 - 内存要求:建议≥8GB(生产环境推荐16GB+)
- 磁盘空间:预留至少20GB可用空间
- 网络连接:确保可访问外部资源
1.2 依赖安装
基础工具包
sudo yum install -y wget git curl unzip \gcc gcc-c++ make cmake \python3 python3-devel \openssl-devel bzip2-devel \libffi-devel zlib-devel
Python虚拟环境
推荐使用conda或venv管理环境:
# 安装Miniconda(可选)wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.shbash Miniconda3-latest-Linux-x86_64.sh# 创建虚拟环境conda create -n paddle_env python=3.8conda activate paddle_env# 或使用venvpython3 -m venv paddle_envsource paddle_env/bin/activate
二、PaddlePaddle框架安装
2.1 版本选择指南
根据硬件配置选择安装版本:
- CPU版本:适用于无GPU环境
- GPU版本:需提前安装CUDA和cuDNN
CPU版本安装
python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
GPU版本安装(以CUDA 11.2为例)
# 确认CUDA版本nvcc --version# 安装对应版本python3 -m pip install paddlepaddle-gpu==2.4.2.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
验证安装:
import paddlepaddle.utils.run_check()
三、PaddleOCR核心组件部署
3.1 源码获取与编译
git clone https://github.com/PaddlePaddle/PaddleOCR.gitcd PaddleOCR# 安装Python依赖pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple# 可选:编译PP-OCRv3模型(需CMake 3.15+)mkdir build && cd buildcmake .. && make -j$(nproc)
3.2 模型下载与配置
预训练模型获取
mkdir -p inferencecd inference# 下载中英文识别模型wget https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_infer.tarwget https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_rec_infer.tarwget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar# 解压模型for tar in *.tar; do tar xf $tar && rm $tar; done
配置文件修改
编辑configs/inference_ppocr.py,重点修改:
# 模型路径配置det_model_dir = "./inference/ch_PP-OCRv4_det_infer/"rec_model_dir = "./inference/ch_PP-OCRv4_rec_infer/"cls_model_dir = "./inference/ch_ppocr_mobile_v2.0_cls_infer/"# 性能参数(根据硬件调整)use_gpu = False # CPU模式gpu_mem = 500 # GPU内存限制(MB)
四、服务化部署方案
4.1 命令行模式运行
python3 tools/infer_ocr.py \-c configs/inference_ppocr.py \--image_dir=./doc/imgs_en/ \--det_model_dir=./inference/ch_PP-OCRv4_det_infer/ \--rec_model_dir=./inference/ch_PP-OCRv4_rec_infer/ \--cls_model_dir=./inference/ch_ppocr_mobile_v2.0_cls_infer/
4.2 Web服务部署(Flask示例)
创建服务入口
# app.pyfrom flask import Flask, request, jsonifyfrom paddleocr import PaddleOCRocr = PaddleOCR(use_angle_cls=True, lang="ch")app = Flask(__name__)@app.route('/predict', methods=['POST'])def predict():if 'file' not in request.files:return jsonify({"error": "No file uploaded"}), 400file = request.files['file']img_path = f"./tmp/{file.filename}"file.save(img_path)result = ocr.ocr(img_path, cls=True)return jsonify({"result": result})if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
服务启动命令
mkdir tmp && chmod 777 tmppip install flaskpython3 app.py
五、性能优化与生产建议
5.1 硬件加速方案
- GPU部署:建议NVIDIA Tesla系列,CUDA 11.x兼容性最佳
- 多进程处理:使用
torch.multiprocessing提升吞吐量 - 模型量化:通过
paddle.quantization减少计算量
5.2 常见问题处理
| 问题现象 | 解决方案 |
|---|---|
| 内存不足 | 减少batch_size参数,启用交换空间 |
| 模型加载慢 | 使用--use_mp多进程加载 |
| 识别率低 | 尝试PP-OCRv4模型,增加预处理步骤 |
| GPU不可用 | 检查nvidia-smi,确认驱动安装 |
5.3 监控与维护
# 实时监控脚本示例top -b -n 1 | grep pythonnvidia-smi -l 1 # GPU监控# 日志管理建议LOG_DIR="./logs"mkdir -p $LOG_DIRnohup python3 app.py > $LOG_DIR/ocr_service.log 2>&1 &
六、扩展应用场景
- 批量处理模式:编写Shell脚本处理文件夹内图片
```bash
!/bin/bash
INPUT_DIR=”./images”
OUTPUT_DIR=”./results”
mkdir -p $OUTPUT_DIR
for img in $INPUT_DIR/; do
filename=$(basename $img)
python3 tools/infer_ocr.py \
-c configs/inference_ppocr.py \
—image_dir=$img \
—output=$OUTPUT_DIR/${filename%.}
done
2. **Docker化部署**(简化版Dockerfile)```dockerfileFROM centos:7RUN yum install -y python3 python3-pip wget git && \pip3 install paddlepaddle flask paddleocrCOPY . /PaddleOCRWORKDIR /PaddleOCRCMD ["python3", "app.py"]
通过本文的详细指导,开发者可以在CentOS系统上完成从环境搭建到服务部署的全流程操作。实际生产环境中,建议结合监控系统(如Prometheus)和负载均衡方案,构建高可用的OCR服务集群。对于大规模部署场景,可考虑使用容器编排技术(如Kubernetes)实现自动化管理。