C#测试调用PaddleOCRSharp模块识别图片文字

  微信公众号“dotNET跨平台 ”上看到一篇介绍PaddleOCRSharp的文章,通过调用该模块可以从图片中识别文字。文章在百度中也可以搜到,地址见参考文献1.
  PaddleOCRSharp是基于PaddleOCR的C++代码修改并封装的.NET工具类库,支持文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能。
  在百度中搜索PaddleOCRSharp,除了该模块外,还能看到另外一个模块PaddleSharp(参考文献2),这个也是用.net 封装的PaddleOCR工具类库,后者在GitHub中的得到的☆还要更多一些。从Visual Studio2019的NuGet管理器中可以搜到PaddleOCRSharp,但是搜索不到PaddleSharp,后者需通过Sdcb.PaddleOCR关键字搜索相应的NuGet包。
C#测试调用PaddleOCRSharp模块识别图片文字_第1张图片C#测试调用PaddleOCRSharp模块识别图片文字_第2张图片
C#测试调用PaddleOCRSharp模块识别图片文字_第3张图片

  本文主要学习并仿照参考文献1学习PaddleOCRSharp的基本用法,后续文章中再测试PaddleSharp。
  在Visual Studio中通过NuGet管理器添加PaddleOCRSharp包后,会在项目下增加多个文件,如下图所示。

C#测试调用PaddleOCRSharp模块识别图片文字_第4张图片
  设计下面的界面进行功能测试。
C#测试调用PaddleOCRSharp模块识别图片文字_第5张图片
  测试代码使用的参考文献1中的代码,PaddleOCRSharp的调用也比较方便,如下图所示(OCRModelConfig和OCRParameter 对应的应该是跟文字识别相关的参数,这里都是用的null和默认值):

	 OCRModelConfig config = null;
     OCRParameter oCRParameter = new OCRParameter();
     OCRResult ocrResult = new OCRResult();

     using (PaddleOCREngine engine = new PaddleOCREngine(config, oCRParameter))
     {
         ocrResult = engine.DetectText(picSrcImage.Image);
         if (ocrResult != null)
         {
             txtOcrResult.Text = ocrResult.Text;
         }
     }

  在网上找了几张图片进行测试(1张参考文献1中的身份证图片,3张带车牌的图片),其中车牌中文字的识别效果一般,身份证和有很多字的带车牌的图片大部分文字都能识别出来。效果图如下所示。识别不出来的内容不清楚是不是跟OCRModelConfig和OCRParameter的设置有关。
C#测试调用PaddleOCRSharp模块识别图片文字_第6张图片
C#测试调用PaddleOCRSharp模块识别图片文字_第7张图片
C#测试调用PaddleOCRSharp模块识别图片文字_第8张图片
C#测试调用PaddleOCRSharp模块识别图片文字_第9张图片

参考文献:
[1]http://news.sohu.com/a/524033869_121124363
[2]https://github.com/sdcb/PaddleSharp
[3]https://github.com/raoyutian/PaddleOCRSharp
[4]https://github.com/paddlepaddle/PaddleOCR

测试图片来源
[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

你可能感兴趣的:(dotnet编程,C#,PaddleOCRSharp)