logo

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

作者:起个名字好难2025.09.26 19:55浏览量:0

简介:本文面向零基础用户,提供在CentOS系统下从环境配置到PaddleOCR部署的完整操作指南,包含依赖安装、代码下载、模型下载及测试验证全流程。

前言

PaddleOCR是百度开源的一款基于深度学习的OCR工具库,支持多种语言的文本检测与识别。对于需要在CentOS服务器上部署OCR服务的开发者来说,掌握完整的安装与部署流程至关重要。本文将详细介绍在CentOS系统下从零开始安装和部署PaddleOCR的全过程,帮助读者快速上手。

一、环境准备

1.1 系统要求

  • CentOS 7或更高版本(推荐CentOS 7.6+)
  • 至少4GB内存(推荐8GB+)
  • 至少20GB可用磁盘空间
  • 具备root权限或sudo权限

1.2 安装必要工具

  1. # 更新系统软件包
  2. sudo yum update -y
  3. # 安装开发工具组
  4. sudo yum groupinstall "Development Tools" -y
  5. # 安装wget和curl
  6. sudo yum install wget curl -y

1.3 安装Python环境

PaddleOCR推荐使用Python 3.7或更高版本。CentOS 7默认Python版本较低,建议通过以下方式安装新版Python:

  1. # 安装依赖库
  2. sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel -y
  3. # 下载Python 3.8安装包
  4. wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tar.xz
  5. # 解压并安装
  6. tar -xf Python-3.8.12.tar.xz
  7. cd Python-3.8.12
  8. ./configure --enable-optimizations
  9. make -j$(nproc)
  10. sudo make altinstall
  11. # 验证安装
  12. python3.8 --version

1.4 安装pip

  1. curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
  2. python3.8 get-pip.py

二、安装PaddlePaddle框架

PaddleOCR基于PaddlePaddle深度学习框架,需要先安装PaddlePaddle。

2.1 确定安装版本

访问PaddlePaddle安装指南,根据您的系统环境选择合适的安装命令。

2.2 CPU版本安装(推荐测试环境)

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

2.3 GPU版本安装(如需GPU支持)

如果您的服务器有NVIDIA GPU,可以安装GPU版本以获得更好性能:

  1. # 首先安装CUDA和cuDNN(需根据GPU型号选择版本)
  2. # 这里以CUDA 10.2和cuDNN 8.0为例
  3. sudo yum install -y gcc-c++ make
  4. wget https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.2.89-1.x86_64.rpm
  5. sudo rpm -ivh cuda-repo-rhel7-10.2.89-1.x86_64.rpm
  6. sudo yum clean all
  7. sudo yum install -y cuda-10-2
  8. # 安装cuDNN
  9. # 需要从NVIDIA官网下载cuDNN包后上传到服务器
  10. # 假设已下载cudnn-10.2-linux-x64-v8.0.5.39.tgz
  11. tar -xzvf cudnn-10.2-linux-x64-v8.0.5.39.tgz
  12. sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
  13. sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
  14. sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
  15. # 安装GPU版PaddlePaddle
  16. python3.8 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple

2.4 验证安装

  1. python3.8 -c "import paddle; paddle.utils.run_check()"

如果看到”PaddlePaddle is installed successfully!”的提示,说明安装成功。

三、安装PaddleOCR

3.1 克隆PaddleOCR仓库

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

3.2 安装依赖库

  1. python3.8 -m pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple

3.3 下载预训练模型

PaddleOCR提供了多种预训练模型,可以根据需求下载:

  1. # 下载中文OCR模型(检测+识别)
  2. mkdir -p inference
  3. cd inference
  4. wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_infer.tar
  5. wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_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 file in *.tar; do tar -xf $file; done
  9. cd ..

四、运行PaddleOCR

4.1 测试图片识别

  1. # 使用默认配置运行
  2. python3.8 tools/infer_rec.py -c configs/rec/rec_chinese_lite_train.yml \
  3. -o Global.pretrained_model=inference/ch_ppocr_mobile_v2.0_rec_infer/model \
  4. Global.infer_img=doc/imgs_words/ch/word_1.jpg

