# PaddleOCR **Repository Path**: zy18779496/paddle-ocr ## Basic Information - **Project Name**: PaddleOCR - **Description**: docker打包构建paddocr镜像环境 - **Primary Language**: Docker - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-06-03 - **Last Updated**: 2024-06-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PaddleOCR #### 介绍 最近用到百度飞桨的 PaddleOCR,研究了一下PaddleOCR的服务化部署,网上一堆部署可是实际操作都是一群坑,自己配置项目使用docker构建成镜像并部署 #### 基础环境 1. jenkins 2. docker 3. paddlepaddle 2.6.1 4. paddlehub 最新版本 5. PaddleOCR 6. pip ### 项目结构 ![输入图片说明](image.png) ### 配置PaddleOCR识别模型 在PaddleOCR下创建inference,并将自己需要使用的模型解压后放在inference文件夹里面,如下图: ![输入图片说明](1.png) 服务配置: 文本检测+文本方向分类+文本识别3阶段串联服务(ocr_system)配置文件PaddleOCR/deploy/hubserving/ocr_system/params.py,包含模型路径和相关参数,这里如果使用默认的则无需修改,如果更换模型需要对应修改配置文件。(注:这里已ocr_system为例,如需使用表格识别服务(structure_table)或其他服务,请自行修改配置文件) ![输入图片说明](2.png) ### PaddleOCR运行环境 PaddleOCR 依赖飞桨环境运行,所以需要先安装paddlepaddle环境,默认 docker 安装paddlepaddle2.6.1,下面是PaddleOCR 运行环境安装: 1. 安装paddlehub 这里使用命令下载安装最新的paddlehub: `pip3 install paddlehub --upgrade -i https://mirror.baidu.com/pypi/simple` 2. 安装PaddleOCR PaddleOCR已经下载好并配置好模型了,直接复制到容器环境就可以,这里直接下载PaddleOCR所需的依赖包 `pip3 install -r requirements.txt -i https://mirror.baidu.com/pypi/simple` 3. 安装hubserving服务 安装ocr_system服务,PaddleOCR最新的安装ocr_system服务时会出现protobuf版本过高的错误,先解决报错在安装ocr_system ``` pip uninstall protobuf -y #卸载protobuf pip install protobuf==3.20.2 -i https://mirror.baidu.com/pypi/simple #安装protobuf3.20.2版本 ``` 下面在安装ocr_system服务 ``` hub install deploy/hubserving/ocr_system ``` 这里是已ocr_system服务安装的示例,如需安装其他服务也是一样的 4.启动ocr_system ``` hub serving start -m ocr_system -p 8866 ``` 这是大致的PaddleOCR运行环境构建步骤,下面整合到Dockerfile来进行构建 ### 示例Dockerfile ``` FROM paddlepaddle/paddle:2.6.1 #下载paddlepaddle环境已2.6.1为主 WORKDIR /PaddleOCR #设置工作区间 COPY PaddleOCR /PaddleOCR/ #将本地配置好的PaddleOCR复制到容器里 RUN cd /PaddleOCR && pip3 install paddlehub --upgrade -i https://mirror.baidu.com/pypi/simple #下载paddlehub RUN cd /PaddleOCR && pip3 install -r requirements.txt -i https://mirror.baidu.com/pypi/simple #下载PaddleOCR依赖包 RUN pip uninstall protobuf -y #卸载protobuf RUN pip install protobuf==3.20.2 -i https://mirror.baidu.com/pypi/simple #安装protobuf 3.20.2 RUN cd /PaddleOCR && hub install deploy/hubserving/ocr_system #安装ocr_system 服务 EXPOSE 8866 #设置端口 CMD ["/bin/bash","-c","hub serving start -m ocr_system -p 8866"] #设置容器启动时并启动ocr_system服务 ``` 1. 使用docker命令打包成镜像 ``` docker build -t paddleocr:latest . ``` 第一次下载paddlepaddle镜像会有点慢,因为paddlepaddle有点大有4个多G,等打包完成,使用docker images命令查看镜像 ![输入图片说明](3.png) 2. 启动容器 直接docker命令启动 ``` docker run --name paddleocr -p 8866:8866 paddleocr:latest ``` 出现如下图就代表成功了: ![输入图片说明](4.png) 3. Postman测试 | 接口说明 | | |--------------|------------------------------------------| | ocr_system | http://127.0.0.1:8866/predict/ocr_system | | 请求类型 | post | | Content-Type | application/json | | 参数格式 | {"images":["图片 base64串"]} | 下面使用postman测试接口是否启动成功 ![输入图片说明](5.png) 以上就是完整的PaddleOcr部署启动详细,这里的PaddleOcr模型我已经配置好,可以直接将项目打包成docker镜像启动,如需要配置其他模型或安装其他服务请自行修改PaddleOCR和Dockerfile配置