Comment effectuer l'OCR sur iOS dans .NET MAUI

This article was translated from English: Does it need improvement?
Translated
View the article in English

par Chaknith Bin

Ios related to Comment effectuer l'OCR sur iOS 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. MAUI vise à simplifier le processus de création d'interfaces utilisateur natives pouvant fonctionner sur plusieurs plateformes.

Le paquet IronOcr.iOS apporte la prise en charge de l'OCR à iOS!!

IronOCR iOS Package

Le package IronOcr.iOS permet d'activer les fonctionnalités OCR sur les appareils iOS via des projets multiplateformes .NET. Le paquetage IronOCR vanille n'est pas nécessaire.

PM > Install-Package IronOcr.iOS
Bibliothèque NuGet C# pour PDF

Installer avec NuGet

Installer le paquet IronOCR.iOS

Créer un projet .NET MAUI

Dans la section Multiplateforme, sélectionnez .NET MAUI App et continuez.

Créer un projet .NET MAUI App

Inclure la bibliothèque IronOCR.iOS

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

  1. Dans Visual Studio, faites un clic droit sur "Dependencies > Nuget" et sélectionnez "Manage NuGet Packages ...".

  2. Sélectionnez l'onglet "Parcourir" et recherchez "IronOcr.iOS".

  3. Sélectionnez le paquet "IronOCR.iOS" et cliquez sur "Ajouter un paquet".

    Télécharger le paquet IronOCR.iOS

    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 iOS. Pour ce faire :

  4. Cliquez avec le bouton droit de la souris sur le fichier *.csproj de votre projet et sélectionnez "Edit Project File".

  5. Créez un nouvel élément ItemGroup comme suit :
    <ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
    </ItemGroup>
XML
  1. Déplacez la PackageReference "IronOcr.iOS" à l'intérieur du ItemGroup que nous venons de créer.

    Les étapes ci-dessus empêcheront l'utilisation du paquet "IronOcr.iOS" sur les plates-formes Android, par exemple(à cette fin, installerIronOcr.Android au lieu de).

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="MAUIIronOCRiOSSample.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 instancier l'objet IronTesseract. Veillez à initialiser IronTesseract une fois dans une classe, comme le montre le code ci-dessous. L'instancier directement dans une méthode n'est pas efficace et peut entraîner des erreurs inattendues. Ensuite, utilisez la méthode FilePicker.PickAsync pour sélectionner un fichier. À partir du FileResult, ouvrez un flux pour la lecture. Créer un nouvel objet OcrInput et utiliser cet objet pour charger l'image. Utiliser l'instance de tesseract pour effectuer l'OCR sur l'image et renvoyer le texte. Enfin, affichez le texte résultant dans une étiquette.

La mise en œuvre actuelle est limitée aux fichiers images. Le logiciel ne fonctionne pas encore avec les documents PDF. Dans cette optique, toute configuration relative aux documents PDF a été désactivée par défaut et doit le rester.

using IronOcr;

namespace MAUIIronOCRiOSSample;

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 MAUIIronOCRiOSSample;

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 MAUIIronOCRiOSSample

	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
VB   C#

Enfin, changez la cible de construction en iOS Simulator et exécutez le projet.

Exécuter le projet

Il vous montrera comment exécuter le projet et effectuer l'OCR.

Exécuter le projet .NET MAUI App

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.

Utiliser IronOCR.iOS dans Avalonia

L'installation d'IronOCR.iOS dans Avalonia est similaire à celle de MAUI, avec une différence cruciale : en plus de la dernière version du SDK .NET, vous avez également besoin des éléments suivants.NET SDK 8.0.101 installé pour exécuter IronOCR.iOS avec succès. Par la suite, IronOcr.iOS peut être utilisé dans un projet Avalonia avec la même configuration que celle décrite ci-dessus.

Si vous souhaitez effectuer une reconnaissance optique de caractères sur Android, consultez l'article suivant pour en savoir plus : "Comment effectuer l'OCR sur Android dans .NET MAUI"