当前位置:网站首页>C#测试调用PaddleSharp模块识别图片文字
C#测试调用PaddleSharp模块识别图片文字
2022-04-23 05:16:00 【gc_2299】
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
版权声明
本文为[gc_2299]所创,转载请带上原文链接,感谢
https://blog.csdn.net/gc_2299/article/details/124183823
边栏推荐
- Acid of MySQL transaction
- Chapter II project scope management of information system project manager summary
- Data security has become a hidden danger. Let's see how vivo can make "user data" armor again
- Detailed explanation of hregionserver
- Chapter I overall project management of information system project manager summary
- Discussion on flow restriction
- 学习笔记:Unity CustomSRP-12-HDR
- 数据安全问题已成隐患,看vivo如何让“用户数据”重新披甲
- PHP counts the number of files in the specified folder
- 学习笔记:Unity CustomSRP-10-Point and Spot Shadows
猜你喜欢

Deep learning notes - semantic segmentation and data sets

Good simple recursive problem, string recursive training

Independent station operation | Facebook marketing artifact - chat robot manychat

Define defines constants and macros, pointers and structures

Live delivery form template - automatically display pictures - automatically associate series products

了解 DevOps,必读这十本书!

Simple application of parallel search set (red alarm)

青岛敏捷之旅,来了!

工具在数字化转型中扮演了什么样的角色?

项目经理值得一试的思维方式:项目成功方程式
随机推荐
The concept of meta universe is popular. Is virtual real estate worth investing
Redis lost key and bigkey
源码剖析Redis中如何使用跳表的
Basic concepts of multithreading (concurrency and parallelism, threads and processes) and entry cases
2022/4/22
开源规则引擎——ice:致力于解决灵活繁复的硬编码问题
JS Array常见方法
MySQL slow query
Routing parameters
Redis data type usage scenario
JSP-----JSP简介
Restful toolkit of idea plug-in
Let the LAN group use the remote device
Nacos source code startup error report solution
Interview summary
The source of anxiety of graduating college students looking for technology development jobs
深度学习笔记 —— 物体检测和数据集 + 锚框
什么是指令周期,机器周期,和时钟周期?
Master-slave replication of MariaDB database
Docker installation and mysql5 7 installation