如何在 .NET MAUI 中於 iOS 執行 OCR

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

.NET MAUI(多平台應用程式使用者介面)是 Xamarin.Forms 框架的演進版本,旨在透過 .NET 為 Android、iOS、macOS 和 Windows 建立跨平台應用程式。 MAUI 旨在簡化建置可在多平台運行的原生使用者介面的流程。

IronOcr.iOS 套件為 iOS 帶來 OCR 支援!

IronOCR iOS 套件

IronOcr.iOS 套件可透過 .NET 跨平台專案,在 iOS 裝置上啟用 OCR 功能。 無需翻譯標準版 IronOCR 套件。

Install-Package IronOcr.iOS
用於 PDF 的 C# NuGet 函式庫

透過 NuGet 安裝

Install-Package IronOcr.iOS

建立 .NET MAUI 專案

在"多平台"區段中,選擇 .NET MAUI App 並繼續。

建立 .NET MAUI 應用程式專案

包含 IronOCR.iOS 程式庫

該函式庫可透過多種方式進行整合。 最簡單的方法或許是使用 NuGet。

  1. 在 Visual Studio 中,右鍵點擊"依賴項 > NuGet",然後選擇"管理 NuGet 套件..."。
  2. 選取"瀏覽"標籤頁,並搜尋"IronOcr.iOS"。
  3. 選取"IronOcr.iOS"套件,然後點擊"新增套件"。

下載 IronOcr.iOS 套件

為避免在其他平台上出現問題,請修改 csproj 檔案,僅在針對 iOS 平台時才包含該套件。 為此:

  1. 右鍵點擊專案的 *.csproj 檔案,並選擇"編輯專案檔案"。
  2. 建立一個新的 ItemGroup 元素,內容如下:

    <ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
        <PackageReference Include="IronOcr.iOS" Version="YOUR_PACKAGE_VERSION" />
    </ItemGroup>
    <ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
        <PackageReference Include="IronOcr.iOS" Version="YOUR_PACKAGE_VERSION" />
    </ItemGroup>
    XML
  3. 將"IronOcr.iOS"的 PackageReference 移至我們剛建立的 ItemGroup 內。

上述步驟將防止"IronOcr.iOS"套件在 Android 等平台上使用(若需在 Android 平台上使用,請改為安裝 IronOcr.Android)。

編輯"MainPage.xaml"

編輯 XAML 檔案,以顯示一個按鈕和一個標籤,用以呈現 OCR 結果。 例如:

<?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="MAUIIronOCRiOSSample.MainPage">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button
            Text="Import File"
            Clicked="ReadFileOnImport"
            Grid.Row="0"
            HorizontalOptions="Center"
            Margin="20, 20, 20, 10"/>

        <ScrollView
            Grid.Row="1"
            BackgroundColor="LightGray"
            Padding="10"
            Margin="10, 10, 10, 30">
            <Label x:Name="OutputText"/>
        </ScrollView>
    </Grid>

</ContentPage>
<?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="MAUIIronOCRiOSSample.MainPage">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button
            Text="Import File"
            Clicked="ReadFileOnImport"
            Grid.Row="0"
            HorizontalOptions="Center"
            Margin="20, 20, 20, 10"/>

        <ScrollView
            Grid.Row="1"
            BackgroundColor="LightGray"
            Padding="10"
            Margin="10, 10, 10, 30">
            <Label x:Name="OutputText"/>
        </ScrollView>
    </Grid>

</ContentPage>
XML

編輯 "MainPage.xaml.cs"

首先,請建立 IronTesseract 物件的實例。 請務必在類別中初始化 IronTesseract 一次,如下方程式碼所示。 直接在方法中實例化它並不可行,且可能導致意外錯誤。 接著,使用 FilePicker.PickAsync 方法選取檔案。從 FileResult 開始,開啟讀取串流。 建立一個新的 OcrInput 物件,並使用此物件載入圖片。 使用 Tesseract 實例對圖片執行 OCR 並返回文字。 最後,將翻譯後的文字顯示於標籤中。

目前的實作僅限於影像檔案。 此套件目前尚不支援 PDF 文件。 基於上述考量,任何與 PDF 文件相關的設定應保持停用狀態。

using System;
using IronOcr;
using Microsoft.Maui.Controls;

namespace MAUIIronOCRiOSSample;

public partial class MainPage : ContentPage
{
    // Initialize IronTesseract once in a class
    private IronTesseract ocrTesseract = new IronTesseract();

    public MainPage()
    {
        InitializeComponent();
        // Apply license key
        IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
    }

    private async void ReadFileOnImport(object sender, EventArgs e)
    {
        try
        {
            var options = new PickOptions
            {
                PickerTitle = "Please select a file"
            };

            var result = await FilePicker.PickAsync(options);
            if (result != null)
            {
                using var stream = await result.OpenReadAsync();

                // Instantiate OcrInput
                using var ocrInput = new OcrInput();

                // Load image stream
                ocrInput.LoadImage(stream);

                // Perform OCR
                var ocrResult = ocrTesseract.Read(ocrInput);
                OutputText.Text = ocrResult.Text;
            }
        }
        catch (Exception ex)
        {
            // Handle exceptions
            System.Diagnostics.Debug.WriteLine(ex);
        }
    }
}
using System;
using IronOcr;
using Microsoft.Maui.Controls;

namespace MAUIIronOCRiOSSample;

public partial class MainPage : ContentPage
{
    // Initialize IronTesseract once in a class
    private IronTesseract ocrTesseract = new IronTesseract();

    public MainPage()
    {
        InitializeComponent();
        // Apply license key
        IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
    }

    private async void ReadFileOnImport(object sender, EventArgs e)
    {
        try
        {
            var options = new PickOptions
            {
                PickerTitle = "Please select a file"
            };

            var result = await FilePicker.PickAsync(options);
            if (result != null)
            {
                using var stream = await result.OpenReadAsync();

                // Instantiate OcrInput
                using var ocrInput = new OcrInput();

                // Load image stream
                ocrInput.LoadImage(stream);

                // Perform OCR
                var ocrResult = ocrTesseract.Read(ocrInput);
                OutputText.Text = ocrResult.Text;
            }
        }
        catch (Exception ex)
        {
            // Handle exceptions
            System.Diagnostics.Debug.WriteLine(ex);
        }
    }
}
Imports System
Imports IronOcr
Imports Microsoft.Maui.Controls

Namespace MAUIIronOCRiOSSample

	Partial Public Class MainPage
		Inherits ContentPage

		' Initialize IronTesseract once in a class
		Private ocrTesseract As New IronTesseract()

		Public Sub New()
			InitializeComponent()
			' Apply license key
			IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01"
		End Sub

		Private Async Sub ReadFileOnImport(ByVal sender As Object, ByVal e As EventArgs)
			Try
				Dim options = New PickOptions With {.PickerTitle = "Please select a file"}

				Dim result = Await FilePicker.PickAsync(options)
				If result IsNot Nothing Then
					Dim stream = Await result.OpenReadAsync()

					' Instantiate OcrInput
					Dim ocrInput As New OcrInput()

					' Load image stream
					ocrInput.LoadImage(stream)

					' Perform OCR
					Dim ocrResult = ocrTesseract.Read(ocrInput)
					OutputText.Text = ocrResult.Text
				End If
			Catch ex As Exception
				' Handle exceptions
				System.Diagnostics.Debug.WriteLine(ex)
			End Try
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

最後,將建置目標切換為 iOS 模擬器並執行專案。

執行專案

本文將向您展示如何執行專案並進行 OCR 處理。

Execute .NET MAUI App project

下載 .NET MAUI 應用程式專案

您可以下載本指南的完整程式碼。該檔案以 ZIP 形式提供,您可在 Visual Studio 中將其開啟為 .NET MAUI App 專案。

點擊此處下載專案。

在 Avalonia 中使用 IronOcr.iOS

在 Avalonia 中設定 IronOcr.iOS 的方式與 MAUI 類似,但有一項關鍵差異:除了最新的 .NET SDK 版本外,您還需要安裝 .NET SDK 8.0.101 才能成功執行 IronOcr.iOS。 隨後,IronOcr.iOS 可在 Avalonia 專案中使用,其設定方式與上述說明相同。

若您想在 Android 上執行 OCR,請參閱以下文章以了解更多資訊:"如何在 .NET MAUI 中於 Android 執行 OCR"

常見問題

如何將 OCR 功能整合到 iOS 版的 .NET MAUI 應用程式中?

您可以透過 IronOCR.iOS 套件,將 OCR 功能整合至 iOS 版的 .NET MAUI 應用程式中。請在 Visual Studio 中透過 NuGet 安裝該套件,然後修改專案檔案,使其針對 iOS 平台有條件地包含此套件。使用 IronTesseract 來處理影像並擷取文字。

我可以使用 IronOCR.iOS 套件來處理 PDF 文件嗎?

不,IronOCR.iOS 套件目前僅限於處理圖像檔案,不支援 PDF 文件。請確保在您的專案中已停用所有與 PDF 相關的設定。

使用 .NET MAUI 為 iOS 應用程式設定 OCR 功能需經過哪些步驟?

若要使用 .NET MAUI 為 iOS 應用程式設定 OCR,需透過 NuGet 下載 IronOcr.iOS 套件,修改專案檔案以條件式包含該 iOS 套件,並編輯 MainPage.xaml 和 MainPage.xaml.cs 檔案以建立使用者介面並處理 OCR 作業。

在 Avalonia 專案中使用 IronOCR 還有哪些額外要求?

在 Avalonia 專案中使用 IronOCR 時,您需確保已安裝最新版本的 .NET SDK 以及 .NET SDK 8.0.101。此設定與 MAUI 類似,但需額外安裝此 SDK。

如何在 .NET MAUI 專案中使用 IronOCR 對圖片進行 OCR 處理?

在 .NET MAUI 專案中,請使用 IronTesseract 物件對圖片執行 OCR 處理。透過 FilePicker.PickAsync 選取圖片檔案,將其載入 OcrInput 物件,接著使用 IronTesseract 讀取圖片並擷取文字。

是否有使用 .NET MAUI 在 iOS 上實作 OCR 的範例專案?

是的,您可以從 Iron Software 網站下載使用 IronOCR.iOS 的 .NET MAUI 範例專案。此範例專案以 ZIP 檔案形式提供,您可在 Visual Studio 中開啟該檔案,以加速您的開發流程。

IronOCR 是否容易整合到現有專案中?

是的,IronOCR 非常容易整合到現有的 C# 專案中。透過詳盡的文件與技術支援,開發人員可以輕鬆地將 OCR 功能加入他們的應用程式中。

IronOCR 是否提供任何影像預處理功能?

IronOCR 包含用於提升 OCR 精準度的影像預處理功能,例如雜訊消除、旋轉校正及對比度調整。

IronOCR 能否用於雲端應用程式?

確實,IronOCR 可部署於雲端環境,使其適用於需要 OCR 功能的網路應用程式與服務。

如何使用 IronOCR 提升 OCR 結果的準確性?

若要提升 IronOCR 的 OCR 準確度,請確保輸入影像品質優良、使用適當的語言套件,並善用該程式庫的影像預處理功能。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 5,896,332 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronOcr
執行範例 觀看您的圖片轉為可搜尋文字。