Passer au contenu du pied de page
UTILISATION DE IRONBARCODE

Comment utiliser un SDK de scanner de documents dans une application .NET MAUI

Avec l'essor de la technologie mobile, les applications de numérisation de documents telles que Scanbot SDK et 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, assurant un déploiement fluide sur des appareils tels qu'Android. À la fin de ce guide, vous serez capable de développer votre propre application SDK de scanner de documents capable d'extraire du texte à partir d'images et de fichiers numérisés avec facilité.

Comment utiliser un SDK de scanner de documents dans une application .NET MAUI

  1. Installez la bibliothèque C# IronOCR pour utiliser le SDK de scanner de documents.
  2. Concevez un formulaire .NET MAUI avec les contrôles nécessaires.
  3. Capturez une photo en utilisant la méthode MediaPicker.CapturePhotoAsync.
  4. Convertissez la photo capturée en un Stream.
  5. Passez le flux à la méthode OcrInput LoadImage.
  6. Effectuez l'OCR à l'aide de la méthode IronTesseract Read.
  7. Affichez le texte du document en utilisant la propriété OcrResult Text.

IronOCR - La bibliothèque OCR C#

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

IronOCR se démarque parmi les solutions OCR grâce à ses fonctionnalités avancées, ses performances robustes et sa facilité d'intégration. Que vous soyez un développeur cherchant à intégrer des fonctionnalités OCR dans vos applications ou une entreprise cherchant à rationaliser les processus de gestion documentaire, IronOCR offre une solution complète.

Fonctionnalités clés d'IronOCR

  1. Haute précision : IronOCR utilise des algorithmes et des techniques d'apprentissage automatique de pointe 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 de basse résolution ou de mauvais qualité.
  2. Support multilingue : IronOCR prend en charge la reconnaissance de texte dans plus de 125 langues, ce qui le rend adapté aux entreprises opérant dans des environnements linguistiques divers.
  3. Prétraitement des images : IronOCR fournit diverses capacités de prétraitement des images, telles que la réduction du bruit, l'ajustement du contraste et le désenchevêtrement, pour améliorer la précision. Ces techniques améliorent les résultats de l'OCR, notamment avec des images déformées ou imparfaites.
  4. Support de divers formats de fichiers : IronOCR prend en charge une large gamme de formats de fichiers, y compris TIFF, JPEG, PNG et PDF, garantissant la compatibilité avec différentes sources de documents.
  5. Options de personnalisation : Les développeurs peuvent personnaliser le comportement d'IronOCR pour répondre à des exigences spécifiques, offrant une flexibilité dans les paramètres de reconnaissance et l'intégration des flux de travail.
  6. Rapide et évolutif : Optimisé pour la performance, IronOCR extrait rapidement du texte de gros volumes de documents. Son architecture évolutive garantit un fonctionnement fluide, quelle que soit la quantité de documents.
  7. Intégration avec les applications .NET : IronOCR s'intègre parfaitement avec les applications .NET, fournissant une API facile à utiliser pour incorporer la fonctionnalité OCR. Cela simplifie le développement et accélère la mise sur le marché des applications dotées de capacités OCR.
  8. Classification des documents et extraction des données : Au-delà de la reconnaissance de texte de base, IronOCR offre des fonctionnalités avancées pour la classification des documents et l'extraction de données, identifiant des champs de données spécifiques comme des noms, des adresses ou des numéros de factures.

Prérequis

  • Connaissances de base en programmation C#.
  • Visual Studio 2022 installé avec la charge de travail .NET MAUI.
  • Bibliothèque de packages IronOCR installée via le gestionnaire de packages NuGet.

1. Configuration de votre projet .NET MAUI

  • Ouvrez Visual Studio 2022 et créez un nouveau projet d'application .NET MAUI.

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 vos paramètres de projet.

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

  • Assurez-vous d'avoir les SDK Android et iOS nécessaires installés pour le développement d'appareils cible.

2. Installation de la bibliothèque IronOCR

  • Faites un clic droit sur votre solution dans Visual Studio.
    • Sélectionnez "Gérer les packages NuGet pour la solution" et dans l'onglet Parcourir, recherchez "IronOCR".

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

  • Installez la bibliothèque IronOCR dans votre projet.

3. Conception de l'interface utilisateur

Commençons par concevoir la mise en page de notre MainPage.xaml. Nous allons créer une mise en page 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 pour 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

Dans cette mise en page :

  • Nous utilisons un VerticalStackLayout pour empiler les contrôles verticalement.
  • Le contrôle Image nommé cameraPreview 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 de documents

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

  1. Utiliser l'API Caméra : Utilisez l'API de 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, passez-la à IronOCR pour l'extraction de texte, en utilisant sa fonctionnalité robuste.
  3. Afficher le texte extrait : Affichez le texte extrait dans la zone désignée de l'interface utilisateur de votre application pour que l'utilisateur puisse le voir.

Voici le fragment de code correspondant mettant 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

