使用 IronOCR 進行 .NET MAUI 光學字符識別

This article was translated from English: Does it need improvement?
Translated
View the article in English

介紹

Microsoft 發布了 .NET MAUI(跨平台應用程式使用者介面),是一個用於用 .NET Framework 建立跨平台應用程序的框架。 它允許您使用相同的代碼庫編寫代碼,以在Android、iOS和Windows上運行,從而節省您的時間、資源和努力。 .NET MAUI 是開源的。 您可以在以下位置獲取帶有範例的 .NET MAUI 項目的源代碼: GitHub.

在本操作指南中,我們將學習如何使用 IronOCR 函式庫在 .NET MAUI 上創建 OCR 處理器應用程式,並提供範例。

IronOCR:.NET OCR 庫

IronOCR是一個.NET OCR NuGet庫,使開發人員能夠輕鬆集成光學字符識別(光學字符識別)將功能整合到他們的項目中。 使用 IronOCR,PDF 文件可以掃描並轉換成可搜索和可編輯的文字/資料,而不會有任何資料品質的損失。 這讓使用者能夠輕鬆地從PDF文件中找到他們需要的資訊,並在必要時進行更改或更正。

IronOCR 是各平台上可用的 Tesseract 二進制文件中最先進的版本。 它提供了更高的速度、準確性以及支援所有版本的 Tesseract 的原生 DLL/API。(從 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%。 瞭解更多關於IronOCR和Tesseract比較的信息和支持。 YouTube 影片。

創建 OCR MAUI 應用的步驟

按照以下步驟使用 IronOCR 在 .NET MAUI 框架中創建一個 OCR 應用。

先決條件

要在 .NET MAUI 中创建 OCR 应用程序,有一些先决条件。

  1. Visual Studio 2022(最新版本)

  2. .NET 6 或 7

  3. 在 Visual Studio 中安裝的 MAUI 套件

  4. 一個在 Visual Studio 中運行的 .NET MAUI 專案

安裝 IronOCR

首先要使用 NuGet Packages Manager Console 安裝 IronOCR 函式庫。 右鍵單擊解決方案瀏覽器,並輸入以下命令以在 NuGet 包控制台中安裝 IronOCR 庫。

Install-Package IronOcr

前端設計

我們將在本節設計應用程式的前端。 打開 MainPage.xaml 檔案。

.NET MAUI OCR 教程使用 IronOCR - 圖 1:MainPage.xaml

MainPage.xaml

我們指定一個按鈕,用於選擇要進行OCR的圖片或PDF文件。 按鈕的 clicked 屬性設置為執行 IOCR 函數。 我們將在下一節中定義此函數。

<Button
    x:Name="OCR"
    Text="Click to OCR"
    Clicked="IOCR"
    HorizontalOptions="Center" />
XML

在這裡,我們創建一個名為 OCRImageImage 框。 此圖像框將幫助顯示所選擇的文件。

<Image
    x:Name="OCRImage"
    SemanticProperties.Description="Selected Image"
    HeightRequest="300"
    HorizontalOptions="Center" />
XML

接下來,我們創建一個Editor控件。 它將用來顯示從圖像或 PDF 文件中提取的文字。

<Editor
    x:Name="outputText"
    HorizontalOptions="Center"
    WidthRequest="600"
    HeightRequest="300"
    />
XML

這是完整的 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>
XML

現在,是時候編寫OCR功能的代碼了。

使用 IronOCR 的 OCR 代碼

打開 "MainPage.xaml.cs" 類別檔案並在其中寫入以下函數。

使用 IronOCR 的 .NET MAUI OCR 教程 - 圖 2: 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
VB   C#

讓我們來分析上面的代碼。

以下代碼片段可協助使用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()
VB   C#

Image 框控件接下來被配置為使用上面 path 變量中指定的圖像。

OCRImage.Source = path;
OCRImage.Source = path;
OCRImage.Source = path
VB   C#

之後,我們開始透過創建一個新的 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
VB   C#

輸出

在執行專案後,會顯示以下的使用者介面。當您點擊按鈕時,系統會提示您從任何位置選取圖片或PDF。

.NET MAUI OCR 教程使用 IronOCR - 圖 3:OCR 輸出

OCR 輸出

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

.NET MAUI OCR 教程使用 IronOCR - 圖 4:OCR 圖像

OCR圖像

從結果來看,IronOCR 在處理帶有圖案的複雜圖像時做得非常出色,展示了精確的結果。 IronOCR 能夠透過其預訓練的模型檢測信件上的紅點,並選擇所需的確切字母。

結論

如需進一步閱讀,請參考此教程說明如何使用IronOCR的附加信息從圖像中讀取文本.

IronOCR 的開發用途是免費的。 您可以以非常低的價格購買,起價僅為$749。 查看價格計劃這裡.