Comment effectuer une reconnaissance optique de caractères (OCR) sur Android avec .NET MAUI

This article was translated from English: Does it need improvement?
Translated
View the article in English
Android related to Comment effectuer une reconnaissance optique de caractères (OCR) sur Android avec .NET MAUI

.NET MAUI (Multi-platform App UI) est une évolution du framework Xamarin.Forms, conçu pour créer des applications multiplateformes pour Android, iOS, macOS et Windows en utilisant .NET. .NET MAUI vise à simplifier le processus de création d'interfaces utilisateur natives pouvant fonctionner sur plusieurs plateformes.

Le package IronOcr.Android apporte la prise en charge de la reconnaissance optique de caractères (OCR) à Android !

IronOCR Android Package

Le package IronOcr.Android active les fonctionnalités OCR sur les appareils Android via des projets multiplateformes .NET. Le package IronOCR de base n'est pas nécessaire.

Installer le package IronOcr.Android
Bibliothèque C# NuGet pour PDF

Installer avec NuGet

Installer le package IronOcr.Android

Créer un projet .NET MAUI

Ouvrez Visual Studio et cliquez sur " Créer un nouveau projet ". Recherchez MAUI, sélectionnez .NET MAUI App et " Suivant ".

! Créer un projet d'application .NET MAUI

Inclure la bibliothèque IronOCR.Android

La bibliothèque peut être ajoutée de différentes manières. La plus simple est peut-être d'utiliser NuGet.

  1. Dans Visual Studio, faites un clic droit sur " Dépendances " et sélectionnez " Gérer les Packages NuGet ... ".
  2. Sélectionnez l'onglet " Parcourir " et recherchez " IronOcr.Android ".
  3. Sélectionnez le package " IronOcr.Android " et cliquez sur " Installer ".

Téléchargez le package IronOCR.Android

Pour éviter les problèmes avec d'autres plateformes, modifiez le fichier csproj pour n'inclure le package que lors du ciblage de la plateforme Android. Pour ce faire :

  1. Cliquez avec le bouton droit sur le projet et sélectionnez " Modifier le fichier projet ".
  2. Créez un nouvel élément ItemGroup comme suit :

    <ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
    </ItemGroup>
    <ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
    </ItemGroup>
    XML
  3. Déplacez la référence de package " IronOcr.Android " à l'intérieur du groupe d'éléments que nous venons de créer.

Les étapes ci-dessus empêcheront l'utilisation du package " IronOCR.Android " sur des plateformes telles que iOS (pour cela, installez plutôt IronOCR.iOS ).

Modifier " MainActivity.cs "

  • Ouvrez le fichier " MainActivity.cs " en accédant à Plateformes -> Android.
  • Ajoutez la méthode MainActivity et appelez la méthode Initialize .
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.OS;
using IronOcr;

namespace MAUIIronOCRAndroidSample
{
    [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
    public class MainActivity : MauiAppCompatActivity
    {
        public MainActivity()
        {
            // Initialize IronTesseract for OCR purposes
            IronTesseract.Initialize(this);
        }
    }
}
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.OS;
using IronOcr;

namespace MAUIIronOCRAndroidSample
{
    [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
    public class MainActivity : MauiAppCompatActivity
    {
        public MainActivity()
        {
            // Initialize IronTesseract for OCR purposes
            IronTesseract.Initialize(this);
        }
    }
}
Imports Android.App
Imports Android.Content.PM
Imports Android.Runtime
Imports Android.OS
Imports IronOcr

Namespace MAUIIronOCRAndroidSample
	<Activity(Theme := "@style/Maui.SplashTheme", MainLauncher := True, ConfigurationChanges := ConfigChanges.ScreenSize Or ConfigChanges.Orientation Or ConfigChanges.UiMode Or ConfigChanges.ScreenLayout Or ConfigChanges.SmallestScreenSize Or ConfigChanges.Density)>
	Public Class MainActivity
		Inherits MauiAppCompatActivity

		Public Sub New()
			' Initialize IronTesseract for OCR purposes
			IronTesseract.Initialize(Me)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Modifier " MainPage.xaml "

Modifiez le fichier XAML pour afficher un bouton et une étiquette permettant d'afficher le résultat de la reconnaissance optique de caractères (OCR). Par exemple :

<?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"
             x:Class="MAUIIronOCRAndroidSample.MainPage">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button
            Text="Import File"
            Clicked="ReadFileOnImport"
            Grid.Row="0"
            HorizontalOptions="Center"
            Margin="20, 20, 20, 10"/>

        <ScrollView
            Grid.Row="1"
            BackgroundColor="LightGray"
            Padding="10"
            Margin="10, 10, 10, 30">
            <Label x:Name="OutputText"/>
        </ScrollView>
    </Grid>

</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"
             x:Class="MAUIIronOCRAndroidSample.MainPage">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button
            Text="Import File"
            Clicked="ReadFileOnImport"
            Grid.Row="0"
            HorizontalOptions="Center"
            Margin="20, 20, 20, 10"/>

