Zum Fußzeileninhalt springen
IRONBARCODE VERWENDEN

Wie man ein Dokument-Scanner-SDK in einer .NET MAUI-Anwendung verwendet

Mit dem Aufstieg der mobilen Technologie sind Dokumentenscanner-Apps wie Scanbot SDK und Native SDKs unverzichtbare Werkzeuge für Einzelpersonen und Unternehmen geworden. In diesem Tutorial werden wir erkunden, wie man eine Dokumentenscanner-App mit der neuesten Version von .NET Multi-platform App UI (MAUI) und IronOCR, einer leistungsstarken OCR (Optical Character Recognition) Bibliothek für .NET, erstellt. .NET MAUI vereinfacht die Erstellung von plattformübergreifenden mobilen Apps und sorgt für eine nahtlose Bereitstellung auf Geräten wie Android. Am Ende dieses Leitfadens können Sie Ihre eigene Dokumentenscanner-SDK-App entwickeln, die Text aus Bildern und gescannten Dateien einfach extrahiert.

So verwenden Sie ein Dokumentenscanner-SDK in einer .NET MAUI-Anwendung

  1. Installieren Sie die IronOCR C# Bibliothek, um das Dokumentenscanner-SDK zu verwenden.
  2. Entwerfen Sie ein .NET MAUI-Formular mit den erforderlichen Steuerelementen.
  3. Erfassen Sie ein Foto mit der Methode MediaPicker.CapturePhotoAsync.
  4. Konvertieren Sie das aufgenommene Foto in einen Stream.
  5. Übergeben Sie den Stream an die OcrInput-Methode LoadImage.
  6. Führen Sie OCR mit der IronTesseract-Methode Read aus.
  7. Zeigen Sie den Dokumententext mit der OcrResult-Eigenschaft Text an.

IronOCR - Die C# OCR Bibliothek

IronOCR ist eine hochmoderne Software zur optischen Zeichenerkennung (OCR), die von Iron Software, LLC entwickelt wurde und darauf ausgelegt ist, Bilder und gescannte Dokumente präzise und effizient in bearbeitbaren Text umzuwandeln. Die OCR-Technologie hat die Art und Weise revolutioniert, wie Unternehmen Dokumentenverarbeitung handhaben, und hat es erleichtert, wertvolle Informationen aus verschiedenen Quellen wie gescannten Dokumenten, PDFs und Bildern zu extrahieren.

IronOCR sticht unter den OCR-Lösungen durch seine erweiterten Funktionen, robuste Leistung und einfache Integration hervor. Egal, ob Sie ein Entwickler sind, der OCR-Funktionen in Ihre Anwendungen integrieren möchte, oder ein Unternehmen, das die Dokumentenverwaltung vereinfachen möchte, IronOCR bietet eine umfassende Lösung.

