IRONBARCODE VERWENDEN

Verwendung eines Dokumentenscanner-SDKs in einer .NET MAUI-Anwendung

Veröffentlicht 29. April 2024
Teilen Sie:

Mit dem Aufkommen der mobilen Technologie sind Dokumentenscanner-Apps wie Scanbot SDK und Native SDKs zu unverzichtbaren Tools oder Lösungsexperten für Privatpersonen und Unternehmen geworden. In diesem Tutorial erfahren Sie, wie Sie eine Dokumentenscanner-App mit der neuesten Version von .NET Multiplatform App UI erstellen (MAUI) und IronOCR, eine leistungsstarke OCR (Optische Zeichenerkennung) bibliothek für .NET. .NET MAUI vereinfacht die Erstellung plattformübergreifender mobiler Anwendungen wie Android und gewährleistet eine nahtlose Bereitstellung auf dem Gerät des Endbenutzers. Am Ende dieses Leitfadens werden Sie in der Lage sein, Ihre eigene Dokumentenscanner-SDK-Anwendung zu entwickeln, die problemlos Text aus Bildern und gescannten Dateien extrahieren kann.

Verwendung eines Dokumentenscanner-SDKs in einer .NET MAUI-Anwendung

  1. Installieren Sie die IronOCR C# Bibliothek, um das Document Scanner SDK zu verwenden.

  2. Entwerfen Sie ein .NET MAUI-Formular mit den erforderlichen Steuerelementen.

  3. Erfassen Sie den Fotorahmen mit der Methode MediaPicker.CapturePhotoAsync.

  4. Konvertieren Sie das aufgenommene Foto in Stream.

  5. Übergeben Sie den Stream an die Methode OcrInput LoadImage.

  6. OCR mit der IronTesseract-Methode Lesen durchführen.

  7. Anzeige des Dokumententextes über die Eigenschaft Text von OcrResult.

IronOCR - Die C# OCR-Bibliothek

IronOCR ist eine hochmoderne optische Zeichenerkennung (OCR) von Iron Software, LLC, entwickelte Software, die Bilder und gescannte Dokumente präzise und effizient in bearbeitbaren Text umwandelt. Die OCR-Technologie hat die Art und Weise, wie Unternehmen ihre Dokumente verarbeiten, revolutioniert und erleichtert die Extraktion wertvoller Informationen aus verschiedenen Quellen wie gescannten Dokumenten, PDF-Dateien und Bildern.

IronOCR zeichnet sich unter den OCR-Lösungen durch seine fortschrittlichen Funktionen, seine robuste Leistung und seine einfache Integration aus. Egal, ob Sie ein Entwickler sind, der OCR-Funktionen in seine Anwendungen integrieren möchte, oder ein Unternehmen, das datengenerierte Dokumentenmanagementprozesse rationalisieren möchte - IronOCR bietet eine umfassende Lösung.

Hauptmerkmale von IronOCR

Hier sind einige wichtige Merkmale von IronOCR:

  1. Hohe Genauigkeit: IronOCR setzt modernste Algorithmen und maschinelle Lerntechniken ein, um eine außergewöhnlich hohe Genauigkeit bei der Texterkennung zu erreichen. Es kann Text aus komplexen Dokumenten genau extrahieren, auch aus Bildern mit geringer QR-Auflösung oder schlechter Scanqualität.

  2. Mehrsprachige Unterstützung: Eines der herausragenden Merkmale von IronOCR ist die umfangreiche Sprachunterstützung. Es kann Text in über 127 Sprachen erkennen und eignet sich daher für Unternehmen, die in unterschiedlichen Sprachumgebungen tätig sind.

  3. Bildvorverarbeitung: Um die Genauigkeit zu erhöhen, bietet IronOCR verschiedene Bildvorverarbeitungsfunktionen, wie z. B. Rauschunterdrückung, Kontrastanpassung und Entzerrung. Diese Vorverarbeitungstechniken tragen zur Verbesserung der OCR-Ergebnisse bei, insbesondere bei verzerrten oder unvollkommenen Bildern.

  4. Unterstützung verschiedener Dateiformate: IronOCR unterstützt eine Vielzahl von Dateiformaten, darunter TIFF, JPEG, PNG und PDF. Diese Flexibilität ermöglicht es den Benutzern, Dokumente aus verschiedenen Quellen zu verarbeiten, ohne sich Gedanken über Kompatibilitätsprobleme zu machen.

  5. Anpassungsmöglichkeiten: Entwickler können das Verhalten von IronOCR an ihre spezifischen Anforderungen anpassen. Ob es um die Feinabstimmung von Erkennungsparametern oder die Integration in bestehende Arbeitsabläufe geht, IronOCR bietet ein hohes Maß an Flexibilität und Anpassungsfähigkeit.

  6. Schnell und skalierbar: IronOCR ist auf Leistung optimiert und ermöglicht eine schnelle Textextraktion auch aus großen Mengen von Dokumenten. Die skalierbare Architektur gewährleistet einen nahtlosen Betrieb, unabhängig davon, ob Sie nur eine Handvoll Dokumente verarbeiten oder riesige Dokumentensammlungen bearbeiten.

  7. Integration mit .NET-Anwendungen: IronOCR lässt sich nahtlos in .NET-Anwendungen integrieren und bietet Entwicklern benutzerfreundliche APIs und Bibliotheken für die Einbindung von OCR-Funktionen in ihre Softwareprojekte. Diese enge Integration vereinfacht die Entwicklung und beschleunigt die Markteinführung von OCR-fähigen Anwendungen.

  8. Dokumentenklassifizierung und Datenextraktion: IronOCR bietet über die einfache Texterkennung hinaus erweiterte Funktionen für die Dokumentenklassifizierung und Datenextraktion. Es kann bestimmte Datenfelder in Dokumenten identifizieren, z. B. Namen, Adressen oder Rechnungsnummern, was eine automatische Datenextraktion und -analyse ermöglicht.

