使用 IronOCR 实现 .NET MAUI OCR

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。(从宇宙魔方 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. 视觉工作室 2022(最新版本)

  2. .NET 6 或 7

  3. Visual Studio 中安装的 MAUI 包

  4. 一个在 Visual Studio 中运行的 .NET MAUI 项目

安装 IronOCR

首先要通过 NuGet 包管理控制台安装 IronOCR 库。 右键单击解决方案资源管理器,然后输入以下命令来打开NuGet包控制台,以安装IronOCR库。

Install-Package IronOcr

前端设计

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

使用 IronOCR 的 .NET MAUI OCR 教程 - 图 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#

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

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的低价开始购买。 查看定价计划这里.