Wichtige Merkmale von IronOCR

  1. Hohe Genauigkeit: IronOCR verwendet hochmoderne Algorithmen und maschinelle Lerntechniken, um außergewöhnliche Genauigkeit bei der Texterkennung zu erreichen. Es kann Text aus komplexen Dokumenten genau extrahieren, einschließlich Bilder mit niedriger Auflösung oder von schlechter Qualität.
  2. Mehrsprachige Unterstützung: IronOCR unterstützt Texterkennung in über 125 Sprachen und ist damit geeignet für Unternehmen, die in verschiedenen Sprachumgebungen tätig sind.
  3. Bildvorverarbeitung: IronOCR bietet verschiedene Bildvorverarbeitungsoptionen wie Rauschreduzierung, Kontrastanpassung und Neigungsausgleich, um die Genauigkeit zu verbessern. Diese Techniken verbessern die OCR-Ergebnisse, insbesondere bei verzerrten oder unvollkommenen Bildern.
  4. Unterstützung für verschiedene Dateiformate: IronOCR unterstützt eine breite Palette von Dateiformaten, einschließlich TIFF, JPEG, PNG und PDF, um Kompatibilität mit verschiedenen Dokumentenquellen zu gewährleisten.
  5. Anpassungsoptionen: Entwickler können das Verhalten von IronOCR anpassen, um spezifische Anforderungen zu erfüllen und Flexibilität bei Erkennungsparametern und Workflow-Integration zu bieten.
  6. Schnell und skalierbar: Optimiert für Leistung, extrahiert IronOCR Text schnell aus großen Mengen von Dokumenten. Seine skalierbare Architektur sorgt für einen nahtlosen Betrieb, unabhängig vom Dokumentenvolumen.
  7. Integration mit .NET-Anwendungen: IronOCR integriert sich nahtlos in .NET-Anwendungen und bietet eine benutzerfreundliche API für die Einbindung von OCR-Funktionalität. Dies vereinfacht die Entwicklung und beschleunigt die Markteinführung für OCR-fähige Anwendungen.
  8. Dokumentenklassifizierung und Datenextraktion: Über die grundlegende Texterkennung hinaus bietet IronOCR erweiterte Funktionen zur Dokumentenklassifizierung und Datenextraktion und identifiziert spezielle Datenfelder wie Namen, Adressen oder Rechnungsnummern.

Voraussetzungen

  • Grundkenntnisse der C# Programmierung.
  • Visual Studio 2022 mit dem .NET MAUI-Arbeitsauslastung installiert.
  • IronOCR-Pakete-Bibliothek installiert über NuGet Package Manager.

1. Einrichten Ihres .NET MAUI-Projekts

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

So verwenden Sie ein Dokumentenscanner-SDK in einer .NET MAUI-Anwendung: Abbildung 1 - .NET MAUI-App-Projekt

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

So verwenden Sie ein Dokumentenscanner-SDK in einer .NET MAUI-Anwendung: Abbildung 2 - Projekteinstellungen

  • Stellen Sie sicher, dass Sie die erforderlichen Android- und iOS-SDKs für die Geräteentwicklung mit Zielplattform installiert haben.

2. IronOCR-Bibliothek installieren

  • Klicken Sie mit der rechten Maustaste auf Ihre Lösung in Visual Studio.
    • Wählen Sie "NuGet-Pakete für die Lösung verwalten" und suchen Sie im Browsetab nach "IronOCR".

So verwenden Sie ein Dokumentenscanner-SDK in einer .NET MAUI-Anwendung: Abbildung 3 - IronOCR NuGet Paket

  • Installieren Sie die IronOCR-Bibliothek in Ihr Projekt.

3. Gestaltung des UI

Lassen Sie uns mit der Gestaltung des Layouts unserer MainPage.xaml beginnen. Wir erstellen ein einfaches Layout mit einem Bildsteuerelement, um das aufgenommene Foto anzuzeigen, einem Aufnahme-Button zum Fotografieren und einem Label zum Anzeigen 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>
XML

In diesem Layout:

  • Wir verwenden ein VerticalStackLayout, um die Steuerelemente vertikal anzuordnen.
  • Das Image-Steuerelement namens cameraPreview wird verwendet, um das aufgenommene Foto anzuzeigen.
  • Die Button-Steuerung löst den OnCaptureClicked Ereignishandler aus, wenn darauf geklickt wird.
  • Die Label-Steuerung namens textLabel wird verwendet, um den extrahierten Text anzuzeigen.

Ausgabe

So verwenden Sie ein Dokumentenscanner-SDK in einer .NET MAUI-Anwendung: Abbildung 4 - MainPage.xaml-Ausgabe

4. Implementierung der Dokumentenscanner-Funktionalität

Um die Textextraktions-Funktionalität in unsere .NET MAUI Dokumentenscanner-App zu integrieren, gehen wir wie folgt vor:

  1. Verwenden der Kamera-API: Nutzen Sie 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 zur Textextraktion und nutzen Sie seine robuste Funktionalität.
  3. Extrahierten Text anzeigen: Zeigen Sie den extrahierten Text im vorgesehenen Bereich auf der Benutzeroberfläche Ihrer App an, damit Benutzer ihn anzeigen können.

