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 定义的,如果模型的路径不对,需要手动修改。
-
编译镜像:
docker build -t ocr_test -f dockerfile .
-
运行容器:
docker run -d --name paddleocr_hubserving_container -p 8866:8866 ocr_test
-
客户端测试:服务启动后,可以通过访问
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
快速部署基于 PaddleOCR
的 OCR API
服务,包括构建镜像、运行容器及进行客户端测试的完整步骤。
提供的 dockerfile
可以直接使用,处理了 protobuf
版本错误,以及 params.py
中模型路径匹配。
相关文章:

dockerfile: PaddleOCR hubserving api 服务
前言 目前 OCR 有比较成熟的方案,想着直接通过 docker 部署一个提供 api 接口服务,查看了一些开源方案,最终发现还是 PaddleOCR 比较好用。 本篇不介绍 PaddleOCR 的详细使用方式,只介绍一下构建镜像的 dockerfile 需要注意的事…...
【速写】TRL:Trainer的细节与思考(PPO/DPO+LoRA可行性)
序言 问题缘起来自发现PPOTrainer里并没有跟SFTTrainer类似的peft_config参数,而SFTTrainer在带和不带peft_config参数的情况下分别对应高效微调和全量微调。自然就会想到是否可以把PPO和PEFT结合,但是目前peft包和trl包上似乎还是存在这种兼容性的问题…...

Vue3+uniapp 封装axios
1.第一步在项目根目录新建utils文件夹,里边新建两个文件request.js和uni-api-promisify.js 2.request.js 代码 要安装axios import axios from axios import { showToast } from /utils/uni-api-promisify// 创建axios实例 const service axios.create({baseURL:…...

QEMU模拟32位ARM实现自定义系统调用
实现自定义系统调用 如何使用 QEMU 模拟32位 ARM 环境参考:使用Qemu模拟32位ARM系统 修改linux内核源码 使用 linux-4.4.240 源码,下载链接:下载链接 在 arch\arm\include\uapi\asm\unistd.h 文件下新增系统调用 sys_test: /…...

MySQL——数据类型表的约束
目录 数据类型 数值类型 tinyint类型 bit类型 float类型 decimal类型 字符类型 char类型 varchar类型 日期和时间类型 选择类型 表的约束 null default comment zerofill primary key auto_increment unique key foreign key 数据类型 在MySQL中的数据类…...

# YOLOv2:目标检测的升级之作
YOLOv2:目标检测的升级之作 在目标检测领域,YOLO(You Only Look Once)系列算法以其高效的速度和创新的检测方式受到了广泛关注。今天,我们就来深入探讨一下 YOLOv2,看看它是如何在继承 YOLOv1 的基础上进行…...

【爬虫】DrissionPage-1
官网地址:DrissionPage官网 小需求采集,我喜欢,我要学。 1 介绍 这是用python编写的爬虫自动化工具,将Selenium 和 Requests 的功能巧妙地整合在一起,提供了统一又简单的操作接口。开发者可以在浏览器模式࿰…...

Oracle OCP认证考试考点详解083系列15
题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 71. 第71题: 题目 解析及答案: 关于在 Oracle 18c 及更高版本中基于 Oracle 黄金镜像的安装,以下哪…...
java刷题基础知识
List<int[]> merged new ArrayList<int[]>(); return merged.toArray(new int[merged.size()][]); 表示一个存储 int[] 类型元素的列表,list灵活支持扩展,因为不知道最后有几个区间,所以用list,最后toArray返回成数组…...

