在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
随着移动技术的兴起,Scanbot SDK 和 Native SDK 等文档扫描应用程序已成为个人和企业不可或缺的工具或解决方案专家。在本教程中,我们将探讨如何使用最新版本的 .NET 多平台应用程序用户界面创建文档扫描仪应用程序(毛伊岛)和功能强大的 OCR 软件 IronOCR(光学字符识别)译文要求:.NET 库。 .NET MAUI 简化了跨平台移动应用程序(如 Android)的创建,确保在最终用户设备上的无缝部署。本指南结束时,您将能够开发自己的文档扫描仪 SDK 应用程序,轻松地从图像和扫描文件中提取文本。
安装 IronOCR C# 库以使用文档扫描仪 SDK。
使用必要的控件设计 .NET MAUI 表单。
使用 MediaPicker.CapturePhotoAsync 方法捕获相框。
将捕获的照片转换为流。
将流传递给 OcrInput LoadImage方法。
使用 IronTesseract Read方法执行 OCR。
IronOCR是一种先进的光学字符识别技术(光学字符识别)Iron Software LLC 开发的软件,旨在准确、高效地将图像和扫描文件转换为可编辑文本。 OCR 技术彻底改变了企业处理文档的方式,使从扫描文档、PDF 和图像等各种来源提取有价值信息变得更加容易。
IronOCR 凭借其先进的功能、强大的性能和易于集成的特点,在众多 OCR 解决方案中脱颖而出。 无论您是希望将 OCR 功能纳入应用程序的开发人员,还是希望简化数据生成的文档管理流程的企业,IronOCR 都能为您提供全面的解决方案。
以下是 IronOCR 的一些重要关键功能:
高准确性: IronOCR 采用了最先进的算法和机器学习技术,在文本识别方面达到了极高的准确性。 它可以从复杂的文档中准确提取文本,包括 QR 低分辨率或劣质扫描的图像。
多语言支持: IronOCR 的突出特点之一是其广泛的语言支持。 它可以识别超过 127 种语言的文本,适合在不同语言环境下运营的企业。
图像预处理: 为提高准确性,IronOCR 提供各种图像预处理功能,如降噪、对比度调整和纠偏。 这些预处理技术有助于改善 OCR 结果,尤其是在处理扭曲或不完美的图像时。
支持各种文件格式: IronOCR 支持多种文件格式,包括 TIFF、JPEG、PNG 和 PDF。 这种灵活性使用户可以处理不同来源的文档,而不必担心兼容性问题。
定制选项: 开发人员可以根据自己的具体要求定制 IronOCR 的行为。 无论是微调识别参数还是与现有工作流程整合,IronOCR 都能提供高度的灵活性和定制性。
快速、可扩展: IronOCR 对性能进行了优化,即使从海量文档中也能快速提取文本。 无论是处理少量文档还是处理海量文档库,其可扩展的架构都能确保无缝操作。
与 .NET 应用程序集成: IronOCR 可与 .NET 应用程序无缝集成,为开发人员提供易于使用的 API 和库,以便将 OCR 功能集成到他们的软件项目中。 这种紧密集成简化了开发过程,加快了 OCR 应用程序的上市速度。
打开 Visual Studio 2022 并创建一个新的 .NET MAUI App 项目。
选择合适的项目名称并配置项目设置。
右键单击 Visual Studio 中的解决方案。
让我们从设计 MainPage.xaml 的布局开始。 我们将创建一个简单的布局,其中包含一个用于显示捕获照片的图像控件、一个用于拍照的捕获按钮和一个用于显示提取文本的标签。
以下是 MainPage.xaml 的 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"
xmlns:d="http://schemas.microsoft.com/dotnet/2021/maui/design"
x:Class="DocumentScanner.MainPage">
<ScrollView>
<VerticalStackLayout
Padding="30,0"
Spacing="25">
<Image
Source="dotnet_bot.png"
HeightRequest="185"
Aspect="AspectFit"
SemanticProperties.Description="dot net bot in a race car number eight" />
<Label
Text="Welcome to .NET MAUI Document Scanner SDK"
Style="{StaticResource Headline}"
SemanticProperties.HeadingLevel="Level1" />
<Label
Text="Using IronOCR"
Style="{StaticResource SubHeadline}"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome to .NET MAUI Document Scanner SDK" />
<!-- Camera preview -->
<Image x:Name="cameraPreview" />
<!-- Capture button -->
<Button Text="Capture" Clicked="OnCaptureClicked" />
<!-- Text display area -->
<Label x:Name="textLabel"
Text="Recognized Text:"/>
</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"
xmlns:d="http://schemas.microsoft.com/dotnet/2021/maui/design"
x:Class="DocumentScanner.MainPage">
<ScrollView>
<VerticalStackLayout
Padding="30,0"
Spacing="25">
<Image
Source="dotnet_bot.png"
HeightRequest="185"
Aspect="AspectFit"
SemanticProperties.Description="dot net bot in a race car number eight" />
<Label
Text="Welcome to .NET MAUI Document Scanner SDK"
Style="{StaticResource Headline}"
SemanticProperties.HeadingLevel="Level1" />
<Label
Text="Using IronOCR"
Style="{StaticResource SubHeadline}"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome to .NET MAUI Document Scanner SDK" />
<!-- Camera preview -->
<Image x:Name="cameraPreview" />
<!-- Capture button -->
<Button Text="Capture" Clicked="OnCaptureClicked" />
<!-- Text display area -->
<Label x:Name="textLabel"
Text="Recognized Text:"/>
</VerticalStackLayout>
</ScrollView>
</ContentPage>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<?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" xmlns:d="http://schemas.microsoft.com/dotnet/2021/maui/design" x:@Class="DocumentScanner.MainPage"> <ScrollView> <VerticalStackLayout Padding="30,0" Spacing="25"> <Image Source="dotnet_bot.png" HeightRequest="185" Aspect="AspectFit" SemanticProperties.Description="dot net bot in a race car number eight" /> <Label Text="Welcome to .NET MAUI Document Scanner SDK" Style="{StaticResource Headline}" SemanticProperties.HeadingLevel="Level1" /> <Label Text="Using IronOCR" Style="{StaticResource SubHeadline}" SemanticProperties.HeadingLevel="Level2" SemanticProperties.Description="Welcome to .NET MAUI Document Scanner SDK" /> <!-- Camera preview -- > <Image x:Name="cameraPreview" /> <!-- Capture button -- > <Button Text="Capture" Clicked="OnCaptureClicked" /> <!-- Text display area -- > <Label x:Name="textLabel" Text="Recognized Text:"/> </VerticalStackLayout> </ScrollView> </ContentPage>
在此版面中:
为了将文本提取功能集成到我们的 .NET MAUI 文档扫描应用程序中,我们将遵循以下步骤:
Utilize the Camera API:从利用 .NET MAUI 提供的相机 API 开始,直接在应用程序中捕获图像文件。
Pass Image to IronOCR:捕获图像后,将其传递给功能强大的 OCR 库 IronOCR 进行文本提取。 IronOCR 提供了强大的功能,可以高精度地从图像中提取文本。
显示提取的文本:最后,在应用程序用户界面的指定区域显示提取的文本。 这样,用户就可以轻松查看从捕获的图像或 QR 码中提取的文本。
以下是实现这些步骤的相应代码片段:
using IronOcr;
namespace DocumentScanner
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void OnCaptureClicked(object sender, EventArgs e)
{
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
try
{
// Request camera permissions
var status = await Permissions.RequestAsync<Permissions.Camera>();
if (status == PermissionStatus.Granted)
{
// Take photo
var photo = await MediaPicker.CapturePhotoAsync();
if (photo != null)
{
// Display captured photo in Image
cameraPreview.Source = ImageSource.FromStream(() => photo.OpenReadAsync().Result);
using (var stream = await photo.OpenReadAsync())
{
// Use a stream from the captured photo for OCR
var ocr = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage(stream);
var ocrResult = ocr.Read(ocrInput);
if (string.IsNullOrEmpty(ocrResult.Text))
{
await DisplayAlert("Error", "No Text Detected!", "OK");
}
else
{
await DisplayAlert("Text Detected!", ocrResult.Text, "OK");
// Display extracted text
textLabel.Text = ocrResult.Text;
}
}
}
}
else
{
// Camera permission denied
await DisplayAlert("Permission Denied", "Camera permission is required to capture photos.", "OK");
}
}
catch (Exception ex)
{
// Handle exception
await DisplayAlert("Error", ex.Message, "OK");
}
}
}
}
using IronOcr;
namespace DocumentScanner
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void OnCaptureClicked(object sender, EventArgs e)
{
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
try
{
// Request camera permissions
var status = await Permissions.RequestAsync<Permissions.Camera>();
if (status == PermissionStatus.Granted)
{
// Take photo
var photo = await MediaPicker.CapturePhotoAsync();
if (photo != null)
{
// Display captured photo in Image
cameraPreview.Source = ImageSource.FromStream(() => photo.OpenReadAsync().Result);
using (var stream = await photo.OpenReadAsync())
{
// Use a stream from the captured photo for OCR
var ocr = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage(stream);
var ocrResult = ocr.Read(ocrInput);
if (string.IsNullOrEmpty(ocrResult.Text))
{
await DisplayAlert("Error", "No Text Detected!", "OK");
}
else
{
await DisplayAlert("Text Detected!", ocrResult.Text, "OK");
// Display extracted text
textLabel.Text = ocrResult.Text;
}
}
}
}
else
{
// Camera permission denied
await DisplayAlert("Permission Denied", "Camera permission is required to capture photos.", "OK");
}
}
catch (Exception ex)
{
// Handle exception
await DisplayAlert("Error", ex.Message, "OK");
}
}
}
}
Imports IronOcr
Namespace DocumentScanner
Partial Public Class MainPage
Inherits ContentPage
Public Sub New()
InitializeComponent()
End Sub
Private Async Sub OnCaptureClicked(ByVal sender As Object, ByVal e As EventArgs)
License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
Try
' Request camera permissions
Dim status = Await Permissions.RequestAsync(Of Permissions.Camera)()
If status = PermissionStatus.Granted Then
' Take photo
Dim photo = Await MediaPicker.CapturePhotoAsync()
If photo IsNot Nothing Then
' Display captured photo in Image
cameraPreview.Source = ImageSource.FromStream(Function() photo.OpenReadAsync().Result)
Using stream = Await photo.OpenReadAsync()
' Use a stream from the captured photo for OCR
Dim ocr = New IronTesseract()
Dim ocrInput As New OcrInput()
ocrInput.LoadImage(stream)
Dim ocrResult = ocr.Read(ocrInput)
If String.IsNullOrEmpty(ocrResult.Text) Then
Await DisplayAlert("Error", "No Text Detected!", "OK")
Else
Await DisplayAlert("Text Detected!", ocrResult.Text, "OK")
' Display extracted text
textLabel.Text = ocrResult.Text
End If
End Using
End If
Else
' Camera permission denied
Await DisplayAlert("Permission Denied", "Camera permission is required to capture photos.", "OK")
End If
Catch ex As Exception
' Handle exception
Await DisplayAlert("Error", ex.Message, "OK")
End Try
End Sub
End Class
End Namespace
让我们逐步分解代码:
如果文本提取成功,我们会将其显示在名为 textLabel 的 Label 控件中。 如果没有检测到文本,我们将使用DisplayAlert显示错误信息。
有关 IronOCR 的更多强大用法和代码详情,请访问此页代码示例page.
通过本教程,您已经学会了如何在 .NET MAUI 中使用 IronOCR 文档扫描仪 SDK。 文档扫描应用程序有许多实际应用,从纸质文档数字化到从收据和发票中提取存储信息,不一而足。 借助 IronOCR for .NET 的强大功能和 .NET MAUI 的灵活性,您可以构建功能丰富的文档扫描仪应用程序,满足各种使用情况。 尝试不同的功能,探索更多的库,继续磨练自己的技能,创建更多令人印象深刻的应用程序。
有关 IronOCR 功能的更多详细信息,请访问此处文件page.
IronOCR 提供了免费试用在商业模式下测试其完整功能。 其永久 Lite许可证从 $749 开始。 从以下网址下载资料库下载 页,试试看。