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调用等方面的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/79954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React Native【详解】搭建开发环境,创建项目,启动项目

下载安装 node https://nodejs.cn/download/ 查看 npx 版本 npx -v若无 npx 则安装 npm install -g npx创建项目 npx create-expo-applatestRN_demo 为自定义的项目名称 下载安装 Python 2.7 下载安装 JAVA JDK https://www.oracle.com/java/technologies/downloads/#jdk24-…

NVIDIA Halos:智能汽车革命中的全栈式安全系统

高级辅助驾驶行业正面临一个尴尬的"安全悖论"——传感器数量翻倍的同时,事故率曲线却迟迟不见明显下降。究其原因,当前行业普遍存在三大技术困局: 碎片化安全方案 传统方案就像"打补丁",激光雷达厂商只管点云…

数据资产管理与AI融合:物联网时代的新征程

一、引言 在当今数字化浪潮席卷全球的时代,数据资产已成为企业和组织的核心竞争力之一。随着物联网(IoT)技术的飞速发展,海量的数据如潮水般涌来,如何高效地管理和利用这些数据资产成为了亟待解决的问题。与此同时&am…

MySQL 表的内外连接

文章目录 表的内外连接(重点)内连接外连接左外连接右外连接 表的内外连接(重点) 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使…

VTK 交互类介绍

基本概念 交互器(Interactor): 处理用户输入事件的基础类 交互样式(InteractorStyle): 定义具体的交互行为 Widgets: 可交互的UI组件,如滑块、按钮等 Picker: 用于选择场景中的对象 常用交互类 类名功能描述vtkRenderWindowInteractor渲染窗口交互器vtkInteractorStyle交互样式…

C语言动态库与静态库编译测试示例详细介绍终结篇

C语言动态库与静态库编译链接时的详细对比与示例 下面我将提供更详细的示例,并通过对比表格清晰地展示静态库和动态库的特性差异以及它们之间的各种链接关系。 ## 1. 静态库与动态库特性对比 | 特性 | 静态库(.a/.lib) | 动态…

神经网络:节点、隐藏层与非线性学习

神经网络:节点、隐藏层与非线性学习 摘要: 神经网络是机器学习领域中一种强大的工具,能够通过复杂的结构学习数据中的非线性关系。本文从基础的线性模型出发,逐步深入探讨神经网络中节点和隐藏层的作用,以及它们如何…

POI创建Excel文件

文章目录 1、背景2、创建表格2.1 定义表头对象2.2 Excel生成器2.3 创建模板2.4 处理Excel表头2.5 处理Excel内容单元格样式2.6 处理单个表头 3、追加sheet4、静态工具5、单元测试6、完整代码示例 1、背景 需求中有需要用户自定义Excel表格表头,然后生成Excel文件&a…

【分布式系统中的“瑞士军刀”_ Zookeeper】三、Zookeeper 在实际项目中的应用场景与案例分析

在分布式系统日益复杂的当下,Zookeeper 凭借强大的协调能力成为众多项目的关键组件。本篇文章将结合实际项目场景,详细介绍 Zookeeper 在电商秒杀、微服务架构、分布式配置管理以及大数据处理集群等领域的应用,以及在不同的案例场景下的具体分…

【翻译、转载】MCP 提示 (Prompts)

原文地址:https://modelcontextprotocol.io/docs/concepts/prompts#python 提示 (Prompts) 创建可重用的提示模板和工作流 提示 (Prompts) 使服务器能够定义可重用的提示模板和工作流,客户端可以轻松地将其呈现给用户和 LLM。它们提供了一种强大的方式来…

accept() reject() hide()

1. accept() 用途 确认操作:表示用户完成了对话框的交互并确认了操作(如点击“确定”按钮)。 关闭模态对话框:结束 exec() 的事件循环,返回 QDialog::Accepted 结果码。适用场景 模态对话框(通过 exec()…

如何查看电脑IP地址和归属地:全面指南

在数字化时代,了解自己电脑的IP地址和归属地信息变得越来越重要。无论是进行网络故障排查、远程办公设置,还是出于网络安全考虑,掌握这些基本信息都很有必要。本文将详细介绍如何查看电脑的公网IP、内网IP以及归属地信息,并提供常…

基于python生成taskc语言文件--时间片轮询

目录 前言 utf-8 chinese GB2312 utf-8 排除task.c chinese GB2312 排除task.c 运行结果 前言 建议是把能正常工作的单个功能函数放到一起(就和放while函数里的程序一样),程序会按顺序自动配置。 不同的格式已经对应给出。 utf-8 impo…

Docker手动重构Nginx镜像,融入Lua、Redis功能

核心内容:Docker重构Nginx镜像,融入Lua、Redis功能 文章目录 前言一、准备工作1、说明2、下载模块3、Nginx配置文件3、Dockerfile配置文件3、准备工作全部结束 二、构建镜像三、基于镜像创建容器三、lua脚本的redis功能使用总结 前言 ⁣⁣⁣⁣ ⁣⁣⁣⁣…

DeepSeek+Excel:解锁办公效率新高度

目录 一、引言:Excel 遇上 DeepSeek二、认识 DeepSeek:大模型中的得力助手2.1 DeepSeek 的技术架构与原理2.2 DeepSeek 在办公场景中的独特优势 三、DeepSeek 与 Excel 结合的准备工作3.1 获取 DeepSeek API Key3.2 配置 Excel 环境 四、DeepSeekExcel 实…

解决Vue2------You may use special comments to disable some warnings.问题

问题截图 解决办法 打开项目中.eslintrc.js在rules中,添加以下代码,并extends的 vue/standard注释掉 space-before-function-paren: 0, semi: off, quotes : off, comma-dangle : off, vue/comment-directive: off

数据集-目标检测系列- 牙刷 检测数据集 toothbrush >> DataBall

数据集-目标检测系列- 牙刷 检测数据集 toothbrush >> DataBall DataBall 助力快速掌握数据集的信息和使用方式。 贵在坚持! * 相关项目 1)数据集可视化项目:gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/over…

解决:前后端跨域请求

目录 关于跨域请求出现的原因 同源策略 示例(跨域问题) 如何解决跨域请求 方法一:配置后端服务器以允许跨域请求(后端) 方法二:使用代理服务器(前端) 一 ,使用aja…

AI内容检测的技术优势与应用场景

随着互联网的普及和数字内容的爆发式增长,文本、图片、音频、视频等多样化内容已成为信息传播的主要载体。然而,伴随内容增长的是违法违规信息的泛滥,如涉黄、涉政、虚假广告、恶意引流等,不仅威胁用户体验,还对平台合…

DockerDesktop替换方案

背景 由于DockerDesktop并非开源软件,如果在公司使用,可能就有一些限制,那是不是除了使用DockerDesktop外,就没其它办法了呢,现在咱们来说说替换方案。 WSL WSL是什么,可自行百度,这里引用WS…