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

Visual Studio中部署PaddleOCRv5 (借助ncnn框架)

PaddleOCRv5_ncnn

PaddleOCRv5 在Visual Studio中进行图片OCR检测(ncnn框架+open-mobile实现),尝试对nihui的ncnn-android-ppocrv5检测算法的剥离与移植。

本项目Github链接如下:PaddleOCRv5_ncnn

写在前面

本仓库代码是基于nihui的ncnn-android-ppocrv5项目代码而修改的,原仓库代码是部署在Android端的,对于想在其他环境部署来说,需要进行代码剥离和移植。本仓库的代码即是执行该次尝试,尝试在Windows短的Visual Studio中部署该算法。

环境配置

本仓库代码的运行环境如下:

  • Visual Studio 2019

  • ncnn-20250503-windows-vs2019

  • opencv-mobile-3.4.20-windows-vs2019

注:并不需要和本仓库代码的配置环境保持一致,可以根据Visual Studio的版本,下载对应的ncnn和opencv-mobile的版本即可。

推理设置

(1)先在Visual Studio新建一个空白工程,将本仓库代码放到该工程中。

在这里插入图片描述

(2)在工程中载入推理需要依赖的库。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要添加的依赖项如下:

ncnn.lib
GenericCodeGen.lib
glslang.lib
glslang-default-resource-limits.lib
MachineIndependent.lib
OSDependent.lib
SPIRV.lib
opencv_core3420.lib
opencv_features2d3420.lib
opencv_highgui3420.lib
opencv_imgproc3420.lib
opencv_photo3420.lib
opencv_video3420.lib

在这里插入图片描述

(3)选择开始执行,应该在工程的Release的目录下可以成功地生成.exe文件。将weights文件夹和测试图像复制到Release下的路径。
在这里插入图片描述

(4)执行推理。

在这里插入图片描述

推理图片的指令如下:

PaddleOCRv5.exe single japan.png     // 推理图像
PaddleOCRv5.exe folder images        // 推理文件夹(多张图像)  

输出结果会保存在output文件夹下。

推理结果

推理结果如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

写在后面

  • 由于原本的opencv不支持中文和其他语言显示,因此使用的是nihui发布的open-mobile,该库可以支持简单的opencv操作,同时支持中文日文等的显示。但是不知道为什么,我无法在windows端成功地调用电脑的摄像头,也就没有办法进行实时推理的测试。
  • 有尝试在ubuntu平台移植算法,由于opencv-mobile库的原因,无法成功编译库,因此也没有办法完整正常推理。
  • 本仓库代码对nihui原始的仓库做了部分修改,选择通过读取.txt字符文件的方式读取字符,而源代码中是将字符一整个写在.h文件中,我觉得会增加编译负担,就进行了修改。

创作不易,如果觉得这个仓库还可以的话,麻烦给一个star,这就是对我最大的鼓励。

Reference

  • ncnn-android-ppocrv5
  • QT-YOLO-OCR-CPP
http://www.lryc.cn/news/596804.html

相关文章:

  • Flink 状态管理设计详解:StateBackend、State、RocksDB和Namespace
  • 【笔记】Handy Multi-Agent Tutorial 第三章: CAMEL框架简介及实践(实践部分)
  • Redis原理之分布式锁
  • PowerShell自动化核对AD与HR系统账户信息实战指南
  • IDEA202403 超好用设置【持续更新】
  • ZooKeeper在Hadoop中的协同应用:从NameNode选主到分布式锁实现
  • 天津大学陈亚楠教授团队 ACS AEM:焦耳热超快合成非平衡态能源材料——毫秒级制备与跨体系性能突破
  • 昨天去看了电科金仓的发布会,有点东西!
  • 从 Linux 将文件下载到 Windows 的几种实用方法
  • 【AI智能体】Dify 开发与集成MCP服务实战操作详解
  • 嵌入式学习之路
  • Python笔记之跨文件实例化、跨文件调用、导入库
  • 为什么本地ip记录成0.0.0.1
  • 基于Python flask的常用AI工具功能数据分析与可视化系统设计与实现,技术包括LSTM、SVM、朴素贝叶斯三种算法,echart可视化
  • 慢 SQL接口性能优化实战
  • Fast Frequency Estimation Algorithm by Least Squares Phase Unwrapping
  • USB4.0:开启高速数据传输的新时代
  • 当if else比较多时候应该怎么避免?
  • MCP与企业数据集成:ERP、CRM、数据仓库的统一接入
  • #Linux权限管理:从“Permission denied“到系统安全大师
  • uniapp自定义圆形勾选框和全选框
  • iOS 抓包工具有哪些?2025实用指南与场景推荐
  • 重磅发布:Oracle ADG 一键自动化搭建脚本
  • 离线快速处理PDF格式转化的方案
  • 揭秘ThreadLocal核心原理与应用
  • Linux文件系统理解1
  • NLP自然语言处理的一些疑点整理
  • vue2的scoped 原理
  • 基于SpringBoot+MyBatis+MySQL+VUE实现的实习管理系统(附源码+数据库+毕业论文+项目部署视频教程+项目所需软件工具)
  • Python通关秘籍(五)数据结构——元组