C# OCR实现文字识别功能

OCR,中文叫做光学字符识别。它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并转换成一种计算机能够接受、人又可以理解的格式。本文将利用OCR实现文字识别功能,感兴趣的可以了解一下

简介

OCR英文全称是Optical Character Recognition,中文叫做光学字符识别。它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并转换成一种计算机能够接受、人又可以理解的格式。文字识别是计算机视觉研究领域的分支之一。

效果预览

核心库概述

NuGet包:PaddleOCRSharp

引用此包后会自动加载进所需的第三方依赖包

OCR文字识别库有很多,包括在线的,比较好的是百度的,为什么选用这个主要是,考虑的离线环境,PaddleOCR 的识别率还是不错的。

问题

在使用的时候也遇到了一些问题,比如 内存释放不及时 等

底层的C++逻辑对内存的管理有一些小瑕疵,会有内存溢出的问题,通常不会出现

源码

界面布局

     

后台逻辑

using Microsoft.Win32; using PaddleOCRSharp; using System; using System.Drawing; using System.IO; using System.Threading.Tasks; using System.Windows; using System.Windows.Media.Imaging; namespace PaddleOCRWPF { ///  /// Interaction logic for MainWindow.xaml ///  public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void BtnOCR_Click(object sender, RoutedEventArgs e) { StartDistinguish(); } private void BtnClose_Click(object sender, RoutedEventArgs e) { ImgPreview.Source = null; TxtPreview.Text = ""; } ///  /// 调用核心 ///  private void StartDistinguish() { OpenFileDialog openFile = new() { Filter = "图片(*.bmp;*.jpg-600;*.jpeg;*.png-600)|*.bmp;*.jpg-600;*.jpeg;*.png-600" }; if (!(bool)openFile.ShowDialog()) return; Dispatcher.BeginInvoke(new Action(() => { ImgPreview.Source = new BitmapImage(new Uri(openFile.FileName, UriKind.RelativeOrAbsolute)); })); Task.Run(() => { var imagebyte = File.ReadAllBytes(openFile.FileName); Bitmap bitmap = new(new MemoryStream(imagebyte)); OCRModelConfig? config = null; OCRParameter oCRParameter = new(); OCRResult ocrResult = new(); using (PaddleOCREngine engine = new(config, oCRParameter)) { ocrResult = engine.DetectText(bitmap); } if (ocrResult != null) { Dispatcher.BeginInvoke(new Action(() => { TxtPreview.Text = ocrResult.Text; })); } }); } } } 

到此这篇关于C# OCR实现文字识别功能的文章就介绍到这了,更多相关C# OCR文字识别内容请搜索0133技术站以前的文章或继续浏览下面的相关文章希望大家以后多多支持0133技术站!

以上就是C# OCR实现文字识别功能的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 其他教程