首页 > 编程语言 >高精度离线免费 的C#文字识别PaddleOCR库

高精度离线免费 的C#文字识别PaddleOCR库

时间:2023-06-21 12:57:20浏览次数:64  
标签:OCR C# PaddleOCR 离线 文本 PaddleOCRSharp new 识别

随便打开一个Microsoft Visual Studio,新建一个WinForms项目,从下面列表中随便选择一个NET框架。目标平台要设置成X64,该OCR仅支持64位。

 

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

 

 

 

 

创建完窗口后,切换到【程序包管理控制台】,输入下面命令并回车:

Install-Package PaddleOCRSharp -Version 3.1.0

也可以:项目名称右键点击》管理nuget程序包,在浏览界面,搜索“PaddleOCRSharp”选择最新版本点击【安装】

按照上面操作完成PaddleOCRSharp的依赖包安装。

在窗口界面拖放一个按钮,并双击,在按钮的点击事件中,输入以下代码:

OpenFileDialog ofd = new OpenFileDialog();
  ofd.Filter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
  if (ofd.ShowDialog() != DialogResult.OK) return;
  var imagebyte = File.ReadAllBytes(ofd.FileName);
  Bitmap bitmap = new Bitmap(new MemoryStream(imagebyte));
  OCRModelConfig config = null;
  OCRParameter oCRParameter = new  OCRParameter ();
  OCRResult ocrResult = new OCRResult();
  //建议程序全局初始化一次即可,不必每次识别都初始化,容易报错。
  PaddleOCREngine engine = new PaddleOCREngine(config, oCRParameter);
   {
    ocrResult = engine.DetectText(bitmap );
   }
 if (ocrResult != null)
 {
    MessageBox.Show(ocrResult.Text,"识别结果");
 }

然后按F5运行,点击按钮,选择一个本地图片,进行OCR文字识别。

弹出识别结果,说明你已经上手学会了如何使用OCR,就这么简单。

 

 

 

PaddleOCRSharp项目,是基于百度飞桨OCR代码修改并封装的.NET的工具类库。包含文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能,包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持多种文本检测。项目封装极其简化,实际调用仅几行代码,极大的方便了中下游开发者的使用和降低了PaddleOCR的使用入门级别,同时提供不同的.NET框架使用,方便各个行业应用开发与部署。Nuget包即装即用,可以离线部署,不需要网络就可以识别的高精度中英文OCR。

关键:离线、免费、高精度、开源

项目开源地址:https://gitee.com/raoyutian/paddle-ocrsharp

github地址:https://github.com/raoyutian/PaddleOCRSharp

同时,,该核心PaddleOCR.dll库,还支持Python.GO.C++.Rust等语言调用哟!

你get到了吗?

标签:OCR,C#,PaddleOCR,离线,文本,PaddleOCRSharp,new,识别
From: https://www.cnblogs.com/raoyutian/p/17495976.html

相关文章

  • /etc/resolv.conf中options ndots是什么意思?
     意思是,当查询的名称,也就是主机名中,包括大于等于ndots定义的.的个数时,优先使用全名称查询,查询不到再和search进行拼接,之后查询  示例:  ......
  • CF1810H Last Number
    大难题,但是非常的有意思。思路来自\(\color{black}\text{艾}\color{red}\text{利克斯·伟}\)。补充了一点小细节。题意对于一个可重集合\(S\),初始为\(\{1\dotsn\}\),执行以下操作:删除集合中的最大、最小元素\(S_{min},S_{max}\),加入\(S_{max}-S_{min}\)。最终集合只......
  • Remove Duplicates from Sorted List
    Giventheheadofasortedlinkedlist,deleteallduplicatessuchthateachelementappearsonlyonce.Returnthelinkedlistsortedaswell.Example1:Input:head=[1,1,2]Output:[1,2]Example2:Input:head=[1,1,2,3,3]Output:[1,2,3]Solution:......
  • CLICKHOUSE 为什么能估值$2亿与心理学
    就是最近,似乎想明白了有些people的心里世界是多么的有interesting,平日里那种我过得好不好,与我无关,而与别人过得没我好有关,别人过得不好,显得我过得没有那么糟糕的心里,最终决定自己感受过得好不好,是一种病态的心里。我们一生中,那么多有意思的事情,为什么就要去和别人比,感受美好的细胞......
  • VS Code 中 HTML文件使用emmet语法 感叹号!+Tab 生成HTML元素的修改方法
    在visualstudiocode(以下简称vscode)新建一个html,输入!后会提示按tab键生成html元素:这种方法生成的格式不适合我们,需要修改它;方法一,原有基础上简单的修改lang和charset这两个在vscode上,依次:文件-首选项-设置,输入emmet.variables然后添加项,如下图:建议:搜......
  • 《C程序设计伴侣》诞生记
    引自图灵教育陈冰老师的【编辑的话】我第一次看谭老师的《C程序设计》,是20年前,那时我17岁,大学一年级。当时感觉这本书很神奇,对编程充满了好奇。同时也感觉这本书有些难,有些地方,比如指针,虽然看过书,也有老师讲过了,但依然感觉似懂非懂。还有些知识,书中只讲了怎么做,但没有讲为什么要这......
  • react学习,实现子组件监听父组件对像的变化
    我们可以结合useEffet,useRef,useState来实现子组件监听父组件对像的变化:import{useEffect,useRef,useState}from"react";interfaceMyProps={counter:number;};constMyChildComponent:React.FC<MyProps>=({counter})=>{constprevCounterRef=u......
  • buuctf刷题笔记
    换表的base64解密importbase64importstringstr1="x2dtJEOmyjacxDemx2eczT5cVS9fVUGvWTuZWjuexjRqy24rV29q"string1="ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/"string2="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl......
  • DDoS攻击和CC攻击的原理是什么?有何区别?
    近年来,随着移动互联网的高速发展,网络攻击的次数逐年增加,针对网站攻击也变得越来越频繁,而在众多攻击方式之中,最常见的应该就是CC攻击和DDoS攻击,尤其是一些防护能力欠佳的网站,一旦遭受攻击很容易瘫痪,造成不必要的麻烦。那么DDoS攻击和CC攻击的原理有何区别?本文为大家介绍一下。......
  • abc055d <枚举>
    https://atcoder.jp/contests/abc055/tasks/arc069_b使用二进制枚举会更加简洁,要有从进制角度思考问题的习惯//https://atcoder.jp/contests/abc055/tasks/arc069_b//枚举,尝试前两个动物的4种组合,通过前两个动物的假设推出剩下的动物,而后检查是否存在冲突#include<......