当前位置:   article > 正文

一个基于百度飞桨封装的.NET版本OCR工具类库 - PaddleOCRSharp

飞浆ocr

4a1105c7e43383c4c97b88f60b360ce5.png

9853c652ac4da3ff8174c51999bab465.jpeg

前言

大家有使用过.NET开发过OCR工具吗?今天给大家推荐一个基于百度飞桨封装的.NET版本OCR工具类库:PaddleOCRSharp。

17e0d4cd6b6f5a604e52ecb006e962df.png

OCR工具有什么用?

OCR(Optical Character Recognition)工具可以将图像或扫描文件中的文本内容转换成可编辑的文本格式。这项技术可以帮助人们快速准确地将扫描文件、图片中的文字提取出来,从而进行编辑、存储和分析。

百度飞桨PaddleOCR介绍

PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力开发者训练出更好的模型,并应用落地。

  • 开源地址:https://github.com/paddlepaddle/PaddleOCR

项目支持的.NET版本

  1. net35;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net481;
  2. netstandard2.0;netcoreapp3.1;
  3. net5.0;net6.0;net7.0;net8.0

项目源码

1f43bbfc2649fdbd197be83bc39a74d2.png

示例项目运行

PaddleOCRSharpDemo

设置启动项目

注意该示例项目只支持X64位程序。

119acbf7d022f630171cc4a16e902f5e.png 12b70f2708dc9ee0f16a8d9daf8b5916.png

.NET示例项目编译

注意:如果因框架编译问题无法编译,请修改PaddleOCRSharp\PaddleOCRSharp.csproj文件【或双击项目】,删除当前电脑环境没有的框架,只保留你想要的.NET框架。

  1. <TargetFrameworks>
  2. net35;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net481;
  3. netstandard2.0;netcoreapp3.1;
  4. net5.0;net6.0;net7.0;net8.0
  5. </TargetFrameworks>

如我的本地环境没有安装.net8,那就删除对应版本即可。

d04b49e056af4fb9c0e631b82e0e41ca.png

下载对应模型

OCR识别模型库支持官方所有的模型,也支持自己训练的模型。完全按照飞桨OCR接口搭桥。本项目部署自带的一种轻量版8.6M模型库、服务器版模型库(更准确,需要自行下载),可以自行更改模型库适用实际需求。

058f24d3bd0e966c470573211dd3d944.png 9ef6d282d73520fc877d1dcc4c3866c4.png

或者复制源码对应位置paddle-ocrsharp-dev\paddle-ocrsharp-dev\PaddleOCRSharp\PaddleOCRLib\inference下面的模型到项目输出目录中:

3cdb3bdb8fc040bd92e337c6521da742.png

将下载的模型放到对应文件项目目录下

  1. /// <summary>
  2.         /// PaddleOCR识别引擎对象初始化
  3.         /// </summary>
  4.         /// <param name="config">模型配置对象,如果为空则按默认值</param>
  5.         /// <param name="parameter">识别参数,为空均按缺省值</param>
  6.         public PaddleOCREngine(OCRModelConfig config, OCRParameter parameter = null) : base()
  7.         {
  8.             CheckEnvironment();
  9.             if (parameter == null) parameter = new OCRParameter();
  10.             if (config == null)
  11.             {
  12.                 string root= GetRootDirectory();
  13.                 config = new OCRModelConfig();
  14.                 string modelPathroot = root + @"\inference";
  15.                 config.det_infer = modelPathroot + @"\ch_PP-OCRv4_det_infer";
  16.                 config.cls_infer = modelPathroot + @"\ch_ppocr_mobile_v2.0_cls_infer";
  17.                 config.rec_infer = modelPathroot + @"\ch_PP-OCRv4_rec_infer";
  18.                 config.keys = modelPathroot + @"\ppocr_keys.txt";
  19.             }
  20.             if (!Directory.Exists(config.det_infer)) throw new DirectoryNotFoundException(config.det_infer);
  21.             if (!Directory.Exists(config.cls_infer)) throw new DirectoryNotFoundException(config.cls_infer);
  22.             if (!Directory.Exists(config.rec_infer)) throw new DirectoryNotFoundException(config.rec_infer);
  23.             if (!File.Exists(config.keys)) throw new FileNotFoundException(config.keys);
  24.             Initialize(config.det_infer, config.cls_infer, config.rec_infer, config.keys, parameter);
  25.         }
cedf4467d2fce1f39a9da17bc2a75493.png

无法加载 DLL“PaddleOCR.dll”: 找不到指定的模块

20b70ab259558106df7c449afeba5d23.png

将下面的dll复制到对应的输出目录中:

  1. |--libiomp5md.dll            //第三方引用库
  2. |--mkldnn.dll                //第三方引用库
  3. |--mklml.dll                 //第三方引用库
  4. |--opencv_world470.dll       //第三方引用库
  5. |--paddle_inference.dll      //飞桨库
  6. |--PaddleOCR.dll  
  7. 本项目依赖VC++2017X64运行库,请检查机器上是否安装VC++依赖库。2.0.4及以上版本,免安装VC++2017X64运行库
60f54829f9a5a9341a8304a28fe23b40.png

项目运行截图

文件识别

4e5840373f30a59e45c631e5166a8572.png

截图识别

52a5ae60a7c5f8decece83635b7bef48.png aa09d1d9dec9b9e840cbde864c7cd029.png

剪切板表格

e5cf1da92964aa3619886411f14423e6.png 2f83a9d332ecc1de0ab5f6ce896697b5.png

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/946239
推荐阅读
相关标签