        <ScrollView
            Grid.Row="1"
            BackgroundColor="LightGray"
            Padding="10"
            Margin="10, 10, 10, 30">
            <Label x:Name="OutputText"/>
        </ScrollView>
    </Grid>

</ContentPage>
XML

Modifier " MainPage.xaml.cs "

Commencez par créer une instance de l'objet IronTesseract . Assurez-vous que la classe IronTesseract est initialisée une seule fois, comme illustré dans le code ci-dessous. L'instancier au sein d'une méthode peut s'avérer inefficace et entraîner des erreurs inattendues.

Ensuite, utilisez la méthode FilePicker.PickAsync pour sélectionner un fichier, puis ouvrez un flux de lecture à partir du FileResult . Créez un nouvel objet OcrInput et chargez-y l'image. Effectuez une reconnaissance optique de caractères (OCR) sur l'image à l'aide de l'instance Tesseract et récupérez le texte. Enfin, affichez le texte obtenu dans une étiquette.

using IronOcr;
using Microsoft.Maui.Controls;
using System;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;

namespace MAUIIronOCRAndroidSample
{
    public partial class MainPage : ContentPage
    {
        // Initialize IronTesseract once in a class
        private readonly IronTesseract ocrTesseract = new IronTesseract();

        public MainPage()
        {
            InitializeComponent();
            // Apply License key if required
            IronOcr.License.LicenseKey = "IRONOCR.MYLICENSE.KEY.1EF01";
        }

        private async void ReadFileOnImport(object sender, EventArgs e)
        {
            try
            {
                // Configure the file picker
                var options = new PickOptions
                {
                    PickerTitle = "Please select a file"
                };

                // Await user's file selection
                var result = await FilePicker.PickAsync(options);
                if (result != null)
                {
                    using var stream = await result.OpenReadAsync();
                    // Instantiate OcrInput
                    using var ocrInput = new OcrInput();
                    // Load image stream for OCR processing
                    ocrInput.AddImage(stream);
                    // Perform OCR
                    var ocrResult = ocrTesseract.Read(ocrInput);
                    // Display extracted text
                    OutputText.Text = ocrResult.Text;
                }
            }
            catch (Exception ex)
            {
                // Log and handle exceptions
                Debug.WriteLine(ex);
            }
        }
    }
}
using IronOcr;
using Microsoft.Maui.Controls;
using System;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;

namespace MAUIIronOCRAndroidSample
{
    public partial class MainPage : ContentPage
    {
        // Initialize IronTesseract once in a class
        private readonly IronTesseract ocrTesseract = new IronTesseract();

        public MainPage()
        {
            InitializeComponent();
            // Apply License key if required
            IronOcr.License.LicenseKey = "IRONOCR.MYLICENSE.KEY.1EF01";
        }

        private async void ReadFileOnImport(object sender, EventArgs e)
        {
            try
            {
                // Configure the file picker
                var options = new PickOptions
                {
                    PickerTitle = "Please select a file"
                };

                // Await user's file selection
                var result = await FilePicker.PickAsync(options);
                if (result != null)
                {
                    using var stream = await result.OpenReadAsync();
                    // Instantiate OcrInput
                    using var ocrInput = new OcrInput();
                    // Load image stream for OCR processing
                    ocrInput.AddImage(stream);
                    // Perform OCR
                    var ocrResult = ocrTesseract.Read(ocrInput);
                    // Display extracted text
                    OutputText.Text = ocrResult.Text;
                }
            }
            catch (Exception ex)
            {
                // Log and handle exceptions
                Debug.WriteLine(ex);
            }
        }
    }
}
Imports IronOcr
Imports Microsoft.Maui.Controls
Imports System
Imports System.Diagnostics
Imports System.IO
Imports System.Threading.Tasks

Namespace MAUIIronOCRAndroidSample
	Partial Public Class MainPage
		Inherits ContentPage

		' Initialize IronTesseract once in a class
		Private ReadOnly ocrTesseract As New IronTesseract()

		Public Sub New()
			InitializeComponent()
			' Apply License key if required
			IronOcr.License.LicenseKey = "IRONOCR.MYLICENSE.KEY.1EF01"
		End Sub

		Private Async Sub ReadFileOnImport(ByVal sender As Object, ByVal e As EventArgs)
			Try
				' Configure the file picker
				Dim options = New PickOptions With {.PickerTitle = "Please select a file"}

				' Await user's file selection
				Dim result = Await FilePicker.PickAsync(options)
				If result IsNot Nothing Then
					Dim stream = Await result.OpenReadAsync()
					' Instantiate OcrInput
					Dim ocrInput As New OcrInput()
					' Load image stream for OCR processing
					ocrInput.AddImage(stream)
					' Perform OCR
					Dim ocrResult = ocrTesseract.Read(ocrInput)
					' Display extracted text
					OutputText.Text = ocrResult.Text
				End If
			Catch ex As Exception
				' Log and handle exceptions
				Debug.WriteLine(ex)
			End Try
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Enfin, dans le fichier .csproj , assurez-vous de ne compiler le projet que pour Android. Étant donné que le package que nous avons ajouté est uniquement destiné à Android, la compilation du projet pour toutes les plateformes échouera.

Exécuter le projet

Ceci vous montrera comment exécuter le projet et effectuer la reconnaissance optique de caractères (OCR).

Execute .NET MAUI App project

Télécharger le projet d'application .NET MAUI

Vous pouvez télécharger le code complet pour ce guide. Il vient sous forme d'un fichier zippé que vous pouvez ouvrir dans Visual Studio en tant que projet d'application .NET MAUI.

Cliquez ici pour télécharger le projet.

Utilisation d'IronOcr.Android à Avalonia

Tout comme MAUI, IronOcr.Android peut être utilisé dans un projet Avalonia avec la même configuration que celle décrite ci-dessus.

Si vous souhaitez effectuer un OCR sur iOS, consultez l'article suivant pour en savoir plus : "Comment effectuer un OCR sur iOS dans .NET MAUI"

Questions Fréquemment Posées

Comment puis-je effectuer une reconnaissance optique de caractères sur Android dans une application .NET MAUI ?

Pour effectuer une reconnaissance optique de caractères sur Android en utilisant .NET MAUI, installez le package IronOcr.Android via NuGet dans Visual Studio. Utilisez la classe IronTesseract pour traiter les images et extraire le texte. Assurez-vous que votre projet est configuré pour cibler Android en modifiant le fichier .csproj de manière appropriée.

Quel est l'objectif du package IronOcr.Android ?

Le package IronOcr.Android est spécialement conçu pour apporter des capacités de reconnaissance optique de caractères aux appareils Android dans les projets .NET MAUI. Il simplifie l'intégration des fonctionnalités de reconnaissance de texte dans les applications multiplateformes ciblant Android.

Comment configurer un projet .NET MAUI pour la reconnaissance optique de caractères sur Android ?

Configurez votre projet .NET MAUI en installant le package IronOcr.Android via NuGet. Ajustez le fichier .csproj pour cibler Android en créant un nouvel élément ItemGroup et en y plaçant le PackageReference IronOcr.Android. Cela évite les problèmes de compilation pour d'autres plateformes.

Quelles modifications sont nécessaires dans MainActivity.cs pour la configuration de la reconnaissance optique de caractères ?

Dans le fichier MainActivity.cs sous Platforms -> Android, ajoutez la méthode MainActivity et appelez la méthode Initialize depuis IronTesseract. Cela configure les capacités de reconnaissance optique de caractères nécessaires pour traiter le texte des images.

Comment puis-je modifier MainPage.xaml pour incorporer des fonctionnalités de reconnaissance optique de caractères ?

Modifiez MainPage.xaml pour inclure un bouton pour importer des fichiers et un label pour afficher les résultats de la reconnaissance optique de caractères. Définissez les éléments d'interface utilisateur nécessaires pour interagir avec la logique de traitement de reconnaissance optique de caractères et gérer efficacement les entrées utilisateur.

Que dois-je faire si je rencontre des erreurs pendant le traitement de la reconnaissance optique de caractères ?

Utilisez des blocs try-catch autour de votre code de traitement OCR pour gérer les exceptions. Enregistrez toutes les erreurs en utilisant Debug.WriteLine ou un autre mécanisme de journalisation pour aider à diagnostiquer et à corriger les problèmes.

Est-il possible d'utiliser le package IronOcr.Android dans des projets Avalonia ?

Oui, le package IronOcr.Android peut être utilisé dans des projets Avalonia avec un processus de configuration similaire à celui de .NET MAUI. Ajustez la configuration du projet en conséquence pour activer la fonctionnalité de reconnaissance optique de caractères.

Où puis-je trouver un projet d'exemple complet pour la reconnaissance optique de caractères sur Android en utilisant .NET MAUI ?

Un projet d'exemple complet pour la reconnaissance optique de caractères sur Android en utilisant la bibliothèque IronOCR dans .NET MAUI est disponible au téléchargement via un lien fourni dans le guide. Le projet est livré sous forme de fichier compressé, prêt à être ouvert dans Visual Studio.

Comment puis-je m'assurer que le package IronOcr.Android cible uniquement Android dans un projet multiplateforme ?

Pour vous assurer que le package IronOcr.Android cible uniquement Android, modifiez le fichier .csproj en créant un ItemGroup conditionnel pour Android et placez-y le PackageReference IronOcr.Android. Cela évite les conflits lors de la compilation pour d'autres plateformes.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 5,167,857 | Version: 2025.11 vient de sortir