Kaynağa Gözat

update deploy

Zhang Li 2 yıl önce
ebeveyn
işleme
ba1379d331
7 değiştirilmiş dosya ile 128 ekleme ve 13 silme
  1. 2 4
      Dockerfile
  2. 1 1
      Makefile
  3. 2 3
      core/ocr.py
  4. 0 1
      core/parser.py
  5. 119 0
      cpu.Dockerfile
  6. 1 2
      environment.yml
  7. 3 2
      main.py

+ 2 - 4
Dockerfile

@@ -1,7 +1,4 @@
-#FROM nvidia/cuda:10.2-runtime-ubuntu18.04 AS builder
-#FROM nvidia/cuda:11.2.0-cudnn8-devel-ubuntu18.04 AS builder
-#FROM nvidia/cuda:11.0-cudnn8-devel-ubuntu18.04 AS builder
-FROM ubuntu:18.04 AS builder
+FROM nvidia/cuda:11.0-cudnn8-devel-ubuntu18.04 AS builder
 
 
 RUN sed -i 's#archive.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list  \
 RUN sed -i 's#archive.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list  \
     && sed -i 's#security.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list
     && sed -i 's#security.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list
@@ -80,6 +77,7 @@ FROM builder2 as builder3
 
 
 WORKDIR /workspace
 WORKDIR /workspace
 ADD environment.yml /environment.yml
 ADD environment.yml /environment.yml
+RUN sed -i 's#- paddlepaddle#- paddlepaddle-gpu==2.3.0.post110#g' /environment.yml && cat /environment.yml
 RUN mamba update -n base -c defaults conda -y && mamba env create -f /environment.yml && rm -rf /root/.cache
 RUN mamba update -n base -c defaults conda -y && mamba env create -f /environment.yml && rm -rf /root/.cache
 
 
 
 

+ 1 - 1
Makefile

@@ -13,5 +13,5 @@ gpu:
 	@docker push registry.cn-hangzhou.aliyuncs.com/sxtest/$(NAME):gpu
 	@docker push registry.cn-hangzhou.aliyuncs.com/sxtest/$(NAME):gpu
 
 
 cpu:
 cpu:
-	@docker build -t registry.cn-hangzhou.aliyuncs.com/sxtest/$(NAME):cpu --build-arg VERSION=cpu .
+	@docker build -f cpu.Dockerfile -t registry.cn-hangzhou.aliyuncs.com/sxtest/$(NAME):cpu --build-arg VERSION=cpu .
 	@docker push registry.cn-hangzhou.aliyuncs.com/sxtest/$(NAME):cpu
 	@docker push registry.cn-hangzhou.aliyuncs.com/sxtest/$(NAME):cpu

+ 2 - 3
core/ocr.py

@@ -1,5 +1,5 @@
 from dataclasses import dataclass
 from dataclasses import dataclass
-from core.idcrad import *
+from core.parser import *
 from core.direction import *
 from core.direction import *
 import numpy as np
 import numpy as np
 from paddleocr import PaddleOCR
 from paddleocr import PaddleOCR
@@ -20,7 +20,7 @@ class IdCardOcr:
             parser = BackParser(txts, confs)
             parser = BackParser(txts, confs)
         return self._post_process(angle, parser, self.image_type)
         return self._post_process(angle, parser, self.image_type)
 
 
-    def _pre_process(self):
+    def _pre_process(self) -> (np.ndarray, int):
         image = self.image
         image = self.image
         angle = detect_angle(image)
         angle = detect_angle(image)
         print(angle)  # 逆时针
         print(angle)  # 逆时针
@@ -48,7 +48,6 @@ class IdCardOcr:
         print("......................................")
         print("......................................")
         return txts, confs
         return txts, confs
 
 
-
     def _post_process(self, angle: int, parser: Parser, image_type: str):
     def _post_process(self, angle: int, parser: Parser, image_type: str):
         content = parser.parse()
         content = parser.parse()
         conf = parser.confidence
         conf = parser.confidence

+ 0 - 1
core/idcrad.py → core/parser.py

@@ -215,7 +215,6 @@ class FrontParser(Parser):
         self.card_no()
         self.card_no()
         self.address()
         self.address()
         self.split_addr()
         self.split_addr()
-        # self.predict_name()
         self.birth()
         self.birth()
         self.gender()
         self.gender()
         self.expire_date()
         self.expire_date()

+ 119 - 0
cpu.Dockerfile

