码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 一个基于百度飞桨封装的.NET版本OCR工具类库 - PaddleOCRSharp


    前言

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

    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

    项目源码

    示例项目运行(PaddleOCRSharpDemo)

    设置启动项目

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

    .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,那就删除对应版本即可。

    下载对应模型

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

    下载地址:PaddleOCRSharp: PaddleOCRSarp是一个基于百度飞桨PaddleOCR的C++代码修改并封装的.NET的OCR工具类库。包含文本识别、文本检测、表格识别功能。本项目针对小图识别不准的情况下做了优化,比飞桨原代码识别准确率有所提高。 包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持多种文本检测。

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

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

    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.         }

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

    将下面的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运行库

    示例项目运行截图

    文件识别

    截图识别

    剪切板表格

    项目源码地址

    更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

    PaddleOCRSharp: PaddleOCRSarp是一个基于百度飞桨PaddleOCR的C++代码修改并封装的.NET的OCR工具类库。包含文本识别、文本检测、表格识别功能。本项目针对小图识别不准的情况下做了优化,比飞桨原代码识别准确率有所提高。 包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持多种文本检测。

    优秀项目和框架精选

    该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

    https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

    加入DotNetGuide技术交流群

    1、提供.NET开发者分享自己优质文章的群组和获取更多全面的C#/.NET/.NET Core学习资料、视频、文章、书籍,社区组织,工具和常见面试题资源,帮助大家更好地了解和使用 .NET技术。
    2、在这个群里,开发者们可以分享自己的项目经验、遇到的问题以及解决方案,倾听他人的意见和建议,共同成长与进步。
    3、可以结识更多志同道合的开发者,甚至可能与其他开发者合作完成有趣的项目。通过这个群组,我们希望能够搭建一个积极向上、和谐友善的.NET技术交流平台,为广大.NET开发者带来更多的价值。

    欢迎加入DotNetGuide技术交流群👉

  • 相关阅读:
    HarmonyOS DevEso环境搭建
    天气预报查询数据接口、实时天气、未来24小时、7天/15天预报
    Sentinel源码改造,实现Nacos双向通信!
    【Linux】shell脚本+cron定时任务实现“当程序报错时,发送邮件”
    涨知识,关于代码签名证书10大常见问题解答
    【七:docken+jenkens部署】
    前端面试宝典React篇09 Virtual DOM 的工作原理是什么?
    从入局到破局:商家怎样挖掘视频号的新增量?
    SpringBoot一:概述
    【2021集创赛】Arm杯二等奖-基于Arm核的智慧病房手势识别方案
  • 原文地址:https://blog.csdn.net/qq_37237487/article/details/134300527
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号