部署大模型:解决ollama.service: Failed with result ‘exit-code‘的问题
起因是这样: Loaded: loaded (/etc/systemd/system/ollama.service; disabled; preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Tue 2025-05-13 19:31:19 CST; > Process: 12272 ExecStart/usr/bin/ollama serve (codeexited, status1/FAI…...
阿克曼-幻宇机器人系列教程2- 机器人交互实践(Topic)
在上一篇文章中,我们介绍了两种登录机器人的方式,接下来我们介绍登录机器人之后,我们如何通过topic操作命令实现与机器人的交互。 1. 启动 & 获取topic 在一个终端登录树莓派后,执行下列命令运行机器人 roslaunch huanyu_r…...

Spring AI 开发本地deepseek对话快速上手笔记
Spring AI Spring AI是一个旨在推进生成式人工智能应用程序发展的项目,Spring AI的核心目标是提供高度抽象化的组件,作为开发AI应用程序的基础,使得开发者能够以最少的代码改动便捷地交换和优化功能模块 在开发之前先得引入大模型…...

SpringBoot中的拦截器
SpringBoot中的拦截器 Filter 典型场景 全局鉴权/接口耗时统计 WebFilter("/*") public class CostFilter implements Filter {Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {long start System.currentTimeMill…...
Spark,IDEA编写Maven项目
以下是在IDEA中使用Maven构建Spark项目的步骤: 一、环境准备 1. 安装JDK - 确保IDEA配置了JDK 8(推荐11)。 2. 安装Maven - 配置Maven环境变量,IDEA中设置Maven路径( File > Settings > Build > Maven &#…...

半小时快速入门Spring AI:使用腾讯云编程助手CodeBuddy 开发简易聊天程序
引言 随着人工智能(AI)技术的飞速发展,越来越多的开发者开始探索如何将AI集成到自己的应用中。人工智能正在迅速改变各行各业的工作方式,从自动化客服到智能推荐系统,AI的应用几乎无处不在。Spring AI作为一种开源框架…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.3 风险指标可视化监控
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 PostgreSQL金融风控分析之风险指标可视化监控实战一、引言二、案例背景三、数据准备(一)数据来源与字段说明(二)数据清洗 四、…...
数学复习笔记 6
前言 复习一下行列式的一些基本的题。感觉网课有点没跟上了。今天花点时间跟上网课的进度。要紧跟进度,然后剩下的时间再去复习前面的内容。多复习,提升自己的解题能力。 行列式和矩阵 三年级,我现在是三年级下册。。。马上就要结束大学的…...
微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
在上一篇中,我们理解了微服务架构的核心理念以及Spring Cloud为我们提供的强大工具集。我们提到,微服务架构的一个核心挑战在于,服务实例的网络位置是动态的,服务之间需要一种机制来互相定位。 想象一下,你开了一家新…...

geoserver发布arcgis瓦片地图服务(最新版本)
第一步:下载geoserver服务,进入bin目录启动 需要提前安装好JDK环境,1.8及以上版本 安装完成,页面访问端口,进入控制台界面,默认用户名密码admin/geoserver 第二步:下载地图 破解版全能电子地图下载器&…...

多边形,矩形,长方体设置
在cesium中,我们可以通过既有的库来进行对地图的构建 // 向场景中添加一个几何体(立方体) scene.primitives.add(new Cesium.Primitive({// 定义几何体实例geometryInstances: new Cesium.GeometryInstance({// 使用BoxGeometry.fromDimensions方法创建…...
Spring Boot 框架概述
1. 简介 Spring Boot 是由 Pivotal 团队开发的一个用于简化 Spring 应用开发的框架。它通过提供默认配置、嵌入式服务器和自动配置等特性,让开发者能够更快速地构建独立的、生产级别的 Spring 应用。 Spring Boot 的主要特点包括: 快速创建独立的 Spri…...

(C语言)超市管理系统(测试版)(指针)(数据结构)(二进制文件读写)
目录 前言: 源代码: product.h product.c fileio.h fileio.c main.c 代码解析: fileio模块(文件(二进制)) 写文件(保存) 函数功能 代码逐行解析 关键知识点 读文…...
React百日学习计划-Grok3
关键点 研究表明,100天内学习React是可行的,尤其是你已有HTML、JS和CSS基础。该计划包括基础知识、hooks、状态管理、路由、样式化及综合项目,适合初学者。建议每天花2-3小时学习,结合免费教程和社区支持。 开始学习 学习React…...
一文辨析Java基本数据类型与包装类
Java 基本数据类型与包装类深度解析 前言一、Java 基本数据类型详解1.1 数值型1.1.1 整型1.1.2 浮点型 1.2 字符型1.3 布尔型 二、Java 包装类详解2.1 包装类与基本数据类型的对应关系2.2 包装类的常用方法 三、基本数据类型与包装类的转换3.1 装箱(Boxingÿ…...
Java游戏服务器开发流水账(3)游戏数据的缓存简介
简介 游戏服务器数据缓存是一种在游戏服务器运行过程中,用于临时存储经常访问的数据的技术手段,旨在提高游戏性能、降低数据库负载以及优化玩家体验。游戏开发中数据的缓存可以使用Java自身的内存也可以使用MemCache,Redis,注意M…...
SiLM59xx系列:高可靠性隔离驱动架构在新能源与工业电源中的关键设计解析
SiLM59xx系列产品选型: SiLM5932SHOCG-DG SiLM5992SHCG-DG SiLM5991SHCG-DG SiLM5932SHOCG-AQ SiLM5992SHCG-AQ SiLM5991SHCG-AQ 一、高功率密度驱动的核心挑战与解决方案 高压场景下的驱动需求 在新能源汽车主逆变器、光伏逆变器及工业电机控制…...

nRF Connect 下载
官方下载路径 点击,或往下拉 选对应的版本 下载成功,数字代表版本好...

基于Arduino的贪吃蛇游戏机
3D 打印迷你贪吃蛇游戏机: 在数字娱乐高度发达的今天,我们常常怀念那些经典的复古游戏。其中,贪吃蛇游戏无疑是许多人童年的记忆。今天,我将带你走进一个有趣的 DIY 项目——3D 打印迷你贪吃蛇游戏机。这个项目不仅能够让你重温经…...
talk-linux 不同用户之间终端通信
好的!下面是一个完整的指南和脚本,用于在两台 Linux 主机上配置并使用 talk 聊天功能(假设它们在同一个局域网内)。 ⸻ 🧾 一、需求说明 我们需要在两台主机上: 1. 安装 talk 和 talkd 2. 启用 talkd 服…...

【PmHub后端篇】Redis分布式锁:保障PmHub流程状态更新的关键
在分布式系统中,确保数据一致性和操作的正确执行是至关重要的。PmHub项目中,通过集成Redis分布式锁来保障流程状态更新,这是一个非常关键的技术点,以下将详细介绍其原理、实现。 1 本地锁的问题 1.1 常见的本地锁 在Java中&…...