使用 IronOCR 的 .NET MAUI OCR

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

简介

微软发布了 .NET MAUI(多平台应用程序用户界面),这是一个使用 .NET Framework 构建跨平台应用程序的框架。 它允许您使用同一套代码库编写可在 Android、iOS 和 Windows 上运行的代码,从而节省您的时间、资源和精力。 .NET MAUI 是开源的。 您可以在GitHub上获取 .NET MAUI 项目的源代码及示例。

在本操作指南中,我们将学习如何使用 IronOCR 库在 .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 视频,了解更多关于 IronOCR 和 Tesseract 对比的信息和支持。

创建 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 包管理器控制台安装 IronOCR 库。 右键单击解决方案资源管理器,打开 NuGet 程序包管理器控制台,然后执行以下命令来安装 IronOCR 库:

Install-Package IronOcr

前端设计

本节我们将设计应用程序的前端。 打开MainPage.xaml文件。

.NET MAUI OCR Tutorial Using IronOCR - Figure 1: MainPage.xaml

MainPage.xaml

我们指定一个按钮,帮助我们选择要进行 OCR 识别的图像或 PDF 文档。 按钮的Clicked属性设置为执行IOCR函数,我们将在下一节中定义该函数。

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

在这里,我们创建一个名为OCRImage Image元素。 此图像框将显示所选文件。

<Image
    x:Name="OCRImage"
    SemanticProperties.Description="Selected Image"
    HeightRequest="300"
    HorizontalOptions="Center" />
<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" />
<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 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类文件,并编写以下函数:

.NET MAUI OCR Tutorial Using IronOCR - Figure 2: MainPage.xaml.cs

MainPage.xaml.cs

private async void IOCR(object sender, EventArgs e)
{
    // Prompt user to select an image using FilePicker
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
        PickerTitle = "Pick image",
        FileTypes = FilePickerFileType.Images
    });

    // Get the full path of the selected image
    var path = images.FullPath.ToString();

    // Display the selected image in the Image control
    OCRImage.Source = path;

    // Create an IronTesseract object to perform OCR
    var ocr = new IronTesseract();

    // Perform OCR and extract text from the selected image
    using (var input = new OcrInput())
    {
        input.AddImage(path); // Add image to the OCR input
        OcrResult result = ocr.Read(input); // Perform OCR
        string text = result.Text; // Extract text

        // Display extracted text in the Editor control
        outputText.Text = text; 
    }
}
private async void IOCR(object sender, EventArgs e)
{
    // Prompt user to select an image using FilePicker
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
        PickerTitle = "Pick image",
        FileTypes = FilePickerFileType.Images
    });

    // Get the full path of the selected image
    var path = images.FullPath.ToString();

    // Display the selected image in the Image control
    OCRImage.Source = path;

    // Create an IronTesseract object to perform OCR
    var ocr = new IronTesseract();

    // Perform OCR and extract text from the selected image
    using (var input = new OcrInput())
    {
        input.AddImage(path); // Add image to the OCR input
        OcrResult result = ocr.Read(input); // Perform OCR
        string text = result.Text; // Extract text

        // Display extracted text in the Editor control
        outputText.Text = text; 
    }
}
Private Async Sub IOCR(ByVal sender As Object, ByVal e As EventArgs)
	' Prompt user to select an image using FilePicker
	Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
		.PickerTitle = "Pick image",
		.FileTypes = FilePickerFileType.Images
	})

	' Get the full path of the selected image
	Dim path = images.FullPath.ToString()

	' Display the selected image in the Image control
	OCRImage.Source = path

	' Create an IronTesseract object to perform OCR
	Dim ocr = New IronTesseract()

	' Perform OCR and extract text from the selected image
	Using input = New OcrInput()
		input.AddImage(path) ' Add image to the OCR input
		Dim result As OcrResult = ocr.Read(input) ' Perform OCR
		Dim text As String = result.Text ' Extract text

		' Display extracted text in the Editor control
		outputText.Text = text
	End Using
End Sub
$vbLabelText   $csharpLabel

让我们来分析一下上面的代码:

  • 该代码使用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()
$vbLabelText   $csharpLabel
  • Image控件设置为使用文件路径显示选定的图像。
