C#本地使用離線ocr庫識別圖片中文本,工具包PaddleOCRSharp

C#本地使用離線ocr庫識別圖片文本,工具包PaddleOCRSharp

PaddleOCRSharp介紹

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

PaddleOCRSharp 是一個.NET版本OCR可離線使用類庫。項目核心組件PaddleOCR.dll目前已經支持C\C++、.NET、Python、Golang、Rust、java等眾多開發語言的直接API接口調用。項目包含文本識別、文本檢測、表格識別功能。本項目做了大量優化,提高了識別率和推理性能。包含總模型僅8.6M的超輕量級中文OCR,單模型支持中英文數字組合識別、豎排文本識別、長文本識別。同時支持中英文、純英文以及多種語言文本檢測識別。

PaddleOCRSharp封裝極其簡化,實際調用僅幾行代碼,極大的方便了中下游開發者的使用和降低了PaddleOCR的使用入門級別,同時提供不同的.NET框架使用,方便各個行業應用開發與部署。Nuget包即裝即用,可以離線部署,不需要網絡就可以識別的高精度中英文OCR。

本項目支持官方所有公開的通用OCR模型,如:PPOCRV2、PPOCRV3、PPOCRV4、PP-OCRv4_server、PP-OCRv4_server_doc(1.5萬字符字典模型)。最新版默認使用中英文V4模型ch_PP-OCRv4

我的測試使用框架:

.NET9

  • WPF
  • nuget包:PaddleOCRSharp

XAML代碼:

<Window x:Class="WpfOCR.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfOCR"mc:Ignorable="d"Title="MainWindow" Height="850" Width="900" FontSize="22" WindowStartupLocation="CenterScreen"><Grid><Grid.RowDefinitions><RowDefinition Height="140"></RowDefinition><RowDefinition Height="*"></RowDefinition></Grid.RowDefinitions><StackPanel Grid.Row="0" Orientation="Vertical" ><TextBlock   Margin="5" TextWrapping="Wrap" Text="選擇待識別圖片:" VerticalAlignment="Top" HorizontalAlignment="Left" /><TextBox Margin="5" x:Name="imgDetectionPath"  TextWrapping="Wrap" Text="" Width="680" HorizontalAlignment="Left" /><Button Margin="5" Content="識別" Click="Button_Click" Width="96" HorizontalAlignment="Left" VerticalAlignment="Top" /></StackPanel><Grid Grid.Row="1"    ><Grid.RowDefinitions><RowDefinition Height="auto"   ></RowDefinition><RowDefinition Height="*"></RowDefinition></Grid.RowDefinitions><TextBlock  Grid.Row="0" HorizontalAlignment="Left"  TextWrapping="Wrap" Text="識別結果:" VerticalAlignment="Top" /><TextBox Grid.Row="1"       x:Name="txtResult" VerticalScrollBarVisibility="Auto"  HorizontalAlignment="Stretch"    TextWrapping="Wrap" AcceptsReturn="True" Text="" VerticalAlignment="Stretch" /></Grid></Grid>
</Window>

后臺代碼:

using PaddleOCRSharp;
using System.Drawing;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace WpfOCR;/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();}//識別private void Button_Click(object sender, RoutedEventArgs e){string imgPath = this.imgDetectionPath.Text;var imagebyte = File.ReadAllBytes(imgPath);Bitmap bitmap = new Bitmap(new MemoryStream(imagebyte));OCRModelConfig config = null;OCRParameter oCRParameter = new OCRParameter();oCRParameter.use_gpu = true;//當使用GPU版本的預測庫時,該參數打開才有效果OCRResult ocrResult = null;PaddleOCREngine engine = new PaddleOCREngine(config, oCRParameter);ocrResult = engine.DetectText(bitmap);List<OcrResult>? ocrResults = System.Text.Json.JsonSerializer.Deserialize<List<OcrResult>>(ocrResult.JsonText);string text = string.Join(System.Environment.NewLine, ocrResults.Select(g => g.Text));this.txtResult.Text = text;}public record OcrResult(string Text);}

待識別圖片
在這里插入圖片描述
識別結果:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78483.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78483.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78483.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