4.2 完整OCR流程(检测+识别)

  1. # 复制示例配置文件
  2. cp configs/ppocr/ppocr_mobile_v2.0_det_rec.yml ./my_config.yml
  3. # 修改配置文件中的模型路径(可选)
  4. # 使用vim或nano编辑my_config.yml
  5. # 修改以下部分:
  6. # DetModelDir: ./inference/ch_ppocr_mobile_v2.0_det_infer
  7. # RecModelDir: ./inference/ch_ppocr_mobile_v2.0_rec_infer
  8. # 运行完整OCR
  9. python3.8 tools/infer_ppocr.py -c my_config.yml \
  10. --image_dir=doc/imgs_words/ch/word_1.jpg \
  11. --det_model_dir=inference/ch_ppocr_mobile_v2.0_det_infer \
  12. --rec_model_dir=inference/ch_ppocr_mobile_v2.0_rec_infer

五、部署为Web服务

5.1 安装FastAPI和Uvicorn

  1. python3.8 -m pip install fastapi uvicorn python-multipart -i https://mirror.baidu.com/pypi/simple

5.2 创建Web服务

在PaddleOCR目录下创建app.py文件:

  1. from fastapi import FastAPI, UploadFile, File
  2. from paddleocr import PaddleOCR
  3. import cv2
  4. import numpy as np
  5. import io
  6. app = FastAPI()
  7. ocr = PaddleOCR(use_angle_cls=True, lang="ch")
  8. @app.post("/ocr/")
  9. async def ocr_endpoint(file: UploadFile = File(...)):
  10. # 读取上传的图片
  11. contents = await file.read()
  12. nparr = np.frombuffer(contents, np.uint8)
  13. img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
  14. # 执行OCR
  15. result = ocr.ocr(img, cls=True)
  16. # 格式化结果
  17. output = []
  18. for line in result:
  19. for word_info in line:
  20. word = word_info[1][0]
  21. confidence = word_info[1][1]
  22. output.append({"word": word, "confidence": float(confidence)})
  23. return {"result": output}

5.3 启动Web服务

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

5.4 测试Web服务

使用curl测试:

  1. curl -X POST -F "file=@doc/imgs_words/ch/word_1.jpg" http://localhost:8000/ocr/

六、常见问题解决

6.1 内存不足问题

如果遇到内存不足错误,可以:

  1. 减少batch size(修改配置文件中的Global.batch_size_per_card
  2. 使用更小的模型(如ch_ppocr_mobile_v2.0
  3. 增加服务器内存

6.2 依赖冲突问题

如果遇到依赖冲突,可以:

  1. # 创建虚拟环境(推荐)
  2. python3.8 -m venv paddle_env
  3. source paddle_env/bin/activate
  4. pip install -r requirements.txt

6.3 GPU不可用问题

确保:

  1. 已正确安装CUDA和cuDNN
  2. NVIDIA驱动已安装
  3. 使用nvidia-smi命令可以查看GPU状态
  4. 安装的是GPU版本的PaddlePaddle

七、性能优化建议

  1. 模型选择:根据需求选择合适的模型

    • 移动端/轻量级:ch_ppocr_mobile_v2.0
    • 服务器端/高精度:ch_ppocr_server_v2.0
  2. 批量处理:对于大量图片,可以实现批量处理接口

  3. 多进程处理:使用Gunicorn启动多个Uvicorn进程

  4. 模型量化:考虑使用量化后的模型减少内存占用

八、总结

通过以上步骤,您已经成功在CentOS系统上完成了PaddleOCR的安装与部署。从环境准备、框架安装到模型下载和Web服务部署,本文提供了完整的操作指南。对于生产环境部署,建议进一步考虑:

  1. 使用Nginx作为反向代理
  2. 实现日志记录和监控
  3. 添加认证和限流机制
  4. 考虑容器化部署(如Docker)

PaddleOCR作为一款优秀的开源OCR工具,其丰富的功能和良好的性能可以满足大多数OCR场景的需求。希望本文能帮助您快速上手PaddleOCR的部署工作。

相关文章推荐

发表评论

活动