Cómo realizar OCR en iOS en .NET MAUI

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

.NET MAUI (Interfaz de Usuario de Aplicación Multiplataforma) es una evolución del marco Xamarin.Forms, diseñado para crear aplicaciones multiplataforma para Android, iOS, macOS y Windows utilizando .NET. MAUI tiene como objetivo simplificar el proceso de construir interfaces de usuario nativas que se puedan ejecutar en múltiples plataformas.

¡El paquete IronOcr.iOS trae soporte OCR a iOS!

Paquete IronOCR para iOS

El paquete IronOcr.iOS habilita funciones de OCR en dispositivos iOS vía proyectos multiplataforma de .NET. No se necesita el paquete IronOCR estándar.

Paquete de instalación IronOcr.iOS
Biblioteca C# NuGet para PDF

Instalar con NuGet

Paquete de instalación 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 se puede agregar de varias maneras. La más fácil es quizás usando NuGet.

  1. Dentro de Visual Studio, haz clic derecho en "Dependencies > Nuget" y selecciona "Manage NuGet Packages ...".
  2. Seleccione la pestaña "Examinar" y busque "IronOCR.iOS".
  3. Seleccione el paquete "IronOCR.iOS" y haga clic en "Agregar Paquete".

Descargar paquete IronOCR.iOS

Para evitar problemas con otras plataformas, modifique el archivo csproj para incluir el paquete solo cuando se dirija a la plataforma iOS. Para hacerlo:

  1. Haz clic derecho en el archivo *.csproj de tu proyecto y selecciona "Editar archivo del proyecto".
  2. Cree un nuevo elemento ItemGroup de esta manera:

    <ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
        <PackageReference Include="IronOcr.iOS" Version="YOUR_PACKAGE_VERSION" />
    </ItemGroup>
    <ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
        <PackageReference Include="IronOcr.iOS" Version="YOUR_PACKAGE_VERSION" />
    </ItemGroup>
    XML
  3. Mueva la referencia del paquete "IronOcr.iOS" dentro del ItemGroup que acabamos de crear.

Los pasos anteriores evitarán que el paquete "IronOCR.iOS" se use en, por ejemplo, plataformas Android (para ese propósito, instale 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 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"

Comience instanciando el objeto IronTesseract. Asegúrese de inicializar IronTesseract una vez en una clase, como se muestra en el código a continuación. Instanciarlo directamente en un método no es efectivo y podría llevar a errores inesperados. Luego, use el método FilePicker.PickAsync para seleccionar un archivo. Desde el FileResult, abra un flujo para lectura. Cree un nuevo objeto OcrInput y use este objeto para cargar la imagen. Use la instancia del tesseract para realizar OCR en la imagen y devolver el texto. Finalmente, muestre el texto resultante en una etiqueta.

La implementación actual está limitada solo a archivos de imagen. El paquete aún no funciona con documentos PDF. Con esto en mente, cualquier configuración relacionada con documentos PDF debería permanecer desactivada.

using System;
using IronOcr;
using Microsoft.Maui.Controls;

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 System;
using IronOcr;
using Microsoft.Maui.Controls;

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 System
Imports IronOcr
Imports Microsoft.Maui.Controls

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 iOS Simulator y ejecuta el proyecto.

Ejecutar el proyecto

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

Execute .NET MAUI App project

Descargar proyecto de aplicación .NET MAUI

Puede descargar el código completo de esta guía. Viene como un archivo comprimido que puede 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 SDK de .NET, también necesita .NET SDK 8.0.101 instalado para ejecutar IronOCR.iOS exitosamente. Después, IronOcr.iOS se puede usar 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"

Preguntas Frecuentes

¿Cómo integro la funcionalidad de OCR en una aplicación .NET MAUI para iOS?

Puedes integrar la funcionalidad de OCR en una aplicación .NET MAUI para iOS utilizando el paquete IronOCR.iOS. Instálalo mediante NuGet en Visual Studio y luego modifica tu archivo de proyecto para incluir el paquete condicionalmente para la plataforma iOS. Usa IronTesseract para procesar imágenes y extraer texto.

¿Puedo usar el paquete IronOCR.iOS para el procesamiento de documentos PDF?

No, el paquete IronOCR.iOS actualmente está limitado a procesar solo archivos de imagen y no soporta documentos PDF. Asegúrate de deshabilitar cualquier configuración relacionada con PDF en tu proyecto.

¿Qué pasos están involucrados en la configuración de OCR para una aplicación iOS usando .NET MAUI?

Configurar OCR para una aplicación iOS usando .NET MAUI implica descargar el paquete IronOcr.iOS vía NuGet, modificar tu archivo de proyecto para incluir condicionalmente el paquete para iOS, y editar tus archivos MainPage.xaml y MainPage.xaml.cs para crear la interfaz de usuario y manejar el procesamiento de OCR.

¿Qué requisitos adicionales hay para usar IronOCR en proyectos Avalonia?

Al usar IronOCR en proyectos Avalonia, necesitas asegurarte de tener la última versión del SDK de .NET y también .NET SDK 8.0.101 instalado. Esta configuración es similar a MAUI pero requiere este SDK adicional.

¿Cómo puedo realizar OCR en una imagen usando IronOCR en un proyecto .NET MAUI?

En un proyecto .NET MAUI, usa el objeto IronTesseract para realizar OCR en una imagen. Usa FilePicker.PickAsync para seleccionar un archivo de imagen, cárgalo en un objeto OcrInput, y luego usa IronTesseract para leer la imagen y extraer texto.

¿Existe un proyecto de ejemplo para implementar OCR en iOS usando .NET MAUI?

Sí, puedes descargar un proyecto de ejemplo .NET MAUI usando IronOCR.iOS desde el sitio web de Iron Software. Este proyecto de ejemplo está disponible como un archivo comprimido que puedes abrir en Visual Studio para acelerar tu proceso de desarrollo.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 5,167,857 | Version: 2025.11 recién lanzado