简介:本文为零基础用户提供CentOS系统下PaddleOCR的完整安装部署指南,涵盖环境准备、依赖安装、源码编译、模型下载及基础使用全流程,帮助开发者快速搭建OCR服务。
PaddleOCR官方推荐使用CentOS 7及以上版本,执行cat /etc/redhat-release查看系统版本。若版本过低,建议升级或使用Docker容器化部署。
sudo yum update -ysudo yum install -y epel-release # 启用EPEL仓库
此操作确保系统基础库为最新版本,避免兼容性问题。
sudo yum groupinstall -y "Development Tools"sudo yum install -y cmake wget git
CMake(≥3.10)是PaddleOCR编译的核心依赖,Git用于代码管理。
推荐使用Miniconda管理Python环境,避免系统Python冲突:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.shbash Miniconda3-latest-Linux-x86_64.sh -b -p ~/minicondaecho 'export PATH=~/miniconda/bin:$PATH' >> ~/.bashrcsource ~/.bashrc
conda create -n paddle_env python=3.8conda activate paddle_env
Python 3.8在性能与兼容性间取得最佳平衡。
根据硬件配置选择:
pip install paddlepaddle==2.5.0 -i https://mirror.baidu.com/pypi/simple
# 先安装CUDA 11.2和cuDNN 8.1sudo yum install -y cuda-11-2 cudnn-devel-8.1pip install paddlepaddle-gpu==2.5.0.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
python -c "import paddle; paddle.utils.run_check()"
输出PaddlePaddle is installed successfully!表示成功。
git clone https://github.com/PaddlePaddle/PaddleOCR.gitcd PaddleOCR
建议使用git checkout release/2.7切换到稳定版本。
pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
关键依赖说明:
shapely:几何图形处理pyclipper:多边形裁剪opencv-python:图像处理若需使用C++推理或PP-Structure模块:
mkdir build && cd buildcmake .. && make -j$(nproc)
mkdir inference && cd inferencewget 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.tartar xf *.tar && rm *.tar
编辑configs/inference/det_db_icdar15.yml,修改:
Global:infer_img: ./doc/imgs/11.jpg # 默认测试图片rec_char_dict_path: ./ppocr/utils/dict/chinese_cht_dict.txt # 字符集文件
python tools/infer_rec.py \-c configs/rec/ch_PP-OCRv4_rec.yml \-o Global.pretrained_model=./inference/ch_PP-OCRv4_rec_infer/model \Global.infer_img=./doc/imgs_words/ch/word_1.jpg
预期输出包含识别文本和置信度。
使用FastAPI快速搭建API:
# 创建app.pyfrom fastapi import FastAPIfrom paddleocr import PaddleOCRocr = PaddleOCR(use_angle_cls=True, lang="ch")app = FastAPI()@app.post("/ocr")async def ocr_api(img_base64: str):import base64from io import BytesIOfrom PIL import Imageimg_data = base64.b64decode(img_base64)img = Image.open(BytesIO(img_data))result = ocr.ocr(img, cls=True)return {"result": result}
启动服务:
pip install fastapi uvicornuvicorn app:app --host 0.0.0.0 --port 8000
将FP32模型转为INT8:
python tools/export_model.py \-c configs/rec/ch_PP-OCRv4_rec.yml \-o Global.pretrained_model=./inference/ch_PP-OCRv4_rec_infer/model \Global.save_inference_dir=./quant_model \Global.quant=True
修改tools/infer/predict_system.py,在main函数前添加:
import multiprocessingmultiprocessing.set_start_method('spawn') # 避免GPU内存冲突
错误现象:CUDA out of memory
解决方案:
batch_size参数export CUDA_VISIBLE_DEVICES=0限制GPU使用原因:未正确加载字符集文件
检查:
from paddleocr import PaddleOCRocr = PaddleOCR(lang="ch") # 确保lang参数为chprint(ocr.get_params()["rec_char_dict_path"]) # 验证路径
创建Dockerfile:
FROM nvidia/cuda:11.2.2-cudnn8-runtime-ubuntu20.04RUN apt update && apt install -y python3-pip gitCOPY . /PaddleOCRWORKDIR /PaddleOCRRUN pip install -r requirements.txtCMD ["python", "tools/infer_rec.py", "-c", "configs/rec/ch_PP-OCRv4_rec.yml"]
构建并运行:
docker build -t paddleocr .docker run --gpus all -v $(pwd)/inference:/PaddleOCR/inference paddleocr
通过Helm Chart实现水平扩展,关键配置:
# values.yamlreplicaCount: 3resources:limits:nvidia.com/gpu: 1requests:cpu: "500m"memory: "2Gi"
本教程完整覆盖了从环境搭建到服务部署的全流程,关键步骤验证点包括:
推荐学习资源: