Comment effectuer l'OCR sur Android dans .NET MAUI
.NET MAUI (L'interface utilisateur des applications multiplateformes) est une évolution du framework Xamarin.Forms, conçu pour créer des applications multiplateformes pour Android, iOS, macOS et Windows à l'aide de .NET. .NET MAUI vise à simplifier le processus de construction d'interfaces utilisateur natives pouvant fonctionner sur plusieurs plates-formes.
Le paquet IronOcr.Android apporte la prise en charge de l'OCR à Android!!
Comment utiliser IronOCR pour .NET MAUI sur Android ?
IronOCR Package Android
Le paquet IronOcr.Android permet d'utiliser les fonctions OCR sur les appareils Android par le biais de projets multiplateformes .NET. Le paquetage IronOCR vanille n'est pas nécessaire.
PM > Install-Package IronOcr.Android
Installer avec NuGet
Installer le paquet 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 cliquez sur "Next".
Inclure la bibliothèque IronOCR.Android
La bibliothèque peut être ajoutée de différentes manières. Le plus simple est sans doute d'utiliser NuGet.
Dans Visual Studio, faites un clic droit sur "Dependencies" et sélectionnez "Manage NuGet Packages ...".
Sélectionnez l'onglet "Parcourir" et recherchez "IronOCR.Android".
Sélectionnez le paquet "IronOCR.Android" et cliquez sur "Installer".
Pour éviter les problèmes avec d'autres plateformes, modifiez le fichier csproj pour n'inclure le paquet que lorsqu'il s'agit de la plateforme Android. Pour ce faire :
Cliquez avec le bouton droit de la souris sur le projet et sélectionnez "Editer le fichier du projet".
- Créez un nouvel élément ItemGroup comme suit :
<ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
</ItemGroup>
Déplacez la référence de paquetage "IronOCR.Android" dans le groupe d'éléments que nous venons de créer.
Les étapes ci-dessus empêcheront l'utilisation du paquet "IronOcr.Android" sur les plates-formes iOS, par exemple (à cette fin, installer IronOCR.iOS au lieu de).
Modifier "MainActivity.cs"
- Ouvrez le fichier "MainActivity.cs" en naviguant vers Plateformes -> Android.
- Ajoutez la méthode
MainActivity
et invoquez la méthodeInitialize
.
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()
{
IronTesseract.Initialize(this);
}
}
}
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()
{
IronTesseract.Initialize(this);
}
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Modifier "MainPage.xaml"
Modifiez le fichier XAML pour afficher un bouton et une étiquette indiquant le résultat de l'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>
Modifier "MainPage.xaml.cs"
Tout d'abord, créez une instance de l'objet IronTesseract. Veillez à ce qu'IronTesseract soit initialisé une seule fois dans une classe, comme le montre le code ci-dessous. L'instancier dans une méthode peut s'avérer inefficace et provoquer 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. Effectuer l'OCR sur l'image en utilisant l'instance de tesseract et récupérer le texte. Enfin, affichez le texte résultant dans une étiquette.
Veuillez noter que l'implémentation actuelle ne prend en charge que les fichiers images. Le paquet ne prend pas encore en charge les documents PDF. Par conséquent, toutes les configurations relatives aux PDF sont désactivées par défaut et doivent le rester.
using IronOcr;
namespace MAUIIronOCRAndroidSample;
public partial class MainPage : ContentPage
{
// Initialize IronTesseract once in a class
private IronTesseract ocrTesseract = new IronTesseract();
public MainPage()
{
InitializeComponent();
// Apply License key
IronOcr.License.LicenseKey = "IRONOCR.MYLICENSE.KEY.1EF01";
}
private async void ReadFileOnImport(object sender, EventArgs e)
{
try
{
var options = new PickOptions
{
PickerTitle = "Please select a file"
};
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
ocrInput.LoadImage(stream);
// Perform OCR
var ocrResult = ocrTesseract.Read(ocrInput);
OutputText.Text = ocrResult.Text;
}
}
catch (Exception ex)
{
// Handle exceptions
System.Diagnostics.Debug.WriteLine(ex);
}
}
}
using IronOcr;
namespace MAUIIronOCRAndroidSample;
public partial class MainPage : ContentPage
{
// Initialize IronTesseract once in a class
private IronTesseract ocrTesseract = new IronTesseract();
public MainPage()
{
InitializeComponent();
// Apply License key
IronOcr.License.LicenseKey = "IRONOCR.MYLICENSE.KEY.1EF01";
}
private async void ReadFileOnImport(object sender, EventArgs e)
{
try
{
var options = new PickOptions
{
PickerTitle = "Please select a file"
};
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
ocrInput.LoadImage(stream);
// Perform OCR
var ocrResult = ocrTesseract.Read(ocrInput);
OutputText.Text = ocrResult.Text;
}
}
catch (Exception ex)
{
// Handle exceptions
System.Diagnostics.Debug.WriteLine(ex);
}
}
}
Imports IronOcr
Namespace MAUIIronOCRAndroidSample
Partial Public Class MainPage
Inherits ContentPage
' Initialize IronTesseract once in a class
Private ocrTesseract As New IronTesseract()
Public Sub New()
InitializeComponent()
' Apply License key
IronOcr.License.LicenseKey = "IRONOCR.MYLICENSE.KEY.1EF01"
End Sub
Private Async Sub ReadFileOnImport(ByVal sender As Object, ByVal e As EventArgs)
Try
Dim options = New PickOptions With {.PickerTitle = "Please select a file"}
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
ocrInput.LoadImage(stream)
' Perform OCR
Dim ocrResult = ocrTesseract.Read(ocrInput)
OutputText.Text = ocrResult.Text
End If
Catch ex As Exception
' Handle exceptions
System.Diagnostics.Debug.WriteLine(ex)
End Try
End Sub
End Class
End Namespace
Enfin, dans le fichier .csproj, assurez-vous que vous ne construisez le projet que pour Android. Étant donné que le paquet que nous avons ajouté n'est destiné qu'à Android, la construction du projet pour toutes les plateformes échouera.
Exécuter le projet
Il vous montrera comment exécuter le projet et effectuer l'OCR.
Télécharger le projet d'application .NET MAUI
Vous pouvez télécharger le code complet de ce guide. Il s'agit d'un fichier zippé que vous pouvez ouvrir dans Visual Studio en tant que projet .NET MAUI App.
Cliquez ici pour télécharger le projet.
Utilisation d'IronOCR.Android dans 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 l'OCR sur iOS, consultez l'article suivant pour en savoir plus : "Comment effectuer l'OCR sur iOS dans .NET MAUI"