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

paddlehub搭建ocr服务

搭建环境:

  • Ubuntu20.04
  • 1080Ti显卡

由于GPU硬件比较老,是Pascal架构,只能支持到paddle2.4.2版本,更高版本无法支持;同时,因为paddle老版本的依赖发生了变化,有些地方存在冲突,花费了不少时间解决!

1. 安装GPU支持的cuda版本

这里选择的是cuda_12.0.0_525.60.13_linux.run

2. 安装对应的cudnn包

libcudnn8_8.8.0.121-1+cuda12.0_amd64.deb (从nvidia官网下载的cudnn local repo包中提取)

3. 安装对应的nccl包

libnccl2_2.19.3-1+cuda12.0_amd64.deb (从nvidia官网下载的nccl local repo包中提取)

注意:以上两个包默认安装在了/usr/lib/x86_64-linux-gnu目录下,需要在/usr/local/cuda/lib64中建立链接。如:

sudo ln -s /usr/lib/x86_64-linux-gnu/libnccl.so libnccl.so

4. 安装miniconda,略

5. 创建虚拟环境

conda create -n paddle python=3.8conda activate paddle

6. 安装paddlepaddle

conda install paddlepaddle-gpu==2.4.2 cudatoolkit=11.7 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forgepip install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple

注:由于paddlepaddle与paddlehub之间存在版本依赖冲突问题,运行时会报错,可以执行以下命令,降低降低paddlenlp版本

pip install paddlenlp==2.5.0 shapely pyclipper -i https://pypi.tuna.tsinghua.edu.cn/simplepip install protobuf==3.20.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

7. 以服务方式运行

hub serving start -m ch_pp_ocrv3
hub serving start -m chinese_ocr_db_crnn_server

 如果有多张显卡,可以指定用哪张卡来运行:

CUDA_VISIBLE_DEVICES=1 hub serving start -m chinese_ocr_db_crnn_server

可以通过以下方式访问服务

http://127.0.0.1:8866/gradio/ch_pp_ocrv3 访问web

http://127.0.0.1:8866/predict/ch_pp-ocrv3 访问API

# coding: utf8
import requests
import json
import cv2
import base64def cv2_to_base64(image):data = cv2.imencode('.jpg', image)[1]return base64.b64encode(data.tobytes()).decode('utf8')# 发送HTTP请求
data = {'images':[cv2_to_base64(cv2.imread("/home/zoon/Downloads/3.png"))]}
headers = {"Content-type": "application/json"}
url = "http://127.0.0.1:8866/predict/chinese_ocr_db_crnn_server"
r = requests.post(url=url, headers=headers, data=json.dumps(data))# 打印预测结果
print(r.json()["results"])

http://www.xdnf.cn/news/581869.html

相关文章:

  • 关于vue彻底删除node_modules文件夹
  • JMeter-Websocket接口自动化
  • Python 学习笔记
  • React19 项目开发中antd组件库版本兼容问题解决方案。
  • ubuntu中上传项目至GitHub仓库教程
  • 【数据结构与算法】LeetCode 每日三题
  • LeetCode 3356.零数组变换 II:二分查找 + I的差分数组
  • 精益数据分析(78/126):问题-解决方案画布的实战应用与黏性阶段关键总结
  • 华为云Flexus+DeepSeek征文 | 基于ModelArts Studio 的 DeepSeek API 实现行业深度搜索和分析
  • 平时使用电脑,如何去维护
  • VideoMAE论文笔记
  • 游戏引擎学习第305天:在平台层中使用内存 Arena 的方法与思路
  • 模拟退火算法求解01背包问题:从理论到实践的完整攻略
  • IPv4 地址嵌入 IPv6 的前缀转换方式详解
  • AUTOSAR AP 入门0:AUTOSAR_EXP_PlatformDesign.pdf
  • (高级)高级前端开发者指南:框架运用与综合实战
  • 《量子计算实战》PDF下载
  • 工业 / 农业 / AR 场景怎么选?Stereolabs ZED 双目3D相机型号对比与选型建议
  • 融合蛋白质语言模型和图像修复模型,麻省理工与哈佛联手提出PUPS ,实现单细胞级蛋白质定位
  • 边缘计算正在重新定义物联网的未来——你的设备还在“等云“吗?⚡
  • Java 大视界 -- Java 大数据机器学习模型在金融客户生命周期价值预测与营销策略制定中的应用(262)
  • java jdbc执行Oracle sql文件
  • 鸿蒙 HarmonyOS NEXT 系统 Preference 首选项使用全解析
  • Antd中Upload组件封装及使用:
  • 【Redis】三、在springboot中应用redis
  • python实现web请求与回复
  • 水库大坝、坝肩混凝土面板变形及岸坡位移多断面多测点安全监测新途径——变焦视觉位移监测仪
  • 在线时间戳(Unix TimeStamp)转换器
  • 739. 每日温度
  • 单片机如何快速实现查看实时数据