Voraussetzungen

  • Grundkenntnisse in der C#-Programmierung.
  • Visual Studio 2022 in der neuesten Version mit dem .NET MAUI-Workload auf Ihrem System installiert.
  • IronOCR-Paketbibliothek, die über den NuGet Package Manager installiert wurde.

1. Einrichten Ihres .NET MAUI-Projekts

  • Öffnen Sie Visual Studio 2022 und erstellen Sie ein neues .NET MAUI App-Projekt.

    Verwendung eines Dokumentenscanner-SDKs in einer .NET MAUI-Anwendung: Abbildung 1 - .NET MAUI-Anwendungsprojekt

  • Wählen Sie einen geeigneten Projektnamen und konfigurieren Sie Ihre Projekteinstellungen.

    Verwendung eines Dokumentenscanner-SDKs in einer .NET MAUI-Anwendung: Abbildung 2 - Projektkonfiguration

  • Stellen Sie sicher, dass Sie die erforderlichen Android- und iOS-SDKs für die Entwicklung von Zielplattformen installiert haben.

2. Installation der IronOCR-Bibliothek

  • Klicken Sie mit der rechten Maustaste auf Ihre Projektmappe in Visual Studio.

    • Wählen Sie "Manage NuGet Packages for Solutions" und suchen Sie auf der Registerkarte Browse nach "IronOCR".

    Verwendung eines Dokumentenscanner-SDKs in einer .NET MAUI-Anwendung: Abbildung 3 - IronOCR NuGet-Paket

  • Installieren Sie die IronOCR-Bibliothek in Ihrem Projekt.

3. Entwerfen der UI

Beginnen wir mit dem Entwurf des Layouts unserer MainPage.xaml. Wir erstellen ein einfaches Layout mit einem Bildsteuerelement zur Anzeige des aufgenommenen Fotos, einer Aufnahmetaste zur Aufnahme von Fotos und einem Label zur Anzeige des extrahierten Textes.

Hier ist der XAML-Code für MainPage.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>
VB   C#

In diesem Layout:

  • Wir verwenden ein VerticalStackLayout, um die Steuerelemente vertikal zu stapeln.
  • Das Steuerelement Image mit dem Namen capturedImage wird verwendet, um das aufgenommene Foto anzuzeigen.
  • Das Steuerelement Button löst den Ereignishandler OnCaptureClicked aus, wenn es angeklickt wird.
  • Das Steuerelement Label mit dem Namen textLabel wird zur Anzeige des extrahierten Textes verwendet.

Ausgabe

Verwendung eines Dokumentenscanner-SDK in einer .NET MAUI-Anwendung: Abbildung 4 - MainPage.xaml Ausgabe

4. Implementierung der Dokumentenscanfunktionalität

Um die Textextraktionsfunktion in unsere .NET MAUI Document Scanning-Anwendung zu integrieren, gehen wir folgendermaßen vor:

  1. Nutzen Sie die Kamera-API: Nutzen Sie zunächst die von .NET MAUI bereitgestellte Kamera-API, um Bilddateien direkt in Ihrer Anwendung zu erfassen.

  2. Bild an IronOCR übergeben: Sobald ein Bild erfasst wurde, übergeben Sie es an IronOCR, eine leistungsstarke OCR-Bibliothek, zur Textextraktion. IronOCR bietet robuste Funktionen für die Extraktion von Text aus Bildern mit hoher Genauigkeit.

  3. Extrahierten Text anzeigen: Zeigen Sie schließlich den extrahierten Text in dem dafür vorgesehenen Bereich auf der Benutzeroberfläche Ihrer Anwendung an. Dadurch können die Benutzer den aus dem erfassten Bild oder QR-Code extrahierten Text einfach anzeigen.

    Hier ist der entsprechende Codeausschnitt, mit dem diese Schritte umgesetzt werden:

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
VB   C#