Analysons le code étape par étape :

  • Dans le fichier MainPage.xaml.cs, la méthode OnCaptureClicked est définie pour gérer l'événement de clic du bouton Capture.
  • La clé de licence IronOCR est configurée, nécessaire pour utiliser la bibliothèque IronOCR. Remplacez "YOUR-LICENSE-KEY-HERE" par votre véritable clé de licence.
  • Les autorisations de caméra sont demandées à l'aide de Permissions.RequestAsync() pour s'assurer que l'application peut accéder à la caméra de l'appareil.
  • MediaPicker.CapturePhotoAsync() est appelé pour prendre une photo à l'aide de la caméra. En cas de succès, la photo est affichée dans le contrôle Image cameraPreview.
  • Un flux à partir de la photo capturée est ouvert et utilisé comme entrée pour IronOCR, créant une instance IronTesseract, chargeant le flux d'image dans un objet OcrInput, et appelant la méthode Read pour effectuer l'OCR.
  • Le texte extrait est affiché dans le contrôle textLabel en cas de succès. Si aucun texte n'est détecté, un message d'erreur est affiché à l'aide de DisplayAlert.

Pour explorer davantage IronOCR et voir d'autres exemples de code, visitez cette page d'exemples de code.

5. Tester l'application de numérisation de documents

  • Exécutez l'application sur diverses plateformes (Android, iOS et Windows) pour garantir la compatibilité multiplateforme.
  • Testez différents scénarios, tels que la numérisation de documents avec différentes polices, tailles et orientations.
  • Vérifiez que le texte extrait est précis et affiché correctement sur l'interface utilisateur.

Sortie - Scanned Document without Text

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

Sortie - Scanned Document with Text

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

Conclusion

En suivant ce tutoriel, vous avez appris comment utiliser le SDK de scanner de documents IronOCR dans .NET MAUI. Les applications de numérisation de documents ont de nombreuses applications pratiques, de la numérisation de documents papier à l'extraction d'informations stockées à partir de reçus et de factures. En utilisant les puissantes capacités d'IronOCR et la flexibilité de .NET MAUI, vous pouvez créer des applications de scanner de documents riches en fonctionnalités qui répondent à divers cas d'utilisation. Expérimentez avec différentes fonctionnalités, explorez des bibliothèques supplémentaires 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 offre un essai gratuit pour tester sa fonctionnalité complète en mode commercial. Sa licence lite perpétuelle commence à partir de $799. Téléchargez la bibliothèque depuis la page de téléchargement et essayez-la.

Questions Fréquemment Posées

Comment puis-je créer une application de scanner de documents avec .NET MAUI ?

Vous pouvez créer une application de scanner de documents avec .NET MAUI en utilisant IronOCR pour la reconnaissance optique de caractères. Commencez par installer IronOCR via le gestionnaire de packages NuGet dans Visual Studio, puis utilisez .NET MAUI pour concevoir l'interface utilisateur de votre application, et implémentez la fonctionnalité de numérisation avec la méthode Read d'IronTesseract.

Quels sont les avantages d'utiliser IronOCR pour une application de scanner de documents ?

IronOCR offre une grande précision dans la reconnaissance de texte, la prise en charge multilingue et la compatibilité avec divers formats de fichiers. Il propose également des prétraitements d'images, des performances rapides et une intégration transparente avec les applications .NET, en faisant un choix robuste pour une application de scanner de documents.

Comment installer IronOCR dans un projet .NET MAUI ?

Pour installer IronOCR dans un projet .NET MAUI, ouvrez Visual Studio et utilisez le gestionnaire de packages NuGet pour rechercher 'IronOCR'. Ajoutez le package à votre projet pour commencer à utiliser ses fonctionnalités OCR.

Quelles sont les étapes pour capturer et traiter des images dans une application de scanner de documents ?

Le processus consiste à utiliser le MediaPicker pour capturer des images, les convertir en format de flux, puis utiliser IronTesseract d'IronOCR pour effectuer l'extraction de texte. Le texte extrait peut être affiché dans l'interface utilisateur de l'application.

Quels formats de fichiers sont pris en charge par IronOCR pour le traitement OCR ?

IronOCR prend en charge un large éventail de formats de fichiers, y compris TIFF, JPEG, PNG et PDF, permettant des capacités polyvalentes de numérisation de documents et d'extraction de texte.

IronOCR peut-il prendre en charge l'OCR en plusieurs langues ?

Oui, IronOCR supporte l'OCR dans plus de 125 langues, ce qui le rend adapté à des applications nécessitant la reconnaissance de texte dans divers contextes linguistiques.

Comment .NET MAUI facilite-t-il le développement multiplateforme ?

.NET MAUI permet aux développeurs de créer des applications mobiles multiplateformes avec une seule base de code, permettant un déploiement sans heurts sur les appareils Android, iOS et Windows.

Quelles sont les prérequis pour développer une application de scanner de documents avec .NET MAUI ?

Les prérequis incluent des connaissances de base en programmation C#, Visual Studio 2022 avec la charge de travail .NET MAUI, et la bibliothèque IronOCR installée depuis NuGet.

Comment puis-je tester la compatibilité de mon application de scanner de documents sur différentes plateformes ?

Vous pouvez tester votre application de scanner de documents sur différentes plateformes en la déployant sur des appareils Android, iOS et Windows pour assurer la fonctionnalité et la précision de l'extraction de texte, en tirant parti des capacités multiplateformes de .NET MAUI.

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite