如何在 .NET MAUI 中对 iOS 设备执行 OCR

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

.NET MAUI(多平台应用程序 UI)是 Xamarin.Forms 框架的演进版本,旨在利用 .NET 创建适用于 Android、iOS、macOS 和 Windows 的跨平台应用程序。 MAUI 旨在简化构建可在多个平台上运行的原生用户界面的过程。

IronOcr.iOS 软件包为 iOS 带来了 OCR 支持!

IronOCR iOS 套件

IronOcr.iOS 包通过 .NET 跨平台项目在 iOS 设备上启用 OCR 功能。 不需要原版 IronOCR 软件包。

安装 IronOcr.iOS 包
C# 用于 PDF 的 NuGet 库

通过 NuGet 安装

安装 IronOcr.iOS 包

创建一个.NET MAUI项目

在多平台部分中,选择.NET MAUI应用程序并继续。

创建 .NET MAUI 应用程序项目

包含 IronOCR.iOS 库

这个库可以通过多种方式添加。 最简单的方法可能是使用NuGet。

  1. 在Visual Studio中,右键单击"Dependencies > Nuget"并选择"Manage NuGet Packages ..."。
  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平台上使用(为此,请改用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应用程序项目

您可以下载本指南的完整代码。 它作为一个压缩文件提供,您可以在Visual Studio中将其打开为.NET MAUI应用程序项目。

点击此处下载项目。

在 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 项目。此示例项目以压缩文件形式提供,您可以在 Visual Studio 中打开,以加速您的开发过程。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 5,167,857 | Version: 2025.11 刚刚发布