当前位置: 首页 > news >正文

dockerfile: PaddleOCR hubserving api 服务

前言

目前 OCR 有比较成熟的方案,想着直接通过 docker 部署一个提供 api 接口服务,查看了一些开源方案,最终发现还是 PaddleOCR 比较好用。

本篇不介绍 PaddleOCR 的详细使用方式,只介绍一下构建镜像的 dockerfile 需要注意的事项。

docker 镜像构建

目录结构

- inference_models (下载好的模型放这里,可以直接在 dockerfile 中下载)
- PaddleOCR (git仓库,可以直接在 dockerfile 中克隆)
- dockerfile

dockerfile 内容如下,网络环境需要自己整一下,可直接食用:

# 使用 paddlepaddle/paddle:3.0.0 镜像作为基础镜像
FROM paddlepaddle/paddle:3.0.0# 设置工作目录
WORKDIR /app# 安装 paddlehub
RUN pip3 install paddlehub --upgrade# 安装兼容版本的 protobuf
RUN pip3 install protobuf==3.20.0# 克隆 PaddleOCR 仓库
RUN git clone https://github.com/PaddlePaddle/PaddleOCR.git
# COPY ./PaddleOCR ./PaddleOCRWORKDIR /app/PaddleOCR# 下载并解压 OCR 文本检测、文本识别、文本方向分类模型
RUN mkdir -p inference && \wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar && \tar -xf ch_PP-OCRv3_det_infer.tar -C inference && \# 由于 git 仓库中的名称不同,改一下mv ./inference/ch_PP-OCRv3_det_infer ./inference/PP-OCRv3_mobile_det_infer && \wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar && \tar -xf ch_PP-OCRv3_rec_infer.tar -C inference && \wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar && \tar -xf ch_ppocr_mobile_v2.0_cls_infer.tar -C inference
# COPY ./inference_models /app/PaddleOCR/inference# 安装 PaddleOCR 的 Python 依赖
RUN pip3 install -r requirements.txt# 安装 hub 模块
RUN hub install deploy/hubserving/ocr_system# 暴露端口
EXPOSE 8866# 启动服务的命令
CMD ["hub", "serving", "start", "--modules", "ocr_system", "-p", "8866"]

注意:使用 ocr_system 服务,使用的模型是在这里 PaddleOCR/deploy/hubserving/ocr_system/params.py 定义的,如果模型的路径不对,需要手动修改。

在这里插入图片描述

  1. 编译镜像:docker build -t ocr_test -f dockerfile .

  2. 运行容器:docker run -d --name paddleocr_hubserving_container -p 8866:8866 ocr_test

  3. 客户端测试:服务启动后,可以通过访问 http://127.0.0.1:8866/predict/ocr_system 来测试 OCR 识别服务。

curl -X POST \http://127.0.0.1:8866/predict/ocr_system \-H "Content-Type: application/json" \-d '{"images": ["/9j/4AAQSkZJRgABAQ..."]}'

注意:这里的 images 中放的是图片的 base64 字符串,是不需要带 data:image/jpeg;base64, 这种头的。

总结

本篇介绍了如何使用 docker 快速部署基于 PaddleOCROCR API 服务,包括构建镜像、运行容器及进行客户端测试的完整步骤。

提供的 dockerfile 可以直接使用,处理了 protobuf 版本错误,以及 params.py 中模型路径匹配。

相关文章:

  • 物联网驱动的共享充电站系统:智能充电的实现原理与技术解析!
  • 【NextPilot日志移植】日志写入流程
  • 智能SQL优化工具集成:从概念到实践
  • 二进制中1的个数
  • JWT的介绍与在Fastapi框架中的应用
  • OpenCV 的 CUDA 模块中用于将一个多通道 GpuMat 图像拆分成多个单通道图像的函数split()
  • OSI 7层模型
  • cURL:通过URL传输数据的命令行工具库介绍
  • 51单片机引脚功能概述
  • QT5.14安装以及新建基础项目
  • 保持Word中插入图片的清晰度
  • Linux文件编程——read函数与lseek函数
  • 关于读写锁的一些理解
  • 使用 Comparator 和 Comparable 对集合排序:如何轻松排序 Java 集合?
  • Edge Remover v18.7 绿色版:轻松卸载 Edge 浏览器,彻底清理残留数据
  • Electron学习大纲
  • linux-进程信号的产生
  • 可编辑PPT | 企业数字底座:数据中台构建路径、方法和实践数据中台架构解决方案
  • 解锁遥感数据密码:DeepSeek、Python 与 OpenCV 的协同之力
  • Python教程(四)参数提取pymysql
  • 回望乡土:对媒介化社会的反思
  • A股高开高走:沪指涨0.82%,创指涨2.63%,超4100股收涨
  • 今起公开发售,宁德时代将于5月20日在港股上市
  • 署名文章:从宏观调控看中国经济基本面
  • 我国成功发射遥感四十号02组卫星
  • 种罂粟喂鸡防病?四川广元一村民非法种植毒品原植物被罚​