LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【强烈推荐】C#.NET开源的OCR文字识别工具

admin
2023年9月4日 11:53 本文热度 1896

导读

现如今,大家对OCR的需求与日俱增,但是对我们.NET开发人员来说,却基本并没有什么趁手的工具,大部分都是基于Python去调用的,习惯了.NET优秀的语法,如果不是必要,其实是很不想去适应其他语言的。

这套源码我是从去年开始接触的,不过到最后因为没有实际应用,所以最近没有太多的关注,但是作者还是在不停的更新中,交流群也是非常活跃。














项目描述


PaddleOCRSharp 是一个基于百度飞桨PaddleOCR的.NET版本OCR工具类库。项目核心组件PaddleOCR.dll,由C++编写,根据百度飞桨PaddleOCR的C++代码修改并优化而成。目前已经支持C++、.NET、Python、Golang、Rust等开发语言的直接API接口调用。项目包含文本识别、文本检测、表格识别功能。本项目针对小图识别不准的情况下做了优化,比飞桨原代码识别准确率有所提高。包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持中英文、纯英文以及多种语言文本检测识别。

PaddleOCRSharp封装极其简化,实际调用仅几行代码,极大的方便了中下游开发者的使用和降低了PaddleOCR的使用入门级别,同时提供不同的.NET框架使用,方便各个行业应用开发与部署。Nuget包即装即用,可以离线部署,不需要网络就可以识别的高精度中英文OCR。

本项目支持官方所有公开的通用OCR模型,PPOCRV2、PPOCRV3、PPOCRV4。如果使用v2模型,请设置OCR识别参数OCRParameter对象的属性rec_img_h=32,本项目默认使用V3模型,默认rec_img_h=48:

本项目只能在X64的CPU上编译和使用,只能在avx指令集上的CPU上使用。

本项目目前支持以下.NET框架:

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

本项目提供了两个SDK,一个是C++版本,一个是.net版本,.net版本是对C++版本的二次封装,其他语言开发亦是调用C++版本。同时也提供了Go、Python、C++的调用示例代码

 

 

支持的模型

 

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

模型名称

模型大小

下载地址

备注

ch_PP-OCRv2

10M

中英文轻量v2


en_PP-OCRv2

4M

英文数字v2


ch_PP-OCRv3

12M

中英文轻量v3


en_PP-OCRv3

10M

英文数字v3


ch_PP-OCRv4

14M

中英文轻量v4


en_PP-OCRv4

12M

英文数字v4



代码预览

 


 

效果预览

 


PaddleOCRSharp的github:

raoyutian/PaddleOCRSharp: This project is modified and encapsulated by C++ code based on Baidu PaddlePaddle OCR. Net class library. It includes the table recognition function of text recognition, text detection and statistical analysis based on text detection results. At the same time, it is optimized to improve the recognition accuracy in the case of inaccurate small image recognition. The project encapsulation is extremely simplified, and the actual call is only one line of code, which greatly facilitates the use of middle and downstream developers and reduces the entry level of paddleocr. At the same time, different functions are provided Net framework to facilitate application development and deployment in various industries. (github.com)https://github.com/raoyutian/PaddleOCRSharp/tree/main


该文章在 2023/9/4 12:27:21 编辑过

全部评论2

admin
2023年9月4日 12:28

该项目只支持x64cpu编译

一、准备环境

1、先创建一个窗体项目,添加一个按钮(我的是VS2017)

2、项目-属性-生成。配置和图中一样即可

        

二、nuget包安装:

 三、代码如下

  1. using PaddleOCRSharp;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12. namespace PaddleOCRSharp1._0
  13. {
  14. public partial class Form1 : Form
  15. {
  16. //程序全局初始化一次即可,不必每次识别都初始化,容易报错。
  17. // 初始化OCR模型配置,默认中英文V3模型
  18. OCRModelConfig config = null;
  19. // 初始化OCR参数
  20. OCRParameter oCRParameter = new OCRParameter();
  21. // 创建一个OCR识别结果对象
  22. OCRResult ocrResult = new OCRResult();
  23. public Form1()
  24. {
  25. InitializeComponent();
  26. }
  27. private void button1_Click(object sender, EventArgs e)
  28. {
  29. // 创建对象,设置文件过滤器
  30. OpenFileDialog ofd = new OpenFileDialog();
  31. ofd.Filter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
  32. // 显示文件选择对话框,选择要识别文字的图像文件
  33. if (ofd.ShowDialog() != DialogResult.OK)
  34. {
  35. return;
  36. }
  37. // 读取选择的图像文件的所有字节数据
  38. var imagebyte = File.ReadAllBytes(ofd.FileName);
  39. // 将字节数据转换成Bitmap图像对象
  40. Bitmap bitmap = new Bitmap(new MemoryStream(imagebyte));
  41. // 创建PaddleOCR引擎,使用之前初始化的配置和参数
  42. PaddleOCREngine engine = new PaddleOCREngine(config, oCRParameter);
  43. // 使用PaddleOCR引擎对图像进行文字识别
  44. // OCR识别结果会保存在ocrResult对象中
  45. ocrResult = engine.DetectText(bitmap);
  46. // 如果识别结果不为空,显示识别出的文字内容
  47. if (ocrResult != null)
  48. {
  49. // 弹出一个消息框,显示识别出的文字内容
  50. MessageBox.Show(ocrResult.Text, "识别结果");
  51. }
  52. }
  53. }
  54. }

该评论在 2023/9/4 12:28:03 编辑过
admin
2023年9月4日 12:29

.NET示例代码

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 = null;
            OCRResult ocrResult = new OCRResult();
            using (PaddleOCREngine engine = new PaddleOCREngine(config, oCRParameter))
            {
                ocrResult = engine.DetectText(bmp);
            }
            if (ocrResult != null)
            {
                MessageBox.Show(ocrResult.Text,"识别结果");
            }

关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved