logo

手把手0基础Centos安装部署PaddleOCR全流程指南

作者:很菜不狗2025.09.26 19:55浏览量:1

简介:本文为0基础开发者提供CentOS系统下PaddleOCR的完整安装部署方案,涵盖环境准备、依赖安装、代码下载、模型配置到API服务启动的全流程,附带详细命令和问题排查指南。

手把手0基础Centos下安装与部署PaddleOCR教程

一、环境准备阶段

1.1 系统基础检查

在CentOS 7/8系统上执行安装前,需确认系统满足以下条件:

  • 内存建议≥8GB(测试环境4GB可运行但性能受限)
  • 磁盘空间≥20GB(包含模型文件)
  • 网络连接正常(需下载约1.2GB依赖包)

通过以下命令检查系统版本:

  1. cat /etc/redhat-release
  2. # 应显示CentOS Linux release 7.x或8.x

1.2 基础工具安装

执行系统更新并安装开发工具链:

  1. sudo yum update -y
  2. sudo yum groupinstall "Development Tools" -y
  3. sudo yum install -y wget curl git epel-release

二、Python环境配置

2.1 Miniconda安装(推荐)

使用Miniconda管理Python环境可避免系统Python冲突:

  1. wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
  2. bash Miniconda3-latest-Linux-x86_64.sh -b -p ~/miniconda3
  3. echo 'export PATH=~/miniconda3/bin:$PATH' >> ~/.bashrc
  4. source ~/.bashrc

2.2 虚拟环境创建

创建专用Python环境并激活:

  1. conda create -n paddle_env python=3.8 -y
  2. conda activate paddle_env

三、PaddlePaddle框架安装

3.1 版本选择策略

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

  • CPU版本(无GPU时):
    1. pip install paddlepaddle==2.5.2 -i https://mirror.baidu.com/pypi/simple
  • GPU版本(需NVIDIA显卡):
    1. # 先安装CUDA 11.2和cuDNN 8.1
    2. sudo yum install -y cuda-11-2 cudnn8
    3. pip install paddlepaddle-gpu==2.5.2.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html

3.2 安装验证

执行以下命令验证安装:

  1. python -c "import paddle; paddle.utils.run_check()"
  2. # 应显示PaddlePaddle安装成功及可用设备信息

四、PaddleOCR核心组件部署

4.1 代码仓库克隆

从官方GitHub获取最新版本:

  1. git clone https://github.com/PaddlePaddle/PaddleOCR.git
  2. cd PaddleOCR

4.2 依赖包安装

安装项目所需Python依赖:

  1. pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
  2. # 特殊依赖处理
  3. pip install pyclipper opencv-python-headless==4.5.5.64

4.3 预训练模型下载

推荐下载中文识别模型包(约800MB):

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

五、功能测试与验证

5.1 基础识别测试

运行单张图片识别测试:

  1. python tools/infer_rec.py \
  2. -c configs/rec/PP-OCRv4/rec_chinese_PP-OCRv4_train.yml \
  3. -o Global.pretrained_model=inference/ch_PP-OCRv4_rec_infer/model \
  4. Global.infer_img=doc/imgs_words/ch/word_1.jpg

5.2 完整流程验证

执行端到端检测识别:

  1. python tools/infer_det_rec.py \
  2. -c configs/det/det_mv3_db.yml \
  3. -c configs/rec/PP-OCRv4/rec_chinese_PP-OCRv4_train.yml \
  4. -o Global.pretrained_model=inference/ch_PP-OCRv4_det_infer/model \
  5. Global.infer_img=doc/imgs/11.jpg

六、Web服务部署方案

6.1 FastAPI服务搭建

安装Web服务框架:

  1. pip install fastapi uvicorn[standard] python-multipart

创建服务入口文件app.py

  1. from fastapi import FastAPI, UploadFile, File
  2. from paddleocr import PaddleOCR
  3. import cv2
  4. import numpy as np
  5. app = FastAPI()
  6. ocr = PaddleOCR(use_angle_cls=True, lang="ch")
  7. @app.post("/ocr/")
  8. async def ocr_endpoint(file: UploadFile = File(...)):
  9. contents = await file.read()
  10. nparr = np.frombuffer(contents, np.uint8)
  11. img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
  12. result = ocr.ocr(img, cls=True)
  13. return {"result": result}

6.2 服务启动与测试

启动Web服务:

  1. uvicorn app:app --host 0.0.0.0 --port 8866

使用curl测试服务:

  1. curl -X POST -F "file=@test.jpg" http://localhost:8866/ocr/

七、常见问题解决方案

7.1 内存不足问题

当出现Killed错误时,可尝试:

  • 降低batch_size参数
  • 使用交换空间扩容:
    1. sudo fallocate -l 4G /swapfile
    2. sudo chmod 600 /swapfile
    3. sudo mkswap /swapfile
    4. sudo swapon /swapfile

7.2 模型加载失败

检查模型文件完整性:

  1. cd inference
  2. md5sum ch_PP-OCRv4_det_infer/model.pdmodel \
  3. ch_PP-OCRv4_det_infer/model.pdiparams
  4. # 对比官方提供的MD5值

7.3 GPU加速失效

确认CUDA环境:

  1. nvcc --version
  2. nvidia-smi
  3. # 应显示CUDA版本和GPU使用情况

八、性能优化建议

  1. 模型量化:使用INT8量化减少模型体积

    1. pip install paddle-lite
    2. python tools/export_model.py \
    3. -c configs/rec/PP-OCRv4/rec_chinese_PP-OCRv4_train.yml \
    4. -o Global.save_inference_dir=./inference_quant/ \
    5. Global.pretrained_model=inference/ch_PP-OCRv4_rec_infer/model \
    6. Global.quantize=True
  2. 多进程处理:修改服务代码支持并发请求

  3. Nginx反向代理:配置负载均衡
    1. upstream ocr_backend {
    2. server 127.0.0.1:8866;
    3. server 127.0.0.1:8867;
    4. }

九、生产环境部署要点

  1. 容器化部署

    1. FROM python:3.8-slim
    2. WORKDIR /app
    3. COPY . .
    4. RUN pip install -r requirements.txt
    5. CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8866"]
  2. 日志管理

    1. import logging
    2. logging.basicConfig(
    3. filename='ocr_service.log',
    4. level=logging.INFO,
    5. format='%(asctime)s - %(levelname)s - %(message)s'
    6. )
  3. 健康检查接口

    1. @app.get("/health")
    2. def health_check():
    3. return {"status": "healthy"}

本教程完整覆盖了从环境搭建到生产部署的全流程,通过分步骤的详细说明和问题排查指南,即使0基础用户也能在CentOS系统上成功部署PaddleOCR服务。实际部署时建议先在测试环境验证,再逐步迁移到生产环境。

相关文章推荐

发表评论

活动