UTILISATION D'IRONBARCODE

Comment utiliser un SDK de numérisation de documents dans une application MAUI .NET

Jordi Bardia
Jordi Bardia
avril 29, 2024
Partager:

Avec l'essor de la technologie mobile, les applications de numérisation de documents telles que Scanbot SDK et les SDK natifs sont devenues des outils indispensables pour les particuliers et les entreprises. Dans ce tutoriel, nous allons explorer comment créer une application de scanner de documents en utilisant la dernière version de .NET Multi-platform App UI (MAUI) et IronOCR, une puissante bibliothèque OCR (reconnaissance optique de caractères) pour .NET. .NET MAUI simplifie la création d'applications mobiles multiplateformes telles qu'Android, garantissant un déploiement transparent sur l'appareil de l'utilisateur final. À la fin de ce guide, vous serez en mesure de développer votre propre application SDK de scanner de documents, capable d'extraire facilement du texte à partir d'images et de fichiers numérisés.

Comment utiliser un SDK de numérisation de documents dans une application MAUI .NET

  1. Installez la bibliothèque C# IronOCR pour utiliser le SDK de scanner de documents.

  2. Concevoir un formulaire MAUI .NET avec les contrôles nécessaires.

  3. Capturez le cadre photo en utilisant la méthode MediaPicker.CapturePhotoAsync.

  4. Convertir la photo capturée en Stream.

  5. Passez le flux à la méthode OcrInput LoadImage.

  6. Effectuez la reconnaissance optique de caractères (OCR) en utilisant la méthode Read d'IronTesseract.

  7. Afficher le texte du document en utilisant la propriété Text de OcrResult.

IronOCR - La bibliothèque OCR C#

IronOCR est un logiciel de reconnaissance optique de caractères (OCR) de pointe développé par Iron Software, LLC, conçu pour convertir avec précision et efficacité des images et des documents numérisés en texte modifiable. La technologie OCR a révolutionné la manière dont les entreprises traitent les documents, en facilitant l'extraction d'informations précieuses à partir de diverses sources telles que les documents numérisés, les PDF et les images.

IronOCR se distingue des autres solutions d'OCR par ses fonctionnalités avancées, ses performances robustes et sa facilité d'intégration. Que vous soyez un développeur cherchant à intégrer des fonctions d'OCR dans vos applications ou une entreprise cherchant à rationaliser les processus de gestion des documents générés par les données, IronOCR offre une solution complète.

Principales caractéristiques de l'IronOCR

Voici quelques caractéristiques importantes de l'IronOCR :

  1. Haute Précision : IronOCR utilise des algorithmes de pointe et des techniques d'apprentissage automatique pour atteindre une précision exceptionnelle dans la reconnaissance de texte. Il peut extraire avec précision du texte à partir de documents complexes, y compris des images à faible résolution QR ou des numérisations de mauvaise qualité.

  2. Prise en charge multilingue : L'une des caractéristiques remarquables d'IronOCR est son support linguistique étendu. Il peut reconnaître des textes dans plus de 127 langues, ce qui le rend adapté aux entreprises opérant dans des environnements linguistiques divers.

  3. Prétraitement des images : Pour améliorer la précision, IronOCR offre diverses capacités de prétraitement des images, telles que la réduction du bruit, l'ajustement du contraste et la redressement. Ces techniques de prétraitement permettent d'améliorer les résultats de l'OCR, en particulier lorsqu'il s'agit d'images déformées ou imparfaites.

  4. Prise en charge de divers formats de fichiers : IronOCR prend en charge une large gamme de formats de fichiers, y compris TIFF, JPEG, PNG et PDF. Cette flexibilité permet aux utilisateurs de traiter des documents provenant de différentes sources sans se soucier des problèmes de compatibilité.

  5. Options de personnalisation : Les développeurs peuvent personnaliser le comportement d'IronOCR en fonction de leurs exigences spécifiques. Qu'il s'agisse d'affiner les paramètres de reconnaissance ou de s'intégrer aux flux de travail existants, IronOCR offre un haut degré de flexibilité et de personnalisation.

  6. Rapide et évolutif : IronOCR est optimisé pour la performance, permettant une extraction rapide du texte même à partir de volumes importants de documents. Son architecture évolutive garantit un fonctionnement sans faille, qu'il s'agisse de traiter une poignée de documents ou de gérer des référentiels documentaires massifs.

  7. Intégration avec les applications .NET : IronOCR s'intègre parfaitement aux applications .NET, offrant aux développeurs des API et des bibliothèques faciles à utiliser pour incorporer la fonctionnalité OCR dans leurs projets logiciels. Cette intégration étroite simplifie le développement et accélère la mise sur le marché des applications basées sur l'OCR.

  8. Classification de documents et extraction de données : Au-delà de la reconnaissance de texte basique, IronOCR propose des fonctionnalités avancées pour la classification de documents et l'extraction de données. Il peut identifier des champs de données spécifiques dans les documents, tels que les noms, les adresses ou les numéros de facture, ce qui permet l'extraction et l'analyse automatisées des données.

Conditions préalables

  • Connaissance de base de la programmation en C#.
  • Visual Studio 2022 dernière version installée sur votre système avec la charge de travail .NET MAUI.
  • Bibliothèque de paquets IronOCR installée via le gestionnaire de paquets NuGet.

1. Configuration de votre projet .NET MAUI

  • Ouvrez Visual Studio 2022 et créez un nouveau projet .NET MAUI App.

    Comment utiliser un SDK de scanner de documents dans une application .NET MAUI : Figure 1 - Projet d'application .NET MAUI

  • Choisissez un nom de projet approprié et configurez les paramètres de votre projet.

    Comment utiliser un SDK de scanner de documents dans une application .NET MAUI : Figure 2 - Configuration du projet

  • Assurez-vous d'avoir installé les SDK Android et iOS nécessaires au développement de la plate-forme cible.

2. Installation de la bibliothèque IronOCR

  • Cliquez avec le bouton droit de la souris sur votre solution dans Visual Studio.

    • Sélectionnez "Manage NuGet Packages for Solutions" et dans l'onglet "Browse", recherchez "IronOCR".

    Comment utiliser un SDK de scanner de documents dans une application .NET MAUI : Figure 3 - IronOCR NuGet Package

  • Installez la bibliothèque IronOCR dans votre projet.

3. Conception de l'interface utilisateur

Commençons par concevoir la disposition de notre MainPage.xaml. Nous allons créer une présentation simple avec un contrôle d'image pour afficher la photo capturée, un bouton Capture pour prendre des photos et une étiquette pour afficher le texte extrait.

Voici le code XAML de 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

Dans cette mise en page :

  • Nous utilisons un VerticalStackLayout pour empiler les contrôles verticalement.
  • Le contrôle Image nommé capturedImage est utilisé pour afficher la photo capturée.
  • Le contrôle Button déclenche le gestionnaire d'événements OnCaptureClicked lorsqu'il est cliqué.
  • Le contrôle Label nommé textLabel est utilisé pour afficher le texte extrait.

Sortie

Comment utiliser un SDK de scanner de documents dans une application .NET MAUI : Figure 4 - Sortie MainPage.xaml

4. Mise en œuvre de la fonctionnalité de numérisation des documents

Pour intégrer la fonctionnalité d'extraction de texte dans notre application .NET de numérisation de documents MAUI, nous allons suivre les étapes suivantes :

  1. Utilisez l'API de la caméra : Commencez par exploiter l'API de la caméra fournie par .NET MAUI pour capturer des fichiers image directement dans votre application.

  2. Passer l'image à IronOCR : Une fois l'image capturée, transmettez-la à IronOCR, une puissante bibliothèque OCR, pour extraire le texte. IronOCR offre une fonctionnalité robuste pour l'extraction de texte à partir d'images avec une grande précision.

  3. Afficher le texte extrait : Enfin, affichez le texte extrait dans la zone désignée de l'interface utilisateur de votre application. Cela permet aux utilisateurs de visualiser facilement le texte extrait de l'image capturée ou du code QR.

    Voici l'extrait de code correspondant qui met en œuvre ces étapes :

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

