Cómo realizar OCR en iOS en .NET MAUI

Chaknith Bin
Chaknith Bin
20 de mayo, 2024
Actualizado 10 de diciembre, 2024
Compartir:
This article was translated from English: Does it need improvement?
Translated
View the article in English
Ios related to Cómo realizar OCR en iOS en .NET MAUI

.NET MAUI (Multi-platform App UI) es una evolución del marco Xamarin.Forms, diseñado para crear aplicaciones multiplataforma para Android, iOS, macOS y Windows usando .NET. MAUI pretende simplificar el proceso de creación de interfaces de usuario nativas que puedan ejecutarse en múltiples plataformas.

¡El paquete IronOcr.iOS lleva soporte de OCR a iOS!

Paquete IronOCR para iOS

El paquete IronOcr.iOS habilita funciones de OCR en dispositivos iOS a través de proyectos multiplataforma de .NET. El paquete IronOCR no es necesario.

PM > Install-Package IronOcr.iOS
Biblioteca NuGet de C# para PDF

Instalar con NuGet

Install-Package IronOcr.iOS

Crear un proyecto .NET MAUI

En la sección Multiplataforma, selecciona .NET MAUI App y continúa.

Crear proyecto de aplicación .NET MAUI

Incluir la biblioteca IronOCR.iOS

La biblioteca puede añadirse de varias maneras. La forma más sencilla es quizás utilizando NuGet.

  1. Dentro de Visual Studio, haz clic con el botón derecho en "Dependencias > Nuget" y selecciona "Administrar paquetes NuGet ...".

  2. Seleccione la pestaña "Examinar" y busque "IronOcr.iOS".

  3. Seleccione el paquete "IronOcr.iOS" y haga clic en "Añadir paquete".

    Descargar paquete IronOcr.iOS

    Para evitar problemas con otras plataformas, modifique el archivo csproj para que sólo incluya el paquete cuando se dirija a la plataforma iOS. Para ello:

  4. Haga clic con el botón derecho del ratón en el archivo *.csproj de su proyecto y seleccione "Editar archivo de proyecto".

  5. Cree un nuevo elemento ItemGroup como tal:
    <ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
    </ItemGroup>
XML
  1. Mueve el PackageReference "IronOcr.iOS" dentro del ItemGroup que acabamos de crear.

    Los pasos anteriores evitarán que se utilice el paquete "IronOcr.iOS" en plataformas como Android (para ese propósito, instala IronOcr.Android en su lugar).

Editar "MainPage.xaml"

Edite el archivo XAML para mostrar un botón y una etiqueta para mostrar el resultado del OCR. Por ejemplo:

<?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

Editar "MainPage.xaml.cs"

Comienza por instanciar el objeto IronTesseract. Asegúrese de inicializar IronTesseract una vez en una clase, como se muestra en el código siguiente. Instanciarlo directamente en un método no es eficaz y podría provocar errores inesperados. A continuación, utiliza el método FilePicker.PickAsync para seleccionar un archivo. A partir del FileResult, abre un flujo para lectura. Cree un nuevo objeto OcrInput y utilícelo para cargar la imagen. Utiliza la instancia tesseract para realizar el OCR en la imagen y devolver el texto. Por último, muestre el texto resultante en una etiqueta.

La aplicación actual se limita únicamente a los archivos de imagen. El paquete aún no funciona con documentos PDF. Teniendo esto en cuenta, cualquier configuración relacionada con documentos PDF ha sido por defecto y debe permanecer desactivada.

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
$vbLabelText   $csharpLabel

Por último, cambia el objetivo de compilación a Simulador de iOS y ejecuta el proyecto.

Ejecutar el proyecto

Esto le mostrará cómo ejecutar el proyecto y realizar el OCR.

Ejecutar proyecto .NET MAUI App

Descargar proyecto de aplicación .NET MAUI

Puedes descargar el código completo de esta guía. Viene como un archivo comprimido que puedes abrir en Visual Studio como un proyecto de aplicación .NET MAUI.

Haga clic aquí para descargar el proyecto.

Uso de IronOcr.iOS en Avalonia

Configurar IronOcr.iOS en Avalonia es similar a MAUI, con una diferencia crucial: además de la última versión del .NET SDK, también necesitas tener instalado .NET SDK 8.0.101 para ejecutar IronOcr.iOS con éxito. Después, IronOcr.iOS puede utilizarse en un proyecto Avalonia con la misma configuración descrita anteriormente.

Si desea realizar OCR en Android, navegue al siguiente artículo para obtener más información: "Cómo realizar OCR en Android en .NET MAUI"

Chaknith Bin
Ingeniero de software
Chaknith trabaja en IronXL e IronBarcode. Tiene una gran experiencia en C# y .NET, ayudando a mejorar el software y a apoyar a los clientes. Sus conocimientos de las interacciones con los usuarios contribuyen a mejorar los productos, la documentación y la experiencia general.