缺省處理、容錯處理

布爾判定 假&#xff1a;false 0 null undefined NaN 可選符.?和&#xff1f;&#xff1f; let obj {name: jim,data: {money: 0,age: 18,fn(a){return a}} }1、如果左側的值為null或者undefined&#xff0c;則使用右側值。需要使用"??" obj?.data?.a…

【Java面試題系列02】Java 集合常見面試題

文章目錄 一、前言&#x1f680;&#x1f680;&#x1f680;二、Java 基礎面試題&#xff1a;??????1、說說 Java 中 HashMap 的原理&#xff1f;2、HashMap 的擴容機制&#xff1f;3、為什么 Java 中 HashMap 的默認負載因子是 0.75?4、JDK 1.8 對 HashMap 除了紅黑樹還…

如何創建并使用極狐GitLab 部署令牌?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 部署令牌 (BASIC ALL) 您可以使用部署令牌來啟用部署任務的身份驗證&#xff0c;而與用戶賬戶無關。在大多數情況下&#xf…

OpenGl ES 3.0 筆記一:初步概念

&#x1f3af; 整體比喻&#xff1a;開一場 3D 打印畫展&#xff01; 想象你在做一件事情&#xff1a;「拿設計圖&#xff0c;把它畫在一張紙上」。 這整個流程就好像 GPU 在渲染一幅畫。 而下面這幾個階段&#xff0c;就是這場「畫展」里每個具體的人或機器要做的事情&#x…

人類社會的第四階段

本書的主旨是探討一場新的權力革命&#xff0c;它將以20世紀民族國家的毀滅為代價&#xff0c; 解放出個體。創新&#xff0c;以前所未有的方式改變了暴力的邏輯&#xff0c;并且正在革新未來的 邊界。如果我們的推論是正確的&#xff0c;你們正站在一場有史以來最宏大的革命的…

位置差在坐標系間的相互轉換

1 NED轉經緯高 &#xff08;n 系下的北向、東向和垂向位置差異&#xff08;單位 m&#xff09;轉化為緯度、經度和高程分量的差異&#xff09; 2 基站坐標轉換 緯度、經度、高程 到 ECEF %緯度、經度、高程 到 ECEF clc; clear; glvs; addpath(genpath(E:\GNSSINS\ACES)…

WPF定義擴展屬性和依賴屬性

WPF擴展屬性與依賴屬性詳解 一、依賴屬性(Dependency Property)詳解 1. 什么是依賴屬性? 依賴屬性是WPF框架的核心特性之一,它允許屬性值依賴于: 父元素的屬性值(繼承)樣式和模板動畫數據綁定資源查找2. 依賴屬性的特點 ??屬性值繼承??:子元素可以繼承父元素的屬性…

邊緣函數:全棧開發的最后1毫秒性能革命

一、邊緣計算的時空折疊術 1. 傳統CDN vs. 智能邊緣網絡 全球電商平臺實測數據&#xff1a; 場景云端處理延遲邊緣處理延遲轉化率提升搜索建議320ms8ms18%個性化推薦450ms12ms27%實時庫存檢查680ms9ms42%欺詐檢測920ms15ms63% 二、邊緣全棧架構的量子糾纏 1. 代碼的時空分布…

Codeforces Round 1021 (Div. 2) D. Baggage Claim(建圖)

每周五篇博客&#xff1a;&#xff08;4/5&#xff09; https://codeforces.com/contest/2098/problem/D 題意 每個機場都有一個行李索賠區&#xff0c;巴爾貝索沃機場也不例外。在某個時候&#xff0c;Sheremetyevo的一位管理員提出了一個不尋常的想法&#xff1a;將行李索…

LLM(大語言模型)技術的最新進展可總結

截至2025年4月26日&#xff0c;LLM&#xff08;大語言模型&#xff09;技術的最新進展可總結為以下關鍵方向&#xff1a; 1. 架構創新與性能突破 多模態能力深化&#xff1a;GPT-4o等模型通過統一架構支持文本、圖像、音頻和視頻的跨模態推理&#xff0c;顯著提升復雜場景下的…

