首页 > 编程语言 >C# OCR光学识别深度学习框架PaddleOCRSharp使用介绍

C# OCR光学识别深度学习框架PaddleOCRSharp使用介绍

时间:2023-08-22 09:00:49浏览次数:37  
标签:oCRParameter C# PaddleOCRSharp 使用 var using OCR

PaddleOCRSharp 是一个基于 PaddlePaddle 深度学习框架的 OCR(光学字符识别)库的 C# 封装。它提供了一种方便的方式来进行文字检测、文本识别和版面分析等任务。下面是 PaddleOCRSharp 的使用方法的详细介绍:

一、安装 PaddleOCRSharp

PaddleOCRSharp 可以通过 NuGet 包管理器进行安装。在 Visual Studio 中打开项目,右键单击项目,并选择 "管理 NuGet 包"。在搜索栏中搜索 "PaddleOCRSharp",然后点击 "安装" 安装包。

二、导入必要的命名空间

在代码文件的顶部,添加以下命名空间引用:

using PaddleOCRSharp;
using PaddleOCRSharp.Config;
using PaddleOCRSharp.Utils;

三、创建 OCR 实例

使用以下代码创建一个 OCR 实例:

var ocr = new PaddleOCR();

四、配置 OCR 模型

PaddleOCRSharp 提供了多种模型供选择。你可以使用预训练好的模型,也可以加载自定义的模型。以下是一个示例,展示如何使用英文识别模型:

var config = new EnglishOCRConfig();
ocr.SetConfig(config);

五、运行 OCR

将图像传递给 OCR 实例进行处理,并获取检测到的文字结果:

var image = ImageUtil.LoadImage("path/to/image.jpg");
var result = ocr.Run(image);

六、处理 OCR 结果

OCR 结果将作为一个列表返回,列表中每个元素都是一个字典,包含识别到的文字和其对应的位置信息。你可以使用以下代码处理结果:

foreach (var item in result)
{
    var text = item["text"];
    var confidence = item["confidence"];
    var location = item["location"]; // 文字所在的矩形位置信息
    
    // Do something with the text, confidence and location...
}

以上就是使用 PaddleOCRSharp 的基本步骤。你可以根据自己的需求选择合适的模型,并进行相应的配置和处理。更多详细的使用方法和示例代码可以参考 PaddleOCRSharp 的官方文档。

七、其他

OCRModelConfig config = null;
OCRParameter oCRParameter = new OCRParameter();
oCRParameter.numThread = 6; // 预测并发线程数
oCRParameter.Enable_mkldnn = 1; // web部署该值建议设置为0,否则出错,内存如果使用很大,建议该值也设置为0.
oCRParameter.cls = 1; // 是否执行文字方向分类;默认false
oCRParameter.use_angle_cls = 1; // 是否开启方向检测,用于检测识别180旋转
oCRParameter.det_db_score_mode = 1; // 是否使用多段线,即文字区域是用多段线还是用矩形
oCRParameter.UnClipRatio = 1.6F;
oCRParameter.MaxSideLen = 2000;
// 初始化OCR引擎
PaddleOCREngine engine = new PaddleOCREngine(config, oCRParameter);

请注意,由于代码片段中的 OCRModelConfig 类的定义不在提供的范围内,因此我将其定义为一个变量,并将其设置为 null。你需要根据实际情况将其替换为正确的类型和创建逻辑。

另外,请确保在代码文件的顶部添加相应的命名空间引用:

using PaddleOCRSharp.Config;
using PaddleOCRSharp.Utils;

标签:oCRParameter,C#,PaddleOCRSharp,使用,var,using,OCR
From: https://www.cnblogs.com/guangzhiruijie/p/17647566.html

相关文章

  • Linux Apache2如何开启SSL https 443
    对于新手来说,配置SSL似乎是意见很麻烦的事情。首先ssl、https是什么,如何生成证书,如何生成可信任的证书(https打开为绿色无警告)。他们默认使用443端口,也可以手动配置为其他端口。apache系的配置文本文件又鬼™麻烦,看都看不懂。最头疼的是,不同的lamp平台,设置的地方还不一样。这里......
  • C语言数组(2)--- 一维数组的使用
    一.导入我们先来看一段代码:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<string.h>intmain(void){ chararr1[]="abc"; chararr2[]={'a','b','c'}; printf("arr1=%d\n",sizeof(arr1)); pri......
  • 关于Azure-存储账户-SMB-CIFS文件共享-在Linux系统中的挂载
    笔者在自己Azure平台创建了一个【标准】性能,即StorageV2类型的存储账户、然后在其下创建了一个文件共享CIFS注意:标准存储账户中的【文件共享】,只能创建基于SMB协议的文件共享如果要创建NFS文件共享,只能在创建存储账户时,【性能】处选择,高级,文件共享,才能同时支持CIFS和NFS 这......
  • [Trick] [算法学习笔记] 线段树
    事先声明:本文并非线段树教学。只是一些理解Trick。若您需从0学起线段树建议您移步其他博文呢qwq感谢Idea提供尺子姐姐的博客!,尺子好闪,拜谢尺子!我们在学习线段树的时候,对于乘法“lazytag先乘再加”是不是难以理解?这里介绍一种线段树思考方法。我们可以将序列中的每个元素......
  • 开源Java诊断工具Arthas:开篇之watch实战
    一、前言还在为排查Java程序线上问题头痛吗,看我们用阿里开源的诊断神器Arthas来帮您本文开篇主要介绍阿里开源的诊断神器Arthas3.7.0版本,watch、jad、classloader命令,以Debian11、openjdk11为例二、Arthas简介和安装1.简介Arthas是一款线上监控诊断产品,通过全......
  • 「30 天沉淀 90 mins」Day 1 CPU缓存一致性相关问题——MESI协议
    参考资料小林Coding,也是这里没想到居然讲了这个;先简单复习一下冯诺依曼模型——运算器、控制器、存储器、输入设备、输出设备,以及他们如何交互寄存器分类:通用寄存器,用来存放需要进行运算的数据,比如需要进行加和运算的两个数据。程序计数器,用来存储CPU要执行下一......
  • K8S系统监控:使用Metrics Server和Prometheus
    Kubernetes也提供了类似的linuxtop的命令,就是kubectltop,不过默认情况下这个命令不会生效,必须要安装一个插件MetricsServer才可以。MetricsServer是一个专门用来收集Kubernetes核心资源指标(metrics)的工具,它定时从所有节点的kubelet里采集信息,但是对集群的整体性能影响......
  • Haxx curl相关漏洞修复参考[CVE-2022-4355]
    Haxxcurl/libcurl安全漏洞修复参考libcurl是一个免费,易用的客户端传输库,支持DICT,FILE,FTP,FTPS,Gopher,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,SFTP,SMTP,SMTPS,TelnetandTFTP等协议。libcurl支持SSL认证,HTTPPOST,HTTPPUT,FTP上......
  • AcWing 867. 分解质因数
    题目给定$n$个正整数$a_i$,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。输入格式第一行包含整数$n$。接下来$n$行,每行包含一个正整数$a_i$。输出格式对于每个正整数$a_i$,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数,......
  • Programming abstractions in C阅读笔记:p123-p126
    《ProgrammingAbstractionsInC》学习第50天,p123-p126,总结如下:一、技术总结1.notaion这也是一个在计算机相关书籍中出现的词,但有时却不是那么好理解,因为它可以指代很多对象,这里做一个记录。示例:p124。InC,youcanuseanycharacterarraytoholdstringdata.charstr[6]={......