@@ -0,0 +1,119 @@
+FROM ubuntu:18.04 AS builder
+
+RUN sed -i 's#archive.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list  \
+    && sed -i 's#security.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list
+
+ENV LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh LC_ALL=zh_CN.UTF-8 DEBIAN_FRONTEND=noninteractive
+
+RUN rm -rf  /etc/apt/sources.list.d/  && apt update
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    supervisor \
+    iputils-ping \
+    wget \
+    zsh \
+    build-essential \
+    cmake \
+    git \
+    curl \
+    vim \
+    ca-certificates \
+    libjpeg-dev \
+    zip \
+    unzip \
+    libpng-dev \
+    openssh-server \
+    autojump \
+    language-pack-zh-hans \
+    ttf-wqy-zenhei \
+    libgl1-mesa-glx  \
+    libglib2.0-0 \
+    locales &&\
+    rm -rf /var/lib/apt/lists/*
+
+
+RUN locale-gen zh_CN.UTF-8
+RUN dpkg-reconfigure locales
+
+
+CMD ["supervisord", "-n"]
+
+FROM builder as builder1
+
+ENV PYTHON_VERSION 3
+RUN chsh -s `which zsh`
+RUN curl -o ~/miniconda.sh -O  https://repo.anaconda.com/miniconda/Miniconda${PYTHON_VERSION}-latest-Linux-x86_64.sh  && \
+    chmod +x ~/miniconda.sh && \
+    ~/miniconda.sh -b -p /opt/conda && \
+    rm ~/miniconda.sh
+
+RUN ln /opt/conda/bin/conda /usr/local/bin/conda
+RUN conda init zsh
+RUN conda install mamba -n base -c conda-forge
+RUN ln /opt/conda/bin/mamba /usr/local/bin/mamba && mamba init zsh
+
+
+FROM builder1 as builder2
+
+RUN apt-get update && apt-get install -y --no-install-recommends openssh-server && rm -rf /var/lib/apt/lists/*
+RUN mkdir /var/run/sshd
+RUN echo 'root:root' | chpasswd
+RUN sed -i 's/.*PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config
+# SSH login fix. Otherwise user is kicked off after login
+RUN sed -i 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' /etc/pam.d/sshd
+
+RUN echo "\
+[program:sshd] \n\
+command=/usr/sbin/sshd -D\n\
+autorestart=True\n\
+autostart=True\n\
+redirect_stderr = true\n\
+" > /etc/supervisor/conf.d/sshd.conf
+
+EXPOSE 22
+
+
+FROM builder2 as builder3
+
+WORKDIR /workspace
+ADD environment.yml /environment.yml
+RUN mamba update -n base -c defaults conda -y && mamba env create -f /environment.yml && rm -rf /root/.cache
+
+
+# RUN /opt/conda/envs/py38/bin/python -m ipykernel install --name py38 --display-name "py38"
+# RUN echo "c.MultiKernelManager.default_kernel_name = 'py38'">>/root/.jupyter/jupyter_notebook_config.py
+RUN echo "\
+[program:be]\n\
+directory=/workspace\n\
+command=/opt/conda/envs/py38/bin/python server.py --host 0.0.0.0 --port 8080 \n\
+autorestart=true\n\
+startretries=0\n\
+redirect_stderr=true\n\
+stdout_logfile=/var/log/be.log\n\
+stdout_logfile_maxbytes=0\n\
+" > /etc/supervisor/conf.d/be.conf
+
+ARG VERSION
+ENV USE_CUDA $VERSION
+
+Add . /workspace
+EXPOSE 8080
+
+
+# RUN mamba install -y jupyterlab -n base && mamba init zsh
+# RUN /opt/conda/bin/jupyter notebook --generate-config && \
+#     echo "c.NotebookApp.password='argon2:\$argon2id\$v=19\$m=10240,t=10,p=8\$+zIUCF9Uk2FiCHlV8njX5A\$I5Mm/64DORArcXYTXWRVng'">>/root/.jupyter/jupyter_notebook_config.py
+
+
+# RUN mkdir -p /data && echo "\
+# [program:jupyter]\n\
+# directory=/data\n\
+# command=/opt/conda/bin/jupyter lab --ip 0.0.0.0 --port 8888 --allow-root --no-browser \n\
+# autorestart=true\n\
+# startretries=0\n\
+# redirect_stderr=true\n\
+# stdout_logfile=/dev/stdout\n\
+# stdout_logfile_maxbytes=0\n\
+# " > /etc/supervisor/conf.d/jupyter.conf
+
+# EXPOSE 8888

+ 1 - 2
environment.yml

@@ -21,7 +21,6 @@ dependencies:
       - requests
       - requests
       - cpca
       - cpca
       - -i https://mirror.baidu.com/pypi/simple
       - -i https://mirror.baidu.com/pypi/simple
-      - paddlepaddle
-#      - paddlepaddle-gpu==2.3.0.post110
+      - paddlepaddle  # gpu==2.3.0.post110
       - -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
       - -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
 prefix: /opt/conda/envs/py38
 prefix: /opt/conda/envs/py38

+ 3 - 2
main.py

@@ -1,6 +1,6 @@
 import cv2
 import cv2
 from paddleocr import PaddleOCR
 from paddleocr import PaddleOCR
-from core.idcrad import FrontParser
+from core.parser import FrontParser
 from core.direction import *
 from core.direction import *
 from core.ocr import IdCardOcr
 from core.ocr import IdCardOcr
 import requests
 import requests
@@ -15,7 +15,8 @@ def send_request():
 
 
 # 初始化ocr模型和后处理模型
 # 初始化ocr模型和后处理模型
 ocr = PaddleOCR(use_angle_cls=True, rec_model_dir="./idcard_rec_infer/",
 ocr = PaddleOCR(use_angle_cls=True, rec_model_dir="./idcard_rec_infer/",
-                det_model_dir="./idcard_det_infer/", cls_model_dir="idcard_cls_infer",
+                det_model_dir="./idcard_det_infer/",
+                cls_model_dir="idcard_cls_infer",
                 rec_algorithm='CRNN',
                 rec_algorithm='CRNN',
                 ocr_version='PP-OCRv2',
                 ocr_version='PP-OCRv2',
                 rec_char_dict_path="./ppocr_keys_v1.txt", lang="ch", use_gpu=False)
                 rec_char_dict_path="./ppocr_keys_v1.txt", lang="ch", use_gpu=False)