使用 IronOCR 進行 .NET MAUI 光學字符識別
介紹
微軟發布了.NET MAUI(多平台應用程式介面),這是一個用於使用.NET Framework構建跨平台應用程式的框架。 它允許您使用相同的代碼庫編寫代碼,以在Android、iOS和Windows上運行,從而節省您的時間、資源和努力。 .NET MAUI 是開源的。 您可以在[GitHub](https://github.com/dotnet/maui" target="_blank" rel="nofollow noreferrer noopener)上獲取 .NET MAUI 專案的原始程式碼及範例。
在本操作指南中,我們將學習如何使用 IronOCR 函式庫在 .NET MAUI 上創建 OCR 處理器應用程式,並提供範例。
如何在 .NET Maui 中執行 OCR
IronOCR:.NET OCR 庫
IronOCR 是一個 .NET OCR NuGet 函式庫,允許開發人員輕鬆將光學字符識別 (OCR) 功能整合到他們的專案中。 使用 IronOCR,PDF 文件可以掃描並轉換成可搜索和可編輯的文字/資料,而不會有任何資料品質的損失。 這讓使用者能夠輕鬆地從PDF文件中找到他們需要的資訊,並在必要時進行更改或更正。
IronOCR 是各平台上可用的 Tesseract 二進制文件中最先進的版本。 它提供更高的速度、準確性以及一個原生的DLL/API,支持所有版本的Tesseract(從Tesseract 3到Tesseract 5),只需一次簡單的安裝/下載。
IronOCR的語言支持非常廣泛,為用戶提供125種國際語言。 工具/DLL 預設安裝了英語。 但是,您可以通過 NuGet 安裝或下載 DLL 來輕鬆添加更多語言。
與 Tesseract 的比較
IronOCR 專門為 C# 開發者設計,可與 .NET 應用程式無縫整合。 相比之下,Tesseract 是一個通用的 OCR 函式庫,它要求開發者自行撰寫包裝程式,以便在 C# 中使用。 此外,由於採用了創新的人工智能算法,IronOCR 提供了比其他庫更高的準確性和速度。
IronOCR提供全面的文件和技術支援,即使是初學者開發者也能迅速上手。
IronOCR 的準確度遠高於 Tesseract。 事實上,它的準確率超過99%,而Tesseract的準確率僅約70.2%至92.9%。 在[YouTube](https://www.youtube.com/watch?v=2QTEb6x8NJ4" target="_blank" rel="nofollow noopener noreferrer)視頻上獲取更多關於IronOCR和Tesseract比較的信息和支援。
創建 OCR MAUI 應用的步驟
按照以下步驟使用 IronOCR 在 .NET MAUI 框架中創建一個 OCR 應用。
先決條件
要在 .NET MAUI 中创建 OCR 应用程序,有一些先决条件。
Visual Studio 2022(最新版本)
.NET 6 或 7
在 Visual Studio 中安裝的 MAUI 套件
- 一個在 Visual Studio 中運行的 .NET MAUI 專案
安裝 IronOCR
首先要使用 NuGet Packages Manager Console 安裝 IronOCR 函式庫。 右鍵單擊解決方案瀏覽器,並輸入以下命令以在 NuGet 包控制台中安裝 IronOCR 庫。
Install-Package IronOcr
前端設計
我們將在本節設計應用程式的前端。 打開MainPage.xaml檔案。

MainPage.xaml
我們指定一個按鈕,用於選擇要進行OCR的圖片或PDF文件。 按鈕的clicked
屬性設置為執行IOCR
函數。 我們將在下一節中定義此函數。
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
在這裡,我們創建了一個名為OCRImage
的Image
框。 此圖像框將幫助顯示所選擇的文件。
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
接下來,我們創建一個Editor
控制項。 它將用來顯示從圖像或 PDF 文件中提取的文字。
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300"
/>
這是完整的 XAML 使用者介面標記。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="IronOCR_MAUI_Test.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300"
/>
</VerticalStackLayout>
</ScrollView>
</ContentPage>
現在,是時候編寫OCR功能的代碼了。
使用 IronOCR 的 OCR 代碼
打開 "MainPage.xaml.cs" 類別檔案並在其中寫入以下函數。

MainPage.xaml.cs
private async void IOCR(object sender, EventArgs e)
{
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
OCRImage.Source = path;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddImage(path);
OcrResult result = ocr.Read(input);
string text = result.Text;
outputText.Text = text;
}
}
private async void IOCR(object sender, EventArgs e)
{
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
OCRImage.Source = path;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddImage(path);
OcrResult result = ocr.Read(input);
string text = result.Text;
outputText.Text = text;
}
}
Private Async Sub IOCR(ByVal sender As Object, ByVal e As EventArgs)
Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
.PickerTitle = "Pick image",
.FileTypes = FilePickerFileType.Images
})
Dim path = images.FullPath.ToString()
OCRImage.Source = path
Dim ocr = New IronTesseract()
Using input = New OcrInput()
input.AddImage(path)
Dim result As OcrResult = ocr.Read(input)
Dim text As String = result.Text
outputText.Text = text
End Using
End Sub
讓我們來分析上面的代碼。
以下代碼片段使用 C# 的 FilePicker
對象來選擇圖像。 FilePicker
標題和 FilePicker
文件類型均設置為值,並附有圖像路徑。
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
.PickerTitle = "Pick image",
.FileTypes = FilePickerFileType.Images
})
Dim path = images.FullPath.ToString()
Image
方塊控制項接下來被配置為使用上述path
變數中指定的圖像。
OCRImage.Source = path;
OCRImage.Source = path;
OCRImage.Source = path
然後,我們透過創建一個新的IronTesseract
類別實例來開始使用IronOCR。 我們使用它從選定圖像中提取文本,然後在編輯器控件中顯示內容。
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddImage(path);
OcrResult result = ocr.Read(input);
string text = result.Text;
outputText.Text = text;
}
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddImage(path);
OcrResult result = ocr.Read(input);
string text = result.Text;
outputText.Text = text;
}
Dim ocr = New IronTesseract()
Using input = New OcrInput()
input.AddImage(path)
Dim result As OcrResult = ocr.Read(input)
Dim text As String = result.Text
outputText.Text = text
End Using
輸出
在執行專案後,會顯示以下的使用者介面。當您點擊按鈕時,系統會提示您從任何位置選取圖片或PDF。

OCR 輸出
在選取圖片後,IronOCR 處理圖片並在編輯器控件中顯示識別出的文字。 您可以從編輯器控件中複製文本。

OCR圖像
從結果來看,IronOCR 在處理帶有圖案的複雜圖像時做得非常出色,展示了精確的結果。 IronOCR 能夠透過其預訓練的模型檢測信件上的紅點,並選擇所需的確切字母。
{i:(在附加調試的情況下以發佈模式運行項目可能會引起問題。 在這種情況下,您可以將專案發佈為未打包的 .NET MAUI 應用程式,如下方連結所示,以確保應用程式能夠正常運行。
結論
欲了解更多資訊,請參閱此教學,其中提供有關如何使用IronOCR從圖像中讀取文本的其他資訊。
IronOCR 的開發用途是免費的。 您可以以非常低的價格購買,起始價格僅為$749。 查看這裡的定價方案。