使用 IRONBARCODE

如何在 .NET MAUI 應用程式中使用文件掃描 SDK

Kannaopat Udonpant
坎納帕特·烏頓潘
2024年4月29日
分享:

隨著移動技術的興起,Scanbot SDK 等文件掃描應用程式和本機 SDK 已成為個人和企業不可或缺的工具或解決方案專家。在本教程中,我們將探討如何使用最新版本的 .NET 多平台應用程式使用者介面(MAUI)和強大的 .NET 用 OCR(光學字元識別)庫 IronOCR 來創建文件掃描器應用程式。 .NET MAUI 簡化了跨平台行動應用程式(如 Android)的創建,確保在終端使用者的裝置上無縫部署。透過本指南的學習,您將能夠開發自己的文件掃描器 SDK 應用程式,輕鬆從影像和掃描檔中提取文字。

如何在 .NET MAUI 應用程式中使用文件掃描 SDK

  1. 安裝IronOCR C# 庫以使用文檔掃描 SDK。

  2. 設計 .NET MAUI 表單並添加必要的控制項。

  3. 使用 MediaPicker.CapturePhotoAsync 方法捕捉照片框。

  4. 將拍攝的照片轉換為Stream

  5. 將流傳遞到 OcrInput LoadImage 方法。

  6. 使用 IronTesseract 的 Read 方法執行 OCR。

  7. 使用 OcrResult 的 Text 屬性顯示文件文本。

IronOCR - C#光学字符识别库

IronOCR 是由 Iron Software, LLC 開發的先進光學字符識別(OCR)軟體,旨在準確且有效地將圖片和掃描的文件轉換為可編輯的文字。 OCR 技術已徹底改變企業處理文件的方式,使從掃描文件、PDF 和圖像等各種來源中提取有價值信息變得更加容易。

IronOCR 在 OCR 解決方案中脫穎而出,由於其先進的功能、強大的性能以及易於整合的特性。 無論您是希望將 OCR 功能整合到應用程式中的開發者,還是尋求精簡數據生成的文件管理流程的企業,IronOCR 都提供全面的解決方案。

IronOCR的主要功能

以下是 IronOCR 的一些重要功能:

  1. 高精確度:IronOCR 採用先進的演算法和機器學習技術,以實現卓越的文字識別精確度。 它可以準確地從複雜文件中提取文本,包括含有低解析度或品質不佳掃描的圖片。

  2. 多語言支持:IronOCR 的一大亮點功能是其廣泛的語言支持。 它可以識別超過127種語言的文本,適合於在多語言環境中運營的企業。

  3. 圖像預處理:為了提高準確性,IronOCR 提供了各種圖像預處理功能,如降噪、對比度調整和傾斜校正。 這些預處理技術有助於改善OCR結果,特別是在處理失真或不完美的圖像時。

  4. 支援各種檔案格式:IronOCR 支援多種檔案格式,包括 TIFF、JPEG、PNG 和 PDF。 這種靈活性允許用戶處理來自不同來源的文件,而不必擔心兼容性問題。

  5. 自訂選項:開發人員可以根據其特定需求自訂 IronOCR 的行為。 無論是微調識別參數還是整合現有工作流程,IronOCR 提供高度的靈活性和自定義化。

  6. 快速且具擴展性:IronOCR 已經過性能優化,即使面對大量文檔,也能迅速提取文本。 其可擴展的架構確保操作順暢,無論是處理少量文件還是管理龐大的文件庫。

  7. 與 .NET 應用程式的整合: IronOCR 無縫整合於 .NET 應用程式,為開發者提供易於使用的 API 和函式庫,以便將 OCR 功能引入他們的軟體專案中。 這種緊密集成簡化了開發並加速了具備OCR功能的應用程式的上市時間。

  8. 文件分類和數據提取: 除了基本的文字識別外,IronOCR還提供了高級功能以進行文件分類和數據提取。 它可以識別文件中的特定數據欄位,例如姓名、地址或發票號碼,從而實現自動數據提取和分析。

先決條件

  • C# 程式設計的基礎知識。
  • 在您的系統上安裝了最新版本的 Visual Studio 2022 和 .NET MAUI 工作負載。
  • 通過 NuGet 套件管理器安裝的 IronOCR 套件庫。

1. 設置您的 .NET MAUI 專案

  • 打開 Visual Studio 2022 並創建一個新的 .NET MAUI 應用程式專案。

    如何在.NET MAUI應用程式中使用文件掃描器SDK:圖1 - .NET MAUI應用程式專案

  • 選擇合適的專案名稱並配置您的專案設定。

    如何在.NET MAUI 應用程式中使用文件掃描器 SDK:圖2 - 專案配置

  • 確保您已安裝必要的 Android 和 iOS SDK,用於目標平台設備開發。

2. 安裝 IronOCR 庫

  • 在 Visual Studio 中右鍵點擊您的方案。

    • 選擇「管理解決方案的 NuGet 套件」,在瀏覽選項卡中搜尋「IronOCR」。

    如何在.NET MAUI應用程式中使用文件掃描儀SDK:圖3 - IronOCR NuGet包

  • 將 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

在此佈局中:

  • 我們使用VerticalStackLayout以垂直方式堆疊控制項。
  • Image 控制項名稱為 capturedImage,用於顯示捕獲的照片。
  • Button 控制項在被點擊時會觸發 OnCaptureClicked 事件處理程式。
  • 名為textLabelLabel控制項用於顯示提取的文本。

輸出

如何在.NET MAUI應用程式中使用文件掃描儀SDK:圖4 - MainPage.xaml輸出

4. 實現文件掃描功能

若要將文本提取功能整合到我們的 .NET MAUI 文件掃描應用程式中,我們將遵循以下步驟:

  1. 利用相機 API:首先使用.NET MAUI 提供的相機 API,在您的應用程式中直接捕捉影像檔案。

  2. 將圖像傳遞到 IronOCR:圖像捕獲後,將其傳遞到 IronOCR,一個強大的 OCR 庫,用於文字提取。 IronOCR 提供強大的功能,能夠以高準確度從圖像中提取文字。

  3. 顯示提取的文字:最後,在應用程式使用者介面的指定區域顯示提取的文字。 這允許使用者輕鬆查看從捕獲的圖像或 QR Code 提取的文字。

    以下是實現這些步驟的相應程式碼片段:

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");
            }
        }
    }
}

程式碼說明

讓我們逐步分解代碼:

  • 在 MainPage.xaml.cs 文件中,我們定義了 OnCaptureClicked 方法,這個方法將在使用者點擊 Capture 按鈕時觸發。
  • OnCaptureClicked 方法內,我們首先設置 IronOCR 授權金鑰。 這是使用IronOCR程式庫所必需的。 將「YOUR-LICENSE-KEY-HERE」替換為您的實際授權金鑰。
  • 然後,我們使用Permissions.RequestAsync()請求相機權限。 這確保了應用程式擁有存取裝置相機的必要權限。
  • 我們使用MediaPicker.CapturePhotoAsync()透過設備的相機拍攝照片。 如果照片拍攝成功,我們會在名為cameraPreviewImage控制項中顯示它。
  • 我們從捕獲的照片中開啟一個流,並使用它作為 IronOCR 的光學字符識別輸入。 我們創建一個IronTesseract的實例,將圖像流載入到OcrInput物件中,然後調用Read方法執行光學字符識別(OCR)。
  • 如果文字成功提取,我們會在名為 textLabelLabel 控制項中顯示它。 如果未檢測到文本,我們將使用DisplayAlert顯示錯誤信息。

    有關 IronOCR 的更多使用詳情和程式碼信息,請訪問此程式碼範例頁面。

5. 測試文件掃描應用程式

  • 在各个平台(Android、iOS 和 Windows)上运行应用程序,以确保跨平台兼容性。
  • 測試不同的情境,例如使用不同的字體、大小和方向掃描文件。
  • 確認提取的文字是否準確且正確顯示在用戶界面上。

輸出 - 沒有文字的掃描文件

在 .NET MAUI 應用程序中使用文檔掃描器 SDK:圖 5 - 掃描 PDF 創建輸出

輸出 - 已掃描文件與文字

如何在 .NET MAUI 應用程序中使用文檔掃描器 SDK:圖 6 - 掃描文檔

結論

按照本教程,您已學會如何在 .NET MAUI 中使用 IronOCR 文件掃描器 SDK。 文件掃描應用程式有許多實際應用,包括將紙質文件數位化,以及從收據和發票中提取存儲的信息。 憑藉 IronOCR 的強大功能和 .NET MAUI 的靈活性,您可以構建功能豐富的文檔掃描應用程序,以滿足各種使用情況。 嘗試不同的功能,探索其他庫並不斷提升您的技能,以創建更令人印象深刻的應用程式。

如需有關IronOCR功能的更詳細資訊,請造訪此文件頁面。

IronOCR 提供免費試用,以商業模式測試其完整功能。 其永久的 Lite License 起价为 $749。 從下載頁面下載該庫並試試。

Kannaopat Udonpant
坎納帕特·烏頓潘
軟體工程師
在成為軟體工程師之前,Kannapat 在日本北海道大學完成了環境資源博士學位。在攻讀學位期間,Kannapat 也成為了車輛機器人實驗室的成員,該實驗室隸屬於生物生產工程學系。2022 年,他利用自己的 C# 技能,加入了 Iron Software 的工程團隊,專注於 IronPDF 的開發。Kannapat 珍視這份工作,因為他可以直接向負責撰寫大部分 IronPDF 程式碼的開發人員學習。除了同儕學習外,Kannapat 還享受在 Iron Software 工作的社交方面。當他不在撰寫程式碼或文件時,Kannapat 通常會在 PS5 上玩遊戲或重看《最後生還者》。
< 上一頁
製作網頁應用程式的條碼掃描器 API 的步驟
下一個 >
創建一個Razor條碼生成器的網頁應用程序