paddleocr 容器部署

使用容器之前需先安装docker,使用阿里云镜像源:

# step 1: 安装必要的一些系统工具

sudo apt-get update

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# step 2: 安装GPG证书

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# Step 3: 写入软件源信息

sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# Step 4: 更新并安装Docker-CE

sudo apt-get -y update

sudo apt-get -y install docker-ce



docker 启动:


sudo systemctl start docker 


停止:

sudo systemctl stop docker


列出所有容器:docker ps -a


列出所有镜像:docker images -a


删除镜像:docker rmi  [镜像名称或者镜像ID]



有了docker 之后 下载镜像

更改镜像下载目录,先停止镜像,然后直接编辑以下文件:

vi /etc/docker/daemon.json

然后在里面 加入:路径自己修改

{ "data-root": "/data/docker" }




如果不自定义镜像,可以不用创建Dockerfile ,否则创建个Dockerfile  然后在当前目录下创建镜像,然后在基于镜像创建容器


cd /home/Projects

# 创建一个名字为ppocr的docker容器,创建的同时会自动下载镜像,并将当前目录映射到容器的/paddle目录下

CPU:

sudo docker run --name ppocr -v $PWD:/paddle --network=host -it registry.baidubce.com/paddlepaddle/paddle:2.1.3-gpu-cuda10.2-cudnn7 /bin/bash

GPU:

sudo nvidia-docker run --name ppocr -v $PWD:/paddle --shm-size=64G --network=host -it registry.baidubce.com/paddlepaddle/paddle:2.1.3-gpu-cuda10.2-cudnn7 /bin/bash


进入容器:

sudo docker attach ppocr  #这种方式进入 退出可以直接使用命令:exit,退出之后容器正常运行

sudo docker container exec -it ppocr /bin/bash  #这种方式进入 如果exit退出容器会停止,需要快捷键退出Ctrl+P+Q



# 构建Docker镜像 

 docker build -t [容器名称] . 

 # 运行Docker容器 ,5100 为容器对外开放的端口

 docker run -p 5100:5100 [容器名称]



---------------------------------------------------

列出容器:


docker ps -a

删除容器:

删除之前需要先停止正在运行的容器

docker stop <容器ID或容器名称>

docker rm <容器ID或容器名称>


自定义构建容器的做法--------------------------------------------


FROM registry.baidubce.com/paddlepaddle/paddle:2.6.1

RUN pip3 install --no-cache-dir --upgrade pip -i https://pypi.doubanio.com/simple
RUN pip3 install --no-cache-dir paddlehub --upgrade -i https://pypi.doubanio.com/simple
RUN git clone https://gitee.com/PaddlePaddle/PaddleOCR.git /PaddleOCR
WORKDIR /PaddleOCR
RUN pip3 install --no-cache-dir -r requirements.txt -i https://pypi.doubanio.com/simple
RUN mkdir -p /PaddleOCR/inference/
# 下载并解压 OCR 文本检测模型
ADD https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_infer.tar /PaddleOCR/inference/
# 下载并解压 OCR 文本方向分类模型
ADD https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar /PaddleOCR/inference/
# 下载并解压 OCR 文本识别模型
ADD https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_rec_infer.tar /PaddleOCR/inference/
RUN tar xf /PaddleOCR/inference/ch_PP-OCRv4_det_infer.tar -C /PaddleOCR/inference/
RUN tar xf /PaddleOCR/inference/ch_ppocr_mobile_v2.0_cls_infer.tar -C /PaddleOCR/inference/
RUN tar xf /PaddleOCR/inference/ch_PP-OCRv4_rec_infer.tar -C /PaddleOCR/inference/
RUN pip3 uninstall -y astroid
RUN pip3 install astroid==2.12.2 --upgrade pip -i https://pypi.doubanio.com/simple
RUN pip3 uninstall protobuf
RUN pip3 install protobuf==3.20.0 --upgrade pip -i https://pypi.doubanio.com/simple
# 安装ocr\_system服务
RUN hub install deploy/hubserving/ocr_system/

# 安装表格识别,下载基于SLANet的中文表格识别模型,如果只需要文本提取,则可以不安装该服务,删掉这一块即可
ADD https://paddleocr.bj.bcebos.com/ppstructure/models/slanet/en_ppstructure_mobile_v2.0_SLANet_infer.tar /PaddleOCR/inference/
ADD https://paddleocr.bj.bcebos.com/ppstructure/models/slanet/ch_ppstructure_mobile_v2.0_SLANet_infer.tar /PaddleOCR/inference/
RUN tar xf /PaddleOCR/inference/en_ppstructure_mobile_v2.0_SLANet_infer.tar -C /PaddleOCR/inference/
RUN tar xf /PaddleOCR/inference/ch_ppstructure_mobile_v2.0_SLANet_infer.tar -C /PaddleOCR/inference/
#安装structure\_table服务
RUN hub install deploy/hubserving/structure_table/

#COPY ./py_app /PaddleOCR/py_app
#RUN pip install gunicorn -i https://mirror.baidu.com/pypi/simple
#RUN pip install flask -i https://mirror.baidu.com/pypi/simple

EXPOSE 5100
CMD ["/bin/bash","-c","hub serving start -m ocr\_system structure\_table"]
#CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5100", "app:app"]