OCRImage.Source = path;
OCRImage.Source = path;
OCRImage.Source = path
$vbLabelText   $csharpLabel
  • 创建一个IronTesseract对象来执行 OCR。 将选定的图像添加到OcrInput对象中。 调用Read方法从图像中提取文本,然后在Editor控件中显示该文本。
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
$vbLabelText   $csharpLabel

输出

项目运行后,将显示以下用户界面。点击按钮后,系统会提示您从任意位置选择图像/PDF 文件。

.NET MAUI OCR Tutorial Using IronOCR - Figure 3: OCR 输出

OCR 输出

选择图像后,IronOCR 会处理图像并在编辑器控件中显示识别出的单词。 您可以从编辑器控件复制文本。

.NET MAUI OCR Tutorial Using IronOCR - Figure 4: OCR图像

OCR图像

结果表明,IronOCR 在处理具有图案的复杂图像方面表现出色,结果准确无误。 IronOCR 能够利用其预训练模型检测细微之处并选择所需的确切字母。

<{i:(在发布模式下运行项目并附加调试功能可能会导致问题。 在这种情况下,您可以将项目发布为未打包的 .NET MAUI 应用程序(如下链接所示),以确保应用程序正常运行。

结论

如需进一步阅读,请参阅本教程,其中提供了有关如何使用 IronOCR从图像中读取文本的更多信息。

IronOCR 可免费用于开发目的。 您可以以非常低的价格购买,起价仅为$799 。 点击此处查看定价方案。

常见问题解答

.NET MAUI 在应用程序开发中用于什么?

.NET MAUI(多平台应用程序 UI)用于构建具有单一代码库的跨平台应用程序,使开发者能够瞄准 Android、iOS 和 Windows 平台。

开发者如何在 .NET MAUI 应用程序中执行 OCR?

开发者可以在 .NET MAUI 应用程序中集成 IronOCR 执行 OCR,IronOCR 是一个 .NET OCR 库。IronOCR 可以将图像和 PDF 转换为可搜索和可编辑的文本。

在 .NET MAUI 项目中设置 IronOCR 的步骤是什么?

要在 .NET MAUI 项目中设置 IronOCR,请通过 NuGet 安装 IronOCR 库,在 Visual Studio 中配置您的前端,并实现必要的 C# 代码以使用 IronTesseract 对象执行 OCR。

IronOCR 处理文本时的准确度如何?

IronOCR 在处理文本时提供超过 99% 的高准确率,由于其先进的 AI 算法,使其比其他 OCR 解决方案(如 Tesseract)更可靠。

IronOCR 能处理多种语言吗?

是的,IronOCR 支持 125 种国际语言,默认安装英语。其他语言可以通过 NuGet 添加或通过下载特定语言的 DLLs 添加。

如何在 .NET MAUI 应用程序中选择用于 OCR 的图像文件?

在 .NET MAUI 应用程序中,可以使用 FilePicker 类选择用于 OCR 的图像文件,该类允许用户从设备中选择图像进行文本提取。

Editor 控件在显示 OCR 结果中的作用是什么?

.NET MAUI 应用程序中的 Editor 控件用于显示通过 IronOCR 处理的图像中提取的文本,为用户提供查看 OCR 结果的界面。

使用 IronOCR 进行开发是否需要花费?

IronOCR 可免费用于开发用途。然而,生产使用需要许可证,可以以有竞争力的价格获得。

是什么让 IronOCR 成为 C# 开发人员的首选?

IronOCR 是 C# 开发者的首选,因为它与 .NET 应用程序无缝集成,具有高准确性、速度,以及对多种语言的支持,使其优于许多其他 OCR 库。

开发者如何增强他们的 .NET MAUI OCR 应用程序的功能?

开发者可以通过探索 IronOCR 提供的附加资源来增强他们的 .NET MAUI OCR 应用程序,利用其全面的文档和支持以实现先进功能。

Curtis Chau
技术作家

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

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

审核者
Jeff Fritz
Jeffrey T. Fritz
首席项目经理 - .NET 社区团队
Jeff 也是 .NET 和 Visual Studio 团队的首席项目经理。他是 .NET Conf 虚拟会议系列的执行制片人,并主持“Fritz and Friends”直播节目,每周两次与观众一起谈论技术并编写代码。Jeff 撰写研讨会、演示文稿并计划包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP 峰会在内的最大型微软开发者活动的内容。
准备开始了吗?
Nuget 下载 5,167,857 | Version: 2025.11 刚刚发布