使用 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 是开源的。您可以从以下网站获取 .NET MAUI 项目的源代码和示例 GitHub.

在本操作指南中,我们将通过示例学习如何使用 IronOCR 库在 .NET MAUI 上创建 OCR 处理器应用程序。

IronOCR:.NET OCR 库

IronOCR 是一个 .NET OCR NuGet 库,可让开发人员轻松集成光学字符识别功能。 (光学字符识别) 功能到他们的项目中。使用 IronOCR,可以扫描 PDF 文档并将其转换为可搜索和可编辑的文本/数据,而不会损失任何数据质量。这样,用户就可以轻松地从 PDF 文档中找到所需的信息,并在必要时进行修改或更正。

IronOCR 是适用于任何平台的最先进的 Tesseract 二进制版本。它提高了速度和精确度,并提供了支持所有版本 Tesseract 的本地 DLL/API。 (从宇宙魔方 3 到宇宙魔方 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 (最新版本)

  1. .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 文件。

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

MainPage.xaml

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

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

在此,我们将创建一个名为 "OCRImage "的 "图像 "框。该图像框将有助于显示所选文件。

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

接下来,我们创建一个 "编辑器 "控件。它将用于显示从图像或 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 对象选取图片。文件选取器 "标题和 "文件选取器 "文件类型以及图像路径都被设置为值。

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#

接下来,"图像 "框控件将被配置为使用上述 "路径 "变量中指定的图像。

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 Tutorial Using IronOCR - Figure 3: OCR 输出

OCR 输出

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

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

OCR 图像

从结果来看,IronOCR 在处理复杂图像时表现出色,显示出精确的结果。IronOCR 能够检测到字母上的红点,并利用其预先训练好的模型准确选择所需的字母。

结论

如需进一步阅读,请参阅 教程 中提供了有关如何使用 IronOCR 进行以下操作的更多信息 从图像中读取文字.

IronOCR 用于开发目的是免费的。您可以从 $749 起的超低价格购买它。查看定价计划 这里.