Explication du code

Décomposons le code étape par étape :

  • Dans le fichier MainPage.xaml.cs, nous définissons la méthode OnCaptureClicked, qui sera déclenchée lorsque l'utilisateur cliquera sur le bouton Capture.
  • À l'intérieur de la méthode OnCaptureClicked, nous commençons par définir la clé de licence IronOCR. Ceci est nécessaire pour utiliser la bibliothèque IronOCR. Remplacez "YOUR-LICENSE-KEY-HERE" par votre clé de licence réelle.
  • Ensuite, nous demandons les autorisations de la caméra en utilisant Permissions.RequestAsync(). Cela permet de s'assurer que l'application dispose des autorisations nécessaires pour accéder à l'appareil photo de l'appareil.
  • Nous utilisons MediaPicker.CapturePhotoAsync() pour capturer une photo en utilisant l'appareil photo de l'appareil. Si une photo est capturée avec succès, nous l'affichons dans un contrôle Image nommé cameraPreview.
  • Nous ouvrons un flux à partir de la photo capturée et l'utilisons comme entrée pour l'OCR à l'aide d'IronOCR. Nous créons une instance de IronTesseract, chargeons le flux d'image dans un objet OcrInput, puis appelons la méthode Read pour effectuer la reconnaissance optique de caractères.
  • Si le texte est extrait avec succès, nous l'affichons dans un contrôle Label nommé textLabel. Si aucun texte n'est détecté, nous affichons un message d'erreur en utilisant DisplayAlert.

    Pour une utilisation plus robuste d'IronOCR et pour les détails du code, visitez cette page d'exemples de code.

5. Test de l'application Scanner de documents

  • Exécutez l'application sur différentes plateformes (Android, iOS et Windows) pour assurer la compatibilité multiplateforme.
  • Testez différents scénarios, comme la numérisation de documents avec différentes polices, tailles et orientations.
  • Vérifier que le texte extrait est exact et qu'il s'affiche correctement sur l'interface utilisateur.

Sortie - Document numérisé sans texte

Comment utiliser un SDK de scanner de document dans une application .NET MAUI : Figure 5 - Sortie de création de PDF numérisé

Sortie - Document numérisé avec texte

Comment utiliser un SDK de scanner de documents dans une application .NET MAUI : Figure 6 - Documentation scannée

Conclusion

En suivant ce tutoriel, vous avez appris à utiliser le SDK du scanner de documents IronOCR dans .NET MAUI. Les applications de numérisation de documents ont de nombreuses applications pratiques, allant de la numérisation de documents papier à l'extraction d'informations stockées dans des reçus et des factures. Grâce aux puissantes capacités d'IronOCR et à la flexibilité de .NET MAUI, vous pouvez créer des applications de numérisation de documents riches en fonctionnalités qui répondent à divers cas d'utilisation. Expérimentez différentes fonctionnalités, explorez d'autres bibliothèques et continuez à perfectionner vos compétences pour créer des applications encore plus impressionnantes.

Pour plus d'informations détaillées sur les capacités d'IronOCR, veuillez visiter cette page de documentation.

IronOCR propose une version d'essai gratuite pour tester sa fonctionnalité complète en mode commercial. Sa licence perpétuelle lite commence à partir de $749. Téléchargez la bibliothèque depuis la page de téléchargement et essayez-la.

Jordi Bardia
Ingénieur logiciel
Jordi maîtrise parfaitement Python, C# et C++. Lorsqu'il ne met pas à profit ses compétences chez Iron Software, il se consacre à la programmation de jeux. Partageant des responsabilités en matière de tests de produits, de développement de produits et de recherche, Jordi apporte une valeur ajoutée considérable à l'amélioration continue des produits. Cette expérience variée le stimule et l'engage, et il dit que c'est l'un des aspects qu'il préfère dans son travail chez Iron Software. Jordi a grandi à Miami, en Floride, et a étudié l'informatique et les statistiques à l'université de Floride.
< PRÉCÉDENT
Étapes de création de l'API du lecteur de codes-barres pour l'application WEB
SUIVANT >
Création d'une application Web Razor Barcode Generator