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

Paddle Serving|部署一个自己的OCR识别服务器

前言

  之前使用C++部署了自己的OCR识别服务器,Socket网络传输部分是自己写的,回过头来一看,自己犯傻了,PaddleOCR本来就有自己的OCR服务器项目,叫PaddleServing,这里记录一下部署过程。

1 下载依赖环境

1.1 下载python

官网要求是python3.6之上就行,我这里下载python3.8。

conda create -n pdsrv python=3.8

注:这里用不用conda都可以,我这里是习惯用conda,只要有python环境就行.
下载完成之后,加到环境变量里面去,并且优先级设置成最高:
在这里插入图片描述

1.2 下载wget和git(可选)

  • wget下载网址为:wget下载

下载解压(安装)完成后,同样将其添加到系统变量中,如步骤1.1的图最后一行所示,我已经添加上去了,优先级无所谓。
wget验证: 打开powershell直接打wget,访问成功即可,如图所示:
在这里插入图片描述

  • git下载网址为:git下载
    git的使用就不赘述,有手就行。

如果选择了步骤1.2,下载git和wget,则需要下载模型和项目,使用以下命令下载:

# 使用git下载PaddleServing项目
git clone https://github.com/paddlepaddle/Serving
# 使用wget下载模型
cd Serving/examples/C++/PaddleOCR/ocr/
python -m paddle_serving_app.package --get_model ocr_rec
tar -xzvf ocr_rec.tar.gz
python -m paddle_serving_app.package --get_model ocr_det
tar -xzvf ocr_det.tar.gz

1.3 下载PaddleServing依赖

