USING IRONBARCODE How to Use a Document Scanner SDK in a .NET MAUI Application Jordi Bardia 已更新:七月 2, 2025 Download IronBarcode NuGet 下载 DLL 下载 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article 随着移动技术的兴起,诸如 Scanbot SDK 和 Native SDK 等文档扫描应用程序已成为个人和企业不可或缺的工具。 在本教程中,我们将探讨如何使用最新版本的 .NET 多平台应用程序界面(MAUI)和 IronOCR(一个强大的 .NET 光学字符识别库)创建文档扫描应用程序。 .NET MAUI 简化了跨平台移动应用的创建,确保在诸如 Android 等设备上的无缝部署。 通过本指南的学习,您将能够轻松开发自己的文档扫描 SDK 应用程序,从图像和扫描文件中提取文本。 如何在 .NET MAUI 应用程序中使用文档扫描 SDK 安装 IronOCR C# 库以使用文档扫描 SDK。 使用必要的控件设计 .NET MAUI 表单。 使用 MediaPicker.CapturePhotoAsync 方法拍摄照片。 将拍摄的照片转换为 Stream。 将流传递给 OcrInput LoadImage 方法。 使用 IronTesseract Read 方法执行 OCR。 使用 OcrResult Text 属性显示文档文本。 IronOCR - The C# OCR Library IronOCR 是由 Iron Software, LLC 开发的一款先进的光学字符识别(OCR)软件,旨在准确高效地将图像和扫描文件转换为可编辑文本。 OCR 技术彻底改变了企业的文档处理方式,简化了从扫描文件、PDF 和图像等各种来源中提取有价值信息的过程。 IronOCR 因其先进的功能、强大的性能和易于集成而在 OCR 解决方案中脱颖而出。 无论您是希望将 OCR 功能集成到应用程序中的开发人员,还是寻求简化文档管理流程的企业,IronOCR 都提供全面的解决方案。 IronOCR 的主要功能 高精度: IronOCR 采用先进的算法和机器学习技术,在文本识别方面实现了卓越的精确度。 它能够准确地从复杂文档中提取文本,包括低分辨率或质量较差的扫描图像。 多语言支持: IronOCR 支持超过 125 种语言的文本识别,适合在多语言环境中运营的企业使用。 图像预处理: IronOCR 提供多种图像预处理功能,如噪声消除、对比度调整和倾斜校正,以提高准确性。 这些技术改善了 OCR 结果,特别是在图像失真或不完美的情况下。 支持多种文件格式: IronOCR 支持多种文件格式,包括 TIFF、JPEG、PNG 和 PDF,确保与不同文档源的兼容性。 定制选项: 开发人员可以定制 IronOCR 的行为以满足特定要求,在识别参数和工作流程集成方面提供灵活性。 快速且可扩展: 为优化性能,IronOCR 能迅速从大量文档中提取文字。 其可扩展的架构确保无论文档量如何,都能顺畅运行。 与 .NET 应用程序集成: IronOCR 无缝集成到.NET 应用程序中,提供易于使用的 API 以包含 OCR 功能。 这简化了开发,并加快了启用 OCR 应用程序的上市时间。 文档分类和数据提取: 除了基本的文本识别外,IronOCR 还提供用于文档分类和数据提取的高级功能,识别特定的数据字段,如名称、地址或发票号。 前提条件 基本的 C# 编程知识。 已安装 .NET MAUI 工作负载的 Visual Studio 2022。 通过 NuGet 包管理器安装的 IronOCR 包库。 1. 设置您的 .NET MAUI 项目 打开 Visual Studio 2022 并创建一个新的 .NET MAUI 应用程序项目。 选择合适的项目名称并配置您的项目设置。 确保您已安装必要的 Android 和 iOS SDK 以进行目标平台设备开发。 2. 安装 IronOCR 库 在 Visual Studio 中右键点击您的解决方案。 选择"管理解决方案的 NuGet 包"并在浏览选项卡中搜索 "IronOCR"。 将 IronOCR 库安装到您的项目中。 3. 设计 UI 让我们从设计我们的 MainPage.xaml 布局开始。 我们将创建一个简单的布局,其中包含用于显示拍摄照片的图像控件、用于拍照的 Capture 按钮和用于显示提取文本的标签。 这是 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> XML 在这个布局中: 我们使用 VerticalStackLayout 纵向排列控件。 名为 cameraPreview 的 Image 控件用于显示拍摄的照片。 Button 控件在点击时触发 OnCaptureClicked 事件处理器。 名为 textLabel 的 Label 控件用于显示提取的文本。 输出 4. 实施文档扫描功能 要将文本提取功能集成到我们的 .NET MAUI 文档扫描应用程序中,我们将按照以下步骤进行: 利用相机 API: 利用 .NET MAUI 提供的相机 API 直接在您的应用程序中捕获图像文件。 将图像传给 IronOCR: 图像捕获后,将其传递给 IronOCR 进行文本提取,利用其强大的功能。 显示提取的文本: 在应用程序用户界面的指定区域内显示提取的文本,以供用户查看。 以下是实现此步骤的相应代码片段: 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 $vbLabelText $csharpLabel 代码解释 让我们逐步解析代码: 在 MainPage.xaml.cs 文件中,定义了 OnCaptureClicked 方法以处理 Capture 按钮的点击事件。 设置 IronOCR 许可证密钥,这是使用 IronOCR 库必要的。 将 "YOUR-LICENSE-KEY-HERE" 替换为您的实际许可证密钥。 使用 Permissions.RequestAsync() 请求相机权限,以确保应用能够访问设备的摄像头。 调用 MediaPicker.CapturePhotoAsync() 使用摄像头拍摄照片。 如果成功,照片将在 cameraPreview Image 控件中显示。 从拍摄的照片中打开流,以便作为 IronOCR 的输入,创建一个 IronTesseract 实例,将图像流加载到一个 OcrInput 对象中,并调用 Read 方法执行 OCR。 如果成功,提取出的文本将显示在 textLabel 控件中。 如果未检测到文本,则使用 DisplayAlert 显示错误消息。 欲了解更多关于 IronOCR 的探索和其他代码示例,请访问此代码示例页面。 5. 测试文档扫描应用程序 在各种平台上运行应用程序(如 Android、iOS 和 Windows)以确保跨平台兼容性。 测试不同场景,如扫描带有各种字体、大小和方向的文档。 确认提取的文本在 UI 上准确显示。 输出 - Scanned Document without Text 输出 - Scanned Document with Text 结论 通过本教程,您已学习如何在 .NET MAUI 中使用 IronOCR 文档扫描 SDK。 文档扫描应用在实际应用中有广泛用途,从数字化纸质文件到从收据和发票中提取储存的信息。 利用 IronOCR 的强大功能和 .NET MAUI 的灵活性,您可以构建符合各种用例的功能丰富的文档扫描应用程序。 尝试不同的功能,探索其他库,并继续磨练技能以创建更令人印象深刻的应用程序。 有关 IronOCR 功能的更多详细信息,请访问此文档页面。 IronOCR 提供免费试用以商业模式测试其完整功能。 其永久轻量级许可证起价为 $799。 从下载页面下载库并试用。 常见问题解答 我如何使用 .NET MAUI 创建文档扫描器应用程序? 您可以通过利用 IronOCR 进行光学字符识别来使用 .NET MAUI 创建文档扫描器应用程序。首先在 Visual Studio 中通过 NuGet 包管理器安装 IronOCR,然后使用 .NET MAUI 设计应用程序的用户界面,并使用 IronTesseract 的 Read 方法实现扫描功能。 使用 IronOCR 作为文档扫描器应用程序的好处是什么? IronOCR 提供高精度的文本识别、多语言支持和与各种文件格式的兼容性。它还提供图像预处理、快速性能和与 .NET 应用程序的无缝集成,使其成为文档扫描器应用程序的强大选择。 如何在 .NET MAUI 项目中安装 IronOCR? 要在 .NET MAUI 项目中安装 IronOCR,请打开 Visual Studio 并使用 NuGet 包管理器搜索 'IronOCR'。将包添加到您的项目中以开始使用其 OCR 功能。 在文档扫描器应用程序中捕获和处理图像涉及哪些步骤? 该过程包括使用 MediaPicker 捕获图像,将它们转换为流格式,然后使用 IronOCR 的 IronTesseract 执行文本提取。提取的文本可以在应用程序的用户界面中显示。 IronOCR 支持哪些文件格式进行 OCR 处理? IronOCR 支持广泛的文件格式,包括 TIFF、JPEG、PNG 和 PDF,允许多功能的文档扫描和文本提取功能。 IronOCR 能否支持多语言 OCR? 是的,IronOCR 支持 125 种以上的语言 OCR,非常适合需要在各种语言环境中进行文本识别的应用程序。 .NET MAUI 如何促进跨平台开发? .NET MAUI 使开发人员能够用单一代码库构建跨平台移动应用程序,允许在 Android、iOS 和 Windows 设备上无缝部署。 使用 .NET MAUI 开发文档扫描器应用程序的先决条件是什么? 先决条件包括 C# 编程的基本知识、安装 .NET MAUI 工作负载的 Visual Studio 2022,以及从 NuGet 安装的 IronOCR 库。 我如何测试文档扫描器应用程序跨平台的兼容性? 您可以通过将文档扫描器应用程序部署到 Android、iOS 和 Windows 设备上来测试跨平台的兼容性,以确保功能和文本提取的准确性,利用 .NET MAUI 的跨平台能力。 Jordi Bardia 立即与工程团队聊天 软件工程师 Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 利用这些技能时,他就在游戏编程。分享产品测试、产品开发和研究的责任,Jordi 在持续的产品改进中增加了巨大的价值。多样的经验使他面临挑战并保持投入,他表示这是在 Iron Software 工作的最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。 相关文章 已发布十月 19, 2025 How to Print Barcodes in Crystal Reports with VB.NET Generate and print barcodes in Crystal Reports using VB.NET. Step-by-step tutorial with IronBarcode SDK for reliable barcode integration. 阅读更多 已发布九月 29, 2025 IronBarcode vs. Open-Source Barcode Readers in .NET Learn how to read barcodes in C# using IronBarcode 阅读更多 已发布九月 29, 2025 How to Scan Barcodes in an ASP.NET Application Learn how to Scan Barcodes in ASP.NET using IronBarcode 阅读更多 Steps to create Barcode Scanner API for WEB ApplicationCreating a Razor Barcode Generator ...
已发布十月 19, 2025 How to Print Barcodes in Crystal Reports with VB.NET Generate and print barcodes in Crystal Reports using VB.NET. Step-by-step tutorial with IronBarcode SDK for reliable barcode integration. 阅读更多
已发布九月 29, 2025 IronBarcode vs. Open-Source Barcode Readers in .NET Learn how to read barcodes in C# using IronBarcode 阅读更多
已发布九月 29, 2025 How to Scan Barcodes in an ASP.NET Application Learn how to Scan Barcodes in ASP.NET using IronBarcode 阅读更多