Code Erläuterung

Lassen Sie uns den Code Schritt für Schritt aufschlüsseln:

  • In der Datei MainPage.xaml.cs definieren wir die Methode OnCaptureClicked, die ausgelöst wird, wenn der Benutzer auf die Schaltfläche Capture klickt.
  • Innerhalb der Methode OnCaptureClicked wird zunächst der IronOCR-Lizenzschlüssel festgelegt. Dies ist notwendig, um die IronOCR-Bibliothek zu verwenden. Ersetzen Sie "IHR-LIZENZSCHLÜSSEL-HIER " durch Ihren tatsächlichen Lizenzschlüssel.
  • Dann fordern wir die Kamerazulassungen mit Permissions.RequestAsync(). Dadurch wird sichergestellt, dass die App über die erforderlichen Berechtigungen für den Zugriff auf die Kamera des Geräts verfügt.
  • Wir verwenden MediaPicker.CapturePhotoAsync() um ein Foto mit der Kamera des Geräts aufzunehmen. Wenn ein Foto erfolgreich aufgenommen wurde, wird es in einem Bild-Steuerelement namens cameraPreview angezeigt.
  • Wir öffnen einen Stream des aufgenommenen Fotos und verwenden ihn als Eingabe für die OCR mit IronOCR. Wir erstellen eine Instanz von IronTesseract, laden den Bildstrom in ein OcrInput-Objekt und rufen dann die Methode Read auf, um die OCR durchzuführen.
  • Wenn der Text erfolgreich extrahiert wurde, wird er in einem Label-Steuerelement namens textLabel angezeigt. Wenn kein Text gefunden wird, wird mit DisplayAlert eine Fehlermeldung angezeigt.

    Für eine robustere Verwendung von IronOCR und Code-Details besuchen Sie diese Codebeispiele seite.

5. Testen der Dokumentenscanner-App

  • Führen Sie die Anwendung auf verschiedenen Plattformen aus (Android, iOS und Windows) um die plattformübergreifende Kompatibilität zu gewährleisten.
  • Testen Sie verschiedene Szenarien, z. B. das Scannen von Dokumenten mit unterschiedlichen Schriftarten, Größen und Ausrichtungen.
  • Überprüfen Sie, ob der extrahierte Text korrekt ist und auf der Benutzeroberfläche richtig angezeigt wird.

Ausgabe - Gescanntes Dokument ohne Text

Verwendung eines Dokumentenscanner-SDKs in einer .NET MAUI-Anwendung: Abbildung 5 - Ausgabe der gescannten PDF-Erstellung

Ausgabe - Gescanntes Dokument mit Text

Verwendung eines Dokumentenscanner-SDKs in einer .NET MAUI-Anwendung: Abbildung 6 - Gescannte Dokumentation

Schlussfolgerung

In diesem Tutorial haben Sie gelernt, wie Sie IronOCR Document Scanner SDK in .NET MAUI verwenden können. Anwendungen zum Scannen von Dokumenten haben zahlreiche praktische Anwendungen, von der Digitalisierung von Papierdokumenten bis zur Extraktion gespeicherter Informationen aus Quittungen und Rechnungen. Mit den leistungsstarken Funktionen von IronOCR und der Flexibilität von .NET MAUI können Sie funktionsreiche Dokumentenscanner-Anwendungen für verschiedene Anwendungsfälle erstellen. Experimentieren Sie mit verschiedenen Funktionen, erkunden Sie zusätzliche Bibliotheken und verbessern Sie Ihre Fähigkeiten, um noch beeindruckendere Anwendungen zu erstellen.

Ausführlichere Informationen zu den Möglichkeiten von IronOCR finden Sie hier Dokumentation seite.

IronOCR bietet eine kostenlos testen um seine vollständige Funktionalität im kommerziellen Modus zu testen. Sein ewiges Licht Lizenz beginnt bei $749. Laden Sie die Bibliothek herunter von Download Seite und probieren Sie es aus.

< PREVIOUS
Schritte zur Erstellung von Barcode Scanner API für WEB Anwendungen
NÄCHSTES >
Erstellen einer Razor Barcode Generator Web App

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 1,246,703 Lizenzen anzeigen >