Hier ist der entsprechende Codeausschnitt, der diese Schritte implementiert:

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

Code-Erklärung

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

  • In der MainPage.xaml.cs-Datei wird die OnCaptureClicked-Methode definiert, um das Klickevent des Aufnahme-Buttons zu behandeln.
  • Der IronOCR-Lizenzschlüssel wird eingerichtet, der erforderlich ist, um die IronOCR-Bibliothek zu verwenden. Ersetzen Sie "YOUR-LICENSE-KEY-HERE" durch Ihren tatsächlichen Lizenzschlüssel.
  • Kameraberechtigungen werden mit Permissions.RequestAsync() angefragt, um sicherzustellen, dass die App auf die Kamera des Geräts zugreifen kann.
  • MediaPicker.CapturePhotoAsync() wird aufgerufen, um mit der Kamera ein Foto aufzunehmen. Wenn erfolgreich, wird das Foto im cameraPreview-Bildsteuerelement angezeigt.
  • Ein Stream vom aufgenommenen Foto wird geöffnet und als Eingabe für IronOCR verwendet. Dabei wird eine IronTesseract-Instanz erstellt, der Bildstream in ein OcrInput-Objekt geladen und die Read-Methode aufgerufen, um OCR durchzuführen.
  • Der extrahierte Text wird im textLabel-Steuerelement angezeigt, wenn erfolgreich. Wenn kein Text erkannt wird, wird eine Fehlermeldung mit DisplayAlert angezeigt.

Für weitere Erkundungen von IronOCR und zusätzliche Codebeispiele besuchen Sie diese Codebeispiele-Seite.

5. Testen der Dokumentenscanner-App

  • Führen Sie die App auf verschiedenen Plattformen aus (Android, iOS und Windows), um die plattformübergreifende Kompatibilität sicherzustellen.
  • Testen Sie verschiedene Szenarien, wie das Scannen von Dokumenten mit unterschiedlichen Schriftarten, Größen und Ausrichtungen.
  • Verifizieren Sie, dass der extrahierte Text genau ist und korrekt auf der Benutzeroberfläche angezeigt wird.

Ausgabe - Scanned Document without Text

So verwenden Sie ein Dokumentenscanner-SDK in einer .NET MAUI-Anwendung: Abbildung 5 - Ausgabe der gescannten PDF-Erstellung

Ausgabe - Scanned Document with Text

So verwenden Sie ein Dokumentenscanner-SDK in einer .NET MAUI-Anwendung: Abbildung 6 - Gescanntes Dokument

Abschluss

Indem Sie diesem Tutorial folgen, haben Sie gelernt, wie Sie das IronOCR-Dokumentenscanner-SDK in .NET MAUI verwenden. Dokumentenscanner-Apps haben zahlreiche praktische Anwendungen, von der Digitalisierung von Papierdokumenten bis hin zur Extraktion gespeicherter Informationen aus Quittungen und Rechnungen. Mit den leistungsstarken Möglichkeiten von IronOCR und der Flexibilität von .NET MAUI können Sie funktionsreiche Dokumentenscanner-Apps erstellen, die auf verschiedene Anwendungsfälle zugeschnitten sind. Experimentieren Sie mit verschiedenen Funktionen, erkunden Sie zusätzliche Bibliotheken und verbessern Sie weiterhin Ihre Fähigkeiten, um noch beeindruckendere Apps zu erstellen.

Ausführlichere Informationen zu den Möglichkeiten von IronOCR finden Sie auf dieser Dokumentation Seite.

IronOCR bietet eine kostenlose Testversion, um seine vollständige Funktionalität im kommerziellen Modus zu testen. Die lebenslange Lite-Lizenz beginnt bei $799. Laden Sie die Bibliothek von der Download Seite herunter und probieren Sie sie aus.

Häufig gestellte Fragen