黑馬點評redis改 part 6

GEO數據結構 GEO就是Geolocation的簡寫形式&#xff0c;代表地理坐標。Redis在3.2版本中加入了對GEO的支持&#xff0c;允許存儲地理坐標信息&#xff0c;幫助我們根據經緯度來檢索數據。常見的命令有&#xff1a; GEOADD&#xff1a;添加一個地理空間信息&#xff0c;包含&a…

Spring_MVC 中的 JSON 數據處理與 REST 風格開發

Spring_MVC 中的 JSON 數據處理與 REST 風格開發 一、JSON 格式參數 1. 格式布置 依賴導入 為了處理 JSON 數據&#xff0c;需要在項目中引入 Jackson 庫&#xff0c;它是 Spring_MVC 默認使用的 JSON 處理工具。 <dependency><groupId>com.fasterxml.jackson…

藍橋杯 8. 移動距離

移動距離 原題目鏈接 題目描述 X 星球居民小區的樓房全是一樣的&#xff0c;并且按矩陣樣式排列。樓房的編號為 1, 2, 3, ??。 當排滿一行時&#xff0c;從下一行相鄰的樓往反方向排號。 例如&#xff0c;當小區排號寬度為 6 時&#xff0c;排列如下&#xff1a; 1 2 …

第11章 安全網絡架構和組件(一)

11.1 OSI 模型 協議可通過網絡在計算機之間進行通信。 協議是一組規則和限制&#xff0c;用于定義數據如何通過網絡介質&#xff08;如雙絞線、無線傳輸等&#xff09;進行傳輸。 國際標準化組織(ISO)在20世紀70年代晚期開發了開放系統互連(OSI)參考模型。 11.1.1 OSI模型的…

文獻分享:一種四價雙特異性抗體的功能性和IgG樣穩定性、藥理學和可開發特性研究

背景 雙特異性抗體&#xff08;bsAb&#xff09;是一種有前途的藥物形式&#xff0c;能夠同時結合相同或不同抗原上的兩個不同表位。迄今為止&#xff0c;已有14個雙特異性抗體藥物獲得上市批準&#xff0c;盡管取得了這些成功并且迄今為止設計了多種形式&#xff0c;但具有高…

英文中數字讀法規則

以下是英文中數字讀法的詳細規則&#xff0c;涵蓋基本數字、大數字、小數、分數、序數詞及特殊場景&#xff08;如電話號碼、年份、金額等&#xff09;&#xff1a; 一、基本數字&#xff08;0-10&#xff09; 數字基數詞&#xff08;Cardinal&#xff09;序數詞&#xff08;O…

32BIT的SPI主機控制

SPI傳輸位數可參數化配置。 SPI_MASTER: timescale 1ns / 1ps module SPI_Master #(parameter CLK_FREQ 50,parameter SPI_CLK 1000,parameter CPOL 0,parameter CPHA 0 )(input clk,input rst_n,input WrRdReq, //讀/寫數據請求output …

vue響應式原理——vue2和vue3的響應式實現區別

Vue的核心功能點之一是響應式&#xff1a;Vue 會自動跟蹤 JavaScript 狀態并在其發生變化時響應式地更新 DOM。 簡單的來說就是&#xff0c;頁面的渲染效果會隨著數據變化而變化&#xff0c;不用我們去手動操作DOM樹進行數據變化后的渲染。為了實現這一目的&#xff0c;我們最簡…

Kaamel白皮書:2025版COPPA落地實操指南

COPPA簡介 《兒童在線隱私保護法案》&#xff08;COPPA&#xff09;于1998年在美國頒布&#xff0c;其最初的動因源于人們日益增長的對互聯網上收集兒童個人信息的擔憂。為了響應這一問題&#xff0c;聯邦貿易委員會&#xff08;FTC&#xff09;被授權制定并執行相關法規。COP…

測試基礎筆記第十四天

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 一、字符串1.字符串2.字符串切片3.查找find&#xff08;&#xff09;4.去除兩端空白字符 strip5.字符串轉換大小寫 lower、upper5.拆分 split()6.字符串的其他常見方…