零基础CentOS部署PaddleOCR全流程指南

一、环境准备与系统配置

1.1 基础环境检查

在CentOS 7/8系统上部署前,需确认以下基础条件:

  • 系统版本:cat /etc/centos-release 确认版本
  • 内存要求:建议≥8GB(生产环境推荐16GB+)
  • 磁盘空间:预留至少20GB可用空间
  • 网络连接:确保可访问外部资源

1.2 依赖安装

基础工具包

  1. sudo yum install -y wget git curl unzip \
  2. gcc gcc-c++ make cmake \
  3. python3 python3-devel \
  4. openssl-devel bzip2-devel \
  5. libffi-devel zlib-devel

Python虚拟环境

推荐使用conda或venv管理环境:

  1. # 安装Miniconda(可选)
  2. wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
  3. bash Miniconda3-latest-Linux-x86_64.sh
  4. # 创建虚拟环境
  5. conda create -n paddle_env python=3.8
  6. conda activate paddle_env
  7. # 或使用venv
  8. python3 -m venv paddle_env
  9. source paddle_env/bin/activate

二、PaddlePaddle框架安装

2.1 版本选择指南

根据硬件配置选择安装版本:

  • CPU版本:适用于无GPU环境
  • GPU版本:需提前安装CUDA和cuDNN

CPU版本安装

  1. python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

GPU版本安装(以CUDA 11.2为例)

  1. # 确认CUDA版本
  2. nvcc --version
  3. # 安装对应版本
  4. python3 -m pip install paddlepaddle-gpu==2.4.2.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html

验证安装:

  1. import paddle
  2. paddle.utils.run_check()

三、PaddleOCR核心组件部署

3.1 源码获取与编译

  1. git clone https://github.com/PaddlePaddle/PaddleOCR.git
  2. cd PaddleOCR
  3. # 安装Python依赖
  4. pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
  5. # 可选:编译PP-OCRv3模型(需CMake 3.15+)
  6. mkdir build && cd build
  7. cmake .. && make -j$(nproc)

3.2 模型下载与配置

预训练模型获取

  1. mkdir -p inference
  2. cd inference
  3. # 下载中英文识别模型
  4. wget https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_infer.tar
  5. wget https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_rec_infer.tar
  6. wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar
  7. # 解压模型
  8. for tar in *.tar; do tar xf $tar && rm $tar; done

配置文件修改

编辑configs/inference_ppocr.py,重点修改:

  1. # 模型路径配置
  2. det_model_dir = "./inference/ch_PP-OCRv4_det_infer/"
  3. rec_model_dir = "./inference/ch_PP-OCRv4_rec_infer/"
  4. cls_model_dir = "./inference/ch_ppocr_mobile_v2.0_cls_infer/"
  5. # 性能参数(根据硬件调整)
  6. use_gpu = False # CPU模式
  7. gpu_mem = 500 # GPU内存限制(MB)

四、服务化部署方案

4.1 命令行模式运行

  1. python3 tools/infer_ocr.py \
  2. -c configs/inference_ppocr.py \
  3. --image_dir=./doc/imgs_en/ \
  4. --det_model_dir=./inference/ch_PP-OCRv4_det_infer/ \
  5. --rec_model_dir=./inference/ch_PP-OCRv4_rec_infer/ \
  6. --cls_model_dir=./inference/ch_ppocr_mobile_v2.0_cls_infer/

4.2 Web服务部署(Flask示例)

创建服务入口

  1. # app.py
  2. from flask import Flask, request, jsonify
  3. from paddleocr import PaddleOCR
  4. ocr = PaddleOCR(use_angle_cls=True, lang="ch")
  5. app = Flask(__name__)
  6. @app.route('/predict', methods=['POST'])
  7. def predict():
  8. if 'file' not in request.files:
  9. return jsonify({"error": "No file uploaded"}), 400
  10. file = request.files['file']
  11. img_path = f"./tmp/{file.filename}"
  12. file.save(img_path)
  13. result = ocr.ocr(img_path, cls=True)
  14. return jsonify({"result": result})
  15. if __name__ == '__main__':
  16. app.run(host='0.0.0.0', port=5000)

服务启动命令

  1. mkdir tmp && chmod 777 tmp
  2. pip install flask
  3. python3 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 监控与维护

  1. # 实时监控脚本示例
  2. top -b -n 1 | grep python
  3. nvidia-smi -l 1 # GPU监控
  4. # 日志管理建议
  5. LOG_DIR="./logs"
  6. mkdir -p $LOG_DIR
  7. nohup python3 app.py > $LOG_DIR/ocr_service.log 2>&1 &

六、扩展应用场景

  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

  1. 2. **Docker化部署**(简化版Dockerfile
  2. ```dockerfile
  3. FROM centos:7
  4. RUN yum install -y python3 python3-pip wget git && \
  5. pip3 install paddlepaddle flask paddleocr
  6. COPY . /PaddleOCR
  7. WORKDIR /PaddleOCR
  8. CMD ["python3", "app.py"]

通过本文的详细指导,开发者可以在CentOS系统上完成从环境搭建到服务部署的全流程操作。实际生产环境中,建议结合监控系统(如Prometheus)和负载均衡方案,构建高可用的OCR服务集群。对于大规模部署场景,可考虑使用容器编排技术(如Kubernetes)实现自动化管理。