Comment utiliser le logiciel OCR IronOCR 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 !
Comment utiliser IronOCR sur Android avec .NET MAUI
- Téléchargez la bibliothèque C# pour effectuer une reconnaissance optique de caractères (OCR) sur Android.
- Créez un projet d'application .NET MAUI
- Modifiez le fichier XAML pour afficher un bouton d'activation et le texte de sortie
- Modifiez le fichier C# correspondant pour effectuer la reconnaissance optique de caractères
- Téléchargez le projet d'exemple pour un démarrage rapide
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
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 ".

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.
- Dans Visual Studio, faites un clic droit sur " Dépendances " et sélectionnez " Gérer les Packages NuGet ... ".
- Sélectionnez l'onglet " Parcourir " et recherchez " IronOcr.Android ".
- Sélectionnez le package " IronOcr.Android " et cliquez sur " Installer ".

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 :
- Cliquez avec le bouton droit sur le projet et sélectionnez " Modifier le fichier projet ".
-
Créez un nouvel élément ItemGroup comme suit :
<ItemGroup Condition="$(TargetFramework.Contains('android')) == true"> </ItemGroup><ItemGroup Condition="$(TargetFramework.Contains('android')) == true"> </ItemGroup>XML - 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
MainActivityet invoquez la méthodeInitialize.
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
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>
Modifier " MainPage.xaml.cs "
Tout d'abord, créez une instance de l'objet IronTesseract. Assurez-vous que IronTesseract est initialisé une fois dans la classe, comme démontré 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
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).
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.
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.