Wie kann ich eine Dokumentenscanner-App mit .NET MAUI erstellen?

Sie können eine Dokumentenscanner-App mit .NET MAUI erstellen, indem Sie IronOCR für die optische Zeichenerkennung nutzen. Installieren Sie zunächst IronOCR über den NuGet-Paketmanager in Visual Studio und verwenden Sie .NET MAUI, um die Benutzeroberfläche Ihrer App zu entwerfen und die Scan-Funktionalität mit der IronTesseract Read-Methode zu implementieren.

Was sind die Vorteile der Verwendung von IronOCR für eine Dokumentenscanner-App?

IronOCR bietet hohe Genauigkeit bei der Texterkennung, Unterstützung für mehrere Sprachen und Kompatibilität mit verschiedenen Dateiformaten. Es bietet auch Bildvorverarbeitung, schnelle Leistung und nahtlose Integration mit .NET-Anwendungen, was es zu einer robusten Wahl für eine Dokumentenscanner-App macht.

Wie installiere ich IronOCR in einem .NET MAUI-Projekt?

Um IronOCR in einem .NET MAUI-Projekt zu installieren, öffnen Sie Visual Studio und verwenden Sie den NuGet-Paketmanager, um nach 'IronOCR' zu suchen. Fügen Sie das Paket Ihrem Projekt hinzu, um seine OCR-Funktionen zu nutzen.

Welche Schritte sind am Erfassen und Verarbeiten von Bildern in einer Dokumentenscanner-App beteiligt?

Der Prozess umfasst die Verwendung des MediaPickers zum Erfassen von Bildern, das Konvertieren in ein Stream-Format und das Verwenden von IronOCRs IronTesseract, um die Textextraktion durchzuführen. Der extrahierte Text kann in der Benutzeroberfläche der App angezeigt werden.

Welche Dateiformate werden von IronOCR für die OCR-Verarbeitung unterstützt?

IronOCR unterstützt eine Vielzahl von Dateiformaten, darunter TIFF, JPEG, PNG und PDF, was vielseitige Dokumentenscan- und Textextraktionsmöglichkeiten bietet.

Kann IronOCR OCR in mehreren Sprachen unterstützen?

Ja, IronOCR unterstützt OCR in über 125 Sprachen und eignet sich damit für Anwendungen, die Texterkennung in verschiedenen sprachlichen Kontexten erfordern.

Wie erleichtert .NET MAUI die plattformübergreifende Entwicklung?

.NET MAUI ermöglicht es Entwicklern, plattformübergreifende mobile Anwendungen mit einer einzigen Codebasis zu erstellen, sodass sie nahtlos auf Android-, iOS- und Windows-Geräten bereitgestellt werden können.

Was sind die Voraussetzungen für die Entwicklung einer Dokumentenscanner-App mit .NET MAUI?

Die Voraussetzungen umfassen grundlegende Kenntnisse der C#-Programmierung, Visual Studio 2022 mit der .NET MAUI-Workload und die IronOCR-Bibliothek, die aus NuGet installiert ist.

Wie kann ich die Kompatibilität meiner Dokumentenscanner-App über verschiedene Plattformen hinweg testen?

Sie können Ihre Dokumentenscanner-App über verschiedene Plattformen hinweg testen, indem Sie sie auf Android-, iOS- und Windows-Geräten bereitstellen, um Funktionalität und Genauigkeit in der Textextraktion zu gewährleisten, unter Verwendung der plattformübergreifenden Fähigkeiten von .NET MAUI.

Jordi Bardia
Software Ingenieur
Jordi ist am besten in Python, C# und C++ versiert. Wenn er nicht bei Iron Software seine Fähigkeiten einsetzt, programmiert er Spiele. Mit Verantwortung für Produkttests, Produktentwicklung und -forschung trägt Jordi mit immensem Wert zur kontinuierlichen Produktverbesserung bei. Die abwechslungsreiche Erfahrung hält ihn gefordert und engagiert, ...
Weiterlesen