使用IRONBARCODE 如何在.NET MAUI應用程式中使用文件掃描SDK Jordi Bardia 更新日期:7月 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多平台應用程式UI(MAUI)和IronOCR這個強大的.NET光學字符識別(OCR)庫創建文件掃描應用程序。 .NET MAUI簡化了跨平台移動應用程式的創建,確保在如Android等設備上的無縫部署。 完成本指南後,您將能夠開發自己的文件掃描SDK應用程序,輕鬆地從圖片和掃描文件中提取文本。 如何在.NET MAUI應用程式中使用文件掃描SDK 安裝IronOCRC#庫以使用文件掃描SDK。 設計具備必要控制項的.NET MAUI表單。 使用MediaPicker.CapturePhotoAsync方法拍照。 將捕獲的照片轉換為Stream。 將流傳遞給OcrInput的LoadImage方法。 使用IronTesseract的Read方法進行光學字符識別(OCR)。 使用OcrResult的Text屬性顯示文件文本。 IronOCR - C#的OCR庫 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. 設計用戶界面 讓我們從設計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> 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方法來處理捕獲按鈕的點擊事件。 設置IronOCR的許可證密鑰,這是使用IronOCR庫所需的。 將"YOUR-LICENSE-KEY-HERE"替換為您的實際許可證密鑰。 使用Permissions.RequestAsync()請求攝像頭權限,以確保應用程序可以訪問設備的攝像頭。 調用MediaPicker.CapturePhotoAsync()使用攝像頭拍攝照片。 如果成功,該照片將顯示在cameraPreview圖片控制項中。 打開來自捕獲照片的流並用作IronOCR的輸入,創建一個IronTesseract實例,將圖像流加載到一個OcrInput對象中,然後調用Read方法進行光學字符識別(OCR)。 如果成功,提取的文本顯示在textLabel控制項中。 如果未檢測到文本,將使用DisplayAlert顯示錯誤消息。 要進一步探索IronOCR和其他代碼示例,請訪問這個代碼示例頁面。 5. 測試文件掃描應用程式 在各種平台(如Android、iOS和Windows)上運行應用程式,以確保跨平台兼容性。 測試不同的場景,例如掃描具有不同字體、大小和方向的文件。 驗證提取的文本是否準確,並且正確顯示在用戶界面上。 輸出 - Scanned Document without Text 輸出 - Scanned Document with Text 結論 通過遵循本教程,您已經學會了如何在.NET MAUI中使用IronOCR文件掃描SDK。 文件掃描應用程序有許多實際應用,例如將紙質文件數位化,或從收據和發票中提取存儲的信息。 利用IronOCR的強大功能和.NET MAUI的靈活性,您可以構建功能豐富的文件掃描應用程序,以適應各種使用案例。 嘗試不同的功能,探索附加庫,繼續提升您的技能以創建更為精彩的應用程式。 有關IronOCR功能的更詳細信息,請訪問此文檔頁面。 IronOCR提供免費試用以商業模式測試其完整功能。 其永久lite許可證從$799起。 從下載頁面下載庫並試試。 常見問題解答 如何使用 .NET MAUI 創建文檔掃描應用? 您可以通過利用 IronOCR 進行光學字符識別來使用 .NET MAUI 創建文檔掃描應用。首先透過 Visual Studio 的 NuGet 套件管理器安裝 IronOCR,然後使用 .NET MAUI 設計您的應用 UI,並使用 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 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 發表日期 10月 19, 2025 如何使用VB.NET在Crystal Reports中打印條碼 在VB.NET中使用IronBarcode SDK在Crystal Reports中生成和打印條碼的分步教程,確保可靠的條碼集成。 閱讀更多 發表日期 9月 29, 2025 IronBarcode對比.NET中的開源條碼閱讀器 了解如何使用IronBarcode在C#中讀取條碼 閱讀更多 發表日期 9月 29, 2025 如何在ASP.NET應用程式中掃描條碼 了解如何在ASP.NET中使用IronBarcode掃描條碼 閱讀更多 為WEB應用程式創建條碼掃描器API的步驟創建Razor條碼生成器Web應用
發表日期 10月 19, 2025 如何使用VB.NET在Crystal Reports中打印條碼 在VB.NET中使用IronBarcode SDK在Crystal Reports中生成和打印條碼的分步教程,確保可靠的條碼集成。 閱讀更多