使用 IronOCR 实现 .NET MAUI OCR
介绍
Microsoft 发布了 .NET MAUI(多平台应用程序用户界面),这是一个使用 .NET Framework 构建跨平台应用程序的框架。 它允许您使用相同的代码库编写代码,以便在Android、iOS和Windows上运行,从而节省时间、资源和努力。 .NET MAUI 是开源的。 您可以获取带有示例的 .NET MAUI 项目的源代码。 GitHub.
在本教程中,我们将学习如何使用IronOCR库在.NET MAUI上创建OCR处理器应用程序,并提供示例。
如何在 .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 应用程序有一些先决条件。
视觉工作室 2022(最新版本)
.NET 6 或 7
Visual Studio 中安装的 MAUI 包
- 一个在 Visual Studio 中运行的 .NET MAUI 项目
安装 IronOCR
首先要通过 NuGet 包管理控制台安装 IronOCR 库。 右键单击解决方案资源管理器,然后输入以下命令来打开NuGet包控制台,以安装IronOCR库。
Install-Package IronOcr
前端设计
我们将在本节中设计应用程序的前端。 打开 MainPage.xaml 文件。
我们指定一个按钮,帮助我们选择用于OCR的图像或PDF文档。 按钮的 clicked
属性设置为执行 IOCR
函数。 我们将在下一节中定义这个函数。
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
在这里,我们创建一个名为OCRImage
的Image
框。 此图片框将帮助显示所选文件。
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
接下来,我们创建一个Editor
控件。 它将用于显示从图像或PDF文档中提取的文本。
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300"
/>
下面是已完成的 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>
现在,是编写 OCR 功能代码的时候了。
使用IronOCR的OCR代码
打开 "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
让我们分解上面的代码。
以下代码可以帮助使用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()
接下来,"图像 "框控件将被配置为使用上述 "路径 "变量中指定的图像。
OCRImage.Source = path;
OCRImage.Source = path;
OCRImage.Source = path
之后,我们通过创建一个新的 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
输出
在运行项目之后,下面的用户界面会显示出来。当你点击按钮时,它会提示你从任何位置选择图像/ PDF。
在选择图像后,IronOCR处理图像并在编辑器控件中显示识别出的文字。 您可以从编辑器控件中复制文本。
从结果来看,IronOCR在处理带有图案的复杂图像方面表现出色,显示出准确的结果。 IronOCR能够借助其预训练模型检测信件上的红点,并准确选择所需的字母。
结论
如需进一步阅读,请参考此教程中提供了有关如何使用 IronOCR 进行以下操作的更多信息从图像中读取文字.
IronOCR 对开发目的免费。 您可以从$749的低价开始购买。 查看定价计划这里.