# CPU用户下载命令
python -m pip install -U paddle_serving_server paddle_serving_client paddle_serving_app paddlepaddle`
# GPU用户下载命令
python -m pip install -U paddle_serving_server_gpu paddle_serving_client paddle_serving_app paddlepaddle-gpu
# 下载其依赖
cd Serving
pip install -r python/requirements_win.txt

之所以说步骤1.2是可选,是因为我上传了源码(需要使用git下载的部分)和模型(需要使用wget下载的部分),惊不惊喜,意不意外!!!

2 运行OCR识别服务器

2.1 启动OCR识别服务器:

# 启动服务器
python ocr_debugger_server.py cpu/gpu

启动界面大概是这样的:
在这里插入图片描述

2.2 启动OCR客户端:

python ocr_web_client.py

可以看到结果与imgs路径下的图片对比:

在这里插入图片描述
在这里插入图片描述
如果不想使用这个脚本,也可以使用我写的python脚本测试:

import requests
import json
import base64def cv2_to_base64(image):"""将图片转换为Base64编码"""return base64.b64encode(image).decode('utf8')def ocr_prediction(image_path):"""接受图片文件的绝对路径,发送OCR请求并返回结果"""# 设置请求头和URLheaders = {"Content-type": "application/json"}url = "http://127.0.0.1:9292/ocr/prediction"# 打开图片文件并进行Base64编码with open(image_path, 'rb') as file:image_data = file.read()image_base64 = cv2_to_base64(image_data)# 构造请求数据data = {"feed": [{"x": image_base64}], "fetch": ["res"]}print(type(data))data2 = json.dumps(data)print(type(data2))print(data2)# 发送POST请求try:r = requests.post(url=url, headers=headers, data=data2)r.raise_for_status()  # 如果请求失败,抛出异常return r.json()  # 返回OCR结果except requests.exceptions.RequestException as e:print(f"请求失败: {e}")return None# 这里替换为你的图片文件绝对路径
image_path = "xxx/imgs/bbb.jpg"  
result = ocr_prediction(image_path)
if result:print(result)

总结

本文主要简要记录了PaddleServing项目的部署过程,旨在帮助读者快速了解如何搭建和配置PaddleServing服务。PaddleServing是一个基于PaddlePaddle的高效推理服务框架,能够帮助用户便捷地将训练好的模型部署为可供实时预测的服务。本文将详细介绍部署过程的步骤,包括环境配置、服务启动、模型加载以及API调用等方面的内容。

相关文章:

Paddle Serving|部署一个自己的OCR识别服务器

前言 之前使用C部署了自己的OCR识别服务器,Socket网络传输部分是自己写的,回过头来一看,自己犯傻了,PaddleOCR本来就有自己的OCR服务器项目,叫PaddleServing,这里记录一下部署过程。 1 下载依赖环境 1.1 …...

Web开发—Vue工程化

文章目录 前言 Vue工程化 一、介绍 二、环境准备 1.介绍create-vue 2.NodeJS安装 3.npm介绍 三,Vue项目创建 四,项目结构 五,启动项目 六,Vue项目开发流程 七,API风格 前言 Vue工程化 前面我们在介绍Vue的时候&#…...

Word如何制作三线表格

1.需求 将像这样的表格整理成论文中需要的三线表格。 2.直观流程 选中表格 --> 表格属性中的边框与底纹B --> 在设置中选择无(重置表格)–> 确定 --> 选择第一行(其实是将第一行看成独立表格了,为了设置中线&…...

毫米波雷达点云SLAM系统

毫米波雷达点云SLAM系统 基于毫米波雷达点云数据的三维SLAM(同步定位与建图)系统,用于狭窄环境如室内和地下隧道的三维建图。 项目概述 本项目实现了一个完整的SLAM系统,利用毫米波雷达采集的点云数据进行实时定位和环境三维重建。系统特别针对狭窄空…...

5 从众效应

引言 有一个成语叫做三人成虎,意思是说,有三个人谎报市上有老虎,听者就信以为真。这种人在社会群体中,容易不加分析地接受大多数人认同的观点或行为的心理倾向,被称为从众效应。 从众效应(Bandwagon Effec…...

【实战教程】零基础搭建DeepSeek大模型聊天系统 - Spring Boot+React完整开发指南

🔥 本文详细讲解如何从零搭建一个完整的DeepSeek AI对话系统,包括Spring Boot后端和React前端,适合AI开发入门者快速上手。即使你是编程萌新,也能轻松搭建自己的AI助手! 📚博主匠心之作,强推专栏…...

用C语言实现的——一个支持完整增删查改功能的二叉排序树BST管理系统,通过控制台实现用户与数据结构的交互操作。

一、知识回顾 二叉排序树(Binary Search Tree,BST),又称二叉查找树或二叉搜索树,是一种特殊的二叉树数据结构。 基本性质: ①有序性 对于树中的每个节点,其左子树中所有节点的值都小于该节点的…...

排队论基础一:马尔可夫排队模型

排队论基础一:马尔可夫排队模型 介绍基本概念状态概率分布平均队列人数与平均排队人数平均停留时间与平均等待时间Little公式(Little Law)生灭过程生灭过程排队系统(马尔可夫排队模型)状态平衡方程介绍 最近写论文需要,学了一下排队过程模型。其实这些内容本科的时候我都…...

论文阅读笔记——ROBOGROUND: Robotic Manipulation with Grounded Vision-Language Priors

RoboGround 论文 一类中间表征是语言指令,但对于空间位置描述过于模糊(“把杯子放桌上”但不知道放桌上哪里);另一类是目标图像或点流,但是开销大;由此 GeoDEX 提出一种兼具二者的掩码。 相比于 GR-1&#…...

系统架构设计(四):架构风格总结

黑板 概念 黑板体系架构是一种用于求解复杂问题的软件架构风格,尤其适合知识密集型、推理驱动、数据不确定性大的场景。 它模拟了人类专家协同解决问题的方式,通过一个共享的“黑板”协同多个模块(专家)逐步构建解决方案。 组…...

『 测试 』测试基础

文章目录 1. 调试与测试的区别2. 开发过程中的需求3. 开发模型3.1 软件的生命周期3.2 瀑布模型3.2.1 瀑布模型的特点/缺点 3.3 螺旋模型3.3.1 螺旋模型的特点/缺点 3.4 增量模型与迭代模型3.5 敏捷模型3.5.1 Scrum模型3.5.2 敏捷模型中的测试 4 测试模型4.1 V模型4.2 W模型(双V…...

robomaster机甲大师--电调电机

文章目录 C620电调ID设置速率 电调发送报文电调接收报文cubemx程序初始化发送接收 C620电调 ID设置 速率 1Mbps 电调发送报文 发送的数据为控制电机的输出电流,需要将can数据帧的ID设置为0x200 电调接收报文 机械角度:电机的0到360度映射到0到几千转…...

汽车诊断简介

历史 20世纪80年代,由于美国西海岸严重的雾霾问题,CARB(加州空气资源委员会)通过了一项法律,要求对机动车辆进行车载监测诊断。这推动了OBD-I的引入,并在1990年代被OBD II取代。与此同时,欧洲也…...

少儿编程机构用的教务系统

在编程教育行业快速发展的今天,培训机构面临着学员管理复杂、课程体系专业性强、教学效果难以量化等独特挑战。爱耕云教务系统针对编程培训机构的特殊需求,提供了一套全方位的数字化解决方案,帮助机构实现高效运营和教学质量提升。 为什么编…...

优化理赔数据同步机制:从4小时延迟降至15分钟

优化理赔数据同步机制:从4小时延迟降至15分钟 1. 分析当前同步瓶颈 首先诊断当前同步延迟原因: -- 检查主从复制状态(在主库执行) SHOW MASTER STATUS; SHOW SLAVE HOSTS;-- 在从库执行检查复制延迟 SHOW SLAVE STATUS\G -- 关…...

面试中常问的设计模式及其简洁定义

🎯 一、面试中常问的设计模式及其简洁定义 模式名常被问到解释(简洁)单例模式✅ 高频保证一个类只有一个实例,并提供全局访问点。工厂模式✅ 高频创建对象的接口由子类决定,屏蔽了对象创建逻辑。抽象工厂模式✅提供多…...

基于VSCode+PlatformIO环境的ESP8266的HX1838红外模块

以下是针对ESP8266开发板的红外遥控解码系统开发教程,基于VSCodePlatformIO环境编写 一、概述 本实验通过ESP8266开发板实现: 红外遥控信号解码自定义按键功能映射串口监控输出基础设备控制(LED) 硬件组成: NodeMC…...

Linux中的防火墙

什么是防火墙 windows防火墙的设置 linux防火墙设置命令 什么是防火墙? 防火墙是一种网络安全设备,它能够: 监控和过滤进出网络的流量 阻止不安全的连接 保护计算机和网络免受未授权访问 创建一个安全边界 简单来说,防火…...

补补表面粗糙度的相关知识(一)

表面粗糙度,或简称粗糙度,是指表面不光滑的特性。这个在机械加工行业内可以说是绝绝的必备知识之一,但往往也是最容易被忽略的,因为往往天天接触的反而不怎么关心,或者没有真正的去认真学习掌握。对于像我一样&#xf…...

力扣刷题Day 46:搜索二维矩阵 II(240)

1.题目描述 2.思路 方法1:分别找到搜索矩阵的右、下边界,然后从[0][0]位置开始遍历这部分矩阵搜索目标值。 方法2:学习Krahets佬的思路,从搜索矩阵的左下角开始遍历,matrix[i][j] > target时消去第i行&#xff0c…...

Kubernetes 集群部署应用

部署 Nginx 应用 命令行的方式 1. 创建 deployment 控制器的 pod # --imagenginx:这个会从 docker.io 中拉取,这个网站拉不下来 # kubectl create deployment mynginx --imagenginx# 使用国内镜像源拉取 kubectl create deployment mynginx --imaged…...

Spark 处理过程转换:算子与行动算子详解

在大数据处理领域,Apache Spark 凭借其强大的分布式计算能力脱颖而出,成为处理海量数据的利器。而 Spark 的核心处理过程,主要通过转换算子和行动算子来实现。本文将深入探讨 Spark 中的转换算子和行动算子,帮助读者更好地理解和应…...

Unity3D仿星露谷物语开发42之粒子系统

1、目标 使用例子系统,实现割草后草掉落的特效。 通过PoolManager获取特效预制体,通过VFXManager来触发特效。 2、配置例子特效 在Hierarchy -> PersistentScene下创建新物体命名为Reaping。 给该物体添加Particle System组件。 配置例子系统参数…...

python 上海新闻爬虫, 东方网 + 澎湃新闻

1. 起因, 目的: 继续做新闻爬虫。我之前写过。此文先记录2个新闻来源。后面打算进行过滤,比如只选出某一个类型新闻。 2. 先看效果 过滤出某种类型的新闻,然后生成 html 页面,而且,自动打开这个页面。 比如科技犯罪…...

[Java实战]Spring Boot 整合 Freemarker (十一)

[Java实战]Spring Boot 整合 Freemarker (十一) 引言 Apache FreeMarker 作为一款高性能的模板引擎,凭借其简洁语法、卓越性能和灵活扩展性,在 Java Web 开发中占据重要地位。结合 Spring Boot 的自动化配置能力,开发者能快速构建动态页面、…...

LeetCode 高频题实战:如何优雅地序列化和反序列化字符串数组?

文章目录 摘要描述题解答案题解代码分析编码方法解码方法 示例测试及结果时间复杂度空间复杂度总结 摘要 在分布式系统中,数据的序列化与反序列化是常见的需求,尤其是在网络传输、数据存储等场景中。LeetCode 第 271 题“字符串的编码与解码”要求我们设…...

为什么拆分高低字节而不直接存入数组

您的代码片段是在将一个16位值()拆分为高字节和低字节:IR_RF_Signal.length temp_low IR_RF_Signal.length & 0xFF; temp_high IR_RF_Signal.length >> 8; 虽然我在 PX4-Autopilot 仓库中没有找到这段确切的代码,…...

python打卡day22@浙大疏锦行

复习日 仔细回顾一下之前21天的内容,没跟上进度的同学补一下进度。 作业: 自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码 一、数据预处理 import pandas as pd import numpy as np import matplo…...

C#游戏开发中的注意事项

目录 一、性能优化:提升游戏运行效率 1. 避免不必要的循环和迭代 2. 减少字符串拼接 3. 利用Unity的生命周期函数 4. 使用对象池(Object Pooling) 二、内存管理:避免内存泄漏和资源浪费 1. 及时释放非托管资源 2. 避免空引用异常 3. 合理使用引用类型和值类型 4. …...

Spring Boot项目(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot前后端分离)

下载地址: 前端:https://download.csdn.net/download/2401_83418369/90811402 后端:https://download.csdn.net/download/2401_83418369/90811405 一、前端vue部分的搭建 这里直接看另一期刊的搭建Vue前端工程部分 前端vue后端ssm项目_v…...