IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> C#测试调用PaddleSharp模块识别图片文字 -> 正文阅读

[Python知识库]C#测试调用PaddleSharp模块识别图片文字

??PaddleSharp是PaddleInference C API的C#封装版本,支持在 Windows(x64)、NVIDIA GPU和Linux(Ubuntu-20.04 x64)中使用。PaddleShare主要包括PaddleOCR 和PaddleDetection,其中PaddleOCR 支持14种语言的文字,支持识别多种旋转角度的文字,PaddleDetection支持PPYolo检测模型和PicoDet模型(关于PaddleSharp的详细介绍见参考文献1)。
??可以通过NuGet管理器下载PaddleSharp相关的包,最开始以为包名是以PaddleSharp开头,结果在NuGet管理器中什么都搜不到,在GitHub的PaddleSharp主页中,列出了PaddleSharp相关的包清单(如下图所示),其都以Sdcb开头,这些包在NuGet管理器中都可以搜索安装。

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

??本文主要测试用C#调用PaddleSharp的PaddleOCR进行图片文字识别,参考文献2的PaddleOCR使用说明中列出了要安装的包清单,在VS中安装以下包(最初不想装这么多,就只安装了Sdcb.PaddleOCR,虽然程序可以编译通过,也可以运行,但是识别图片文字过程中会一直提示缺少下拉包清单中的某些,最终要想正常识别图片文字,还是需要把下面这些包都装全)。

Sdcb.PaddleInference
Sdcb.PaddleInference.runtime.win64.mkl
Sdcb.PaddleOCR
Sdcb.PaddleOCR.KnownModels
OpenCvSharp4
OpenCvSharp4.runtime.win

??参照参考文献2中的示例代码进行功能测试(详细代码请到文献中查看,这里就不贴出来了),其代码顺序主要是加载模型->加载图片->识别文字->显示结果。这里主要说一下跟使用PaddleOCRSharp的不同点,由于都是简单测试,说的都是比较简单的。
??PaddleOCRSharp和PaddleSharp都是其它语言编写的ocr功能的C#封装版本,相比之下PaddleOCRSharp封装的更简单一些。通过NuGet安装PaddleOCRSharp,会把依赖文件自动下载并关联到项目上,而PaddleSharp需要手动安装所有需要的包。
??PaddleOCRSharp执行所需的模型在安装包时同步下载并关联到项目上,而PaddleSharp,从测试代码来看,其默认从C:\Users\HP\AppData\Roaming\paddleocr-models\ppocr-v2文件夹中读取所需的模型,如果不存在,则实时从网上下载的,OCRModel对象中记录了各类模型的下载路径(实际执行过程中,由于下载速度一般,直接用迅雷手动下载并复制到对应文件夹中)。

OCRModel model = KnownOCRModel.PPOcrV2;
await model.EnsureAll();

在这里插入图片描述
??还有就是识别图片文字时,PaddleOCRSharp封装了一下,只需在程序中指定图片路径、图片字节数组或Image对象即可,而PaddleSharp识别图片的函数,PaddleOcrAll.Run,需要将图片转成指定的Mat对象。
??PaddleSharp识别的结果包括两类,PaddleOcrResult.Text中将识别出的所有文字合并为一个字符串,PaddleOcrResult.Regions中保存识别出的每个文本块。
??文本块类型为PaddleOcrResultRegion,其中Rect(类型为RotatedRect)保存包含文本的矩形位置信息(该矩形可能是非水平或垂直的)。RotatedRect类的定义如下图所示,其中BoundingRect函数返回包含旋转矩形的矩形。以下面的图片为例PaddleOcrResultRegion.Rect为红色矩形,而BoundingRect()返回的是紫色矩形。同时RotatedRect类的Points函数返回旋转矩形的四个角的点位置信息,可以通过绘制线条方式绘制包含文本的旋转矩形,这样简单一些。

在这里插入图片描述
在这里插入图片描述
??最后列出测试图片的识别效果(使用参考文献中的示例代码,文本块基本都圈出来了,但其中的内容有部分没有正确识别)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考文献
[1]https://github.com/sdcb/PaddleSharp
[2]https://github.com/sdcb/PaddleSharp/blob/master/docs/ocr.md

测试图片来源
[1]https://baijiahao.baidu.com/s?id=1676249081188736513&wfr=spider&for=pc
[2]https://www.xjauto.net/html/cheping/202105/69508.html
[3]https://item.jd.com/10041422363991.html?openbpab=dontwritecookie&uabt=92_16_21&cu=true&utm_source=image.baidu.com&utm_medium=tuiguang&utm_campaign=t_1003608409_&utm_term=1a1dd3a2f0b24eaab2325b16b12d3d8d
[4]http://news.sohu.com/a/524033869_121124363

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:24:12  更:2022-04-24 09:26:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 10:44:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计