OCR de .NET MAUI con IronOCR

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

Introducción

Microsoft lanzó .NET MAUI (Multi-platform App UI), que es un marco para construir aplicaciones multiplataforma con el .NET Framework. Te permite escribir código que se ejecuta en Android, iOS y Windows utilizando la misma base de código, ahorrando tiempo, recursos y esfuerzo. .NET MAUI es de código abierto. Puedes obtener el código fuente del proyecto .NET MAUI con ejemplos en GitHub.

En esta Guía, aprenderemos cómo crear una aplicación procesadora de OCR en .NET MAUI utilizando la biblioteca IronOCR con ejemplos.

IronOCR: biblioteca de OCR .NET

IronOCR es una biblioteca .NET OCR NuGet que permite a los desarrolladores integrar fácilmente la funcionalidad de Reconocimiento Óptico de Caracteres (OCR) en sus proyectos. Usando IronOCR, los documentos PDF pueden ser escaneados y convertidos en texto/datos editables y buscables sin pérdida de calidad de datos. Esto facilita que los usuarios encuentren la información que necesitan de los documentos PDF y realicen cambios o correcciones si es necesario.

IronOCR es la versión más avanzada de los binarios de Tesseract disponible para cualquier plataforma. Ofrece mayor velocidad, precisión y un DLL/API nativo que soporta todas las versiones de Tesseract (desde Tesseract 3 hasta Tesseract 5) con una fácil instalación/descarga.

El soporte de idiomas de IronOCR es extenso, con 125 idiomas internacionales disponibles para los usuarios. El idioma inglés está instalado por defecto con la herramienta/DLL. Sin embargo, puedes agregar fácilmente más idiomas instalándolos a través de NuGet o descargando los DLLs.

Comparación con Tesseract

IronOCR está específicamente diseñado para desarrolladores C# e integra sin problemas con aplicaciones .NET. En contraste, Tesseract es una biblioteca OCR genérica que requiere que los desarrolladores escriban sus propios envoltorios para usarla con C#. Además, IronOCR ofrece mayor precisión y velocidad en comparación con otras bibliotecas, gracias a sus innovadores algoritmos de inteligencia artificial.

IronOCR viene con documentación completa y soporte técnico, lo que facilita a los desarrolladores novatos comenzar rápidamente.

IronOCR es mucho más preciso que Tesseract. De hecho, tiene una tasa de precisión de más del 99%, mientras que la tasa de precisión de Tesseract es solo alrededor del 70.2% al 92.9%. Obtén más información y soporte sobre la comparación entre IronOCR y Tesseract en este video de YouTube.

Pasos para crear una aplicación OCR MAUI

Sigue estos pasos para crear una aplicación OCR en el marco .NET MAUI usando IronOCR.

Prerrequisitos

Para crear una aplicación OCR en .NET MAUI, estos son los requisitos previos:

  1. Visual Studio 2022 (Última versión)
  2. .NET 6 o 7
  3. Paquetes MAUI instalados en Visual Studio
  4. Un proyecto .NET MAUI ejecutándose en Visual Studio

Instalar IronOCR

El primer paso es instalar la biblioteca IronOCR usando la Consola del Gestor de Paquetes NuGet. Abre la Consola del Gestor de Paquetes NuGet haciendo clic derecho en el explorador de soluciones y ejecutando el siguiente comando para instalar la biblioteca IronOCR:

Install-Package IronOcr

Diseño de frontend

Diseñaremos el frontend de la aplicación en esta sección. Abre el archivo MainPage.xaml.

.NET MAUI OCR Tutorial Using IronOCR - Figure 1: MainPage.xaml

MainPage.xaml

Desginamos un botón que nos ayudará a seleccionar la imagen o documento PDF para OCR. La propiedad Clicked del botón está configurada para ejecutar la función IOCR que definiremos en la próxima sección.

<Button
    x:Name="OCR"
    Text="Click to OCR"
    Clicked="IOCR"
    HorizontalOptions="Center" />
<Button
    x:Name="OCR"
    Text="Click to OCR"
    Clicked="IOCR"
    HorizontalOptions="Center" />
XML

Aquí, creamos un elemento Image con el nombre OCRImage. Este cuadro de imagen mostrará el archivo seleccionado.

<Image
    x:Name="OCRImage"
    SemanticProperties.Description="Selected Image"
    HeightRequest="300"
    HorizontalOptions="Center" />
<Image
    x:Name="OCRImage"
    SemanticProperties.Description="Selected Image"
    HeightRequest="300"
    HorizontalOptions="Center" />
XML

A continuación, creamos un control Editor. Se usará para mostrar el texto extraído de la imagen o documento PDF.

<Editor
    x:Name="outputText"
    HorizontalOptions="Center"
    WidthRequest="600"
    HeightRequest="300" />
<Editor
    x:Name="outputText"
    HorizontalOptions="Center"
    WidthRequest="600"
    HeightRequest="300" />
XML

Aquí está el marcado de la interfaz de usuario XAML completo.

<?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="IronOCR_MAUI_Test.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">
            <Button
                x:Name="OCR"
                Text="Click to OCR"
                Clicked="IOCR"
                HorizontalOptions="Center" />
            <Image
                x:Name="OCRImage"
                SemanticProperties.Description="Selected Image"
                HeightRequest="300"
                HorizontalOptions="Center" />

            <Editor
                x:Name="outputText"
                HorizontalOptions="Center"
                WidthRequest="600"
                HeightRequest="300" />
        </VerticalStackLayout>
    </ScrollView>

</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="IronOCR_MAUI_Test.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">
            <Button
                x:Name="OCR"
                Text="Click to OCR"
                Clicked="IOCR"
                HorizontalOptions="Center" />
            <Image
                x:Name="OCRImage"
                SemanticProperties.Description="Selected Image"
                HeightRequest="300"
                HorizontalOptions="Center" />

            <Editor
                x:Name="outputText"
                HorizontalOptions="Center"
                WidthRequest="600"
                HeightRequest="300" />
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>
XML

Ahora, es hora de escribir el código para la funcionalidad OCR.

Código para OCR usando IronOCR

Abre el archivo de clase MainPage.xaml.cs y escribe la siguiente función:

.NET MAUI OCR Tutorial Using IronOCR - Figure 2: MainPage.xaml.cs

MainPage.xaml.cs

private async void IOCR(object sender, EventArgs e)
{
    // Prompt user to select an image using FilePicker
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
        PickerTitle = "Pick image",
        FileTypes = FilePickerFileType.Images
    });

    // Get the full path of the selected image
    var path = images.FullPath.ToString();

    // Display the selected image in the Image control
    OCRImage.Source = path;

    // Create an IronTesseract object to perform OCR
    var ocr = new IronTesseract();

    // Perform OCR and extract text from the selected image
    using (var input = new OcrInput())
    {
        input.AddImage(path); // Add image to the OCR input
        OcrResult result = ocr.Read(input); // Perform OCR
        string text = result.Text; // Extract text

        // Display extracted text in the Editor control
        outputText.Text = text; 
    }
}
private async void IOCR(object sender, EventArgs e)
{
    // Prompt user to select an image using FilePicker
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
        PickerTitle = "Pick image",
        FileTypes = FilePickerFileType.Images
    });

    // Get the full path of the selected image
    var path = images.FullPath.ToString();

    // Display the selected image in the Image control
    OCRImage.Source = path;

    // Create an IronTesseract object to perform OCR
    var ocr = new IronTesseract();

    // Perform OCR and extract text from the selected image
    using (var input = new OcrInput())
    {
        input.AddImage(path); // Add image to the OCR input
        OcrResult result = ocr.Read(input); // Perform OCR
        string text = result.Text; // Extract text

        // Display extracted text in the Editor control
        outputText.Text = text; 
    }
}
Private Async Sub IOCR(ByVal sender As Object, ByVal e As EventArgs)
	' Prompt user to select an image using FilePicker
	Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
		.PickerTitle = "Pick image",
		.FileTypes = FilePickerFileType.Images
	})

	' Get the full path of the selected image
	Dim path = images.FullPath.ToString()

	' Display the selected image in the Image control
	OCRImage.Source = path

	' Create an IronTesseract object to perform OCR
	Dim ocr = New IronTesseract()

	' Perform OCR and extract text from the selected image
	Using input = New OcrInput()
		input.AddImage(path) ' Add image to the OCR input
		Dim result As OcrResult = ocr.Read(input) ' Perform OCR
		Dim text As String = result.Text ' Extract text

		' Display extracted text in the Editor control
		outputText.Text = text
	End Using
End Sub
$vbLabelText   $csharpLabel

Desglosamos el código anterior:

  • El código utiliza el FilePicker para permitir al usuario seleccionar un archivo de imagen desde el dispositivo. El selector de archivos está configurado para permitir solo imágenes.
var images = await FilePicker.Default.PickAsync(new PickOptions
{
    PickerTitle = "Pick image",
    FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
var images = await FilePicker.Default.PickAsync(new PickOptions
{
    PickerTitle = "Pick image",
    FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
	.PickerTitle = "Pick image",
	.FileTypes = FilePickerFileType.Images
})
Dim path = images.FullPath.ToString()
$vbLabelText   $csharpLabel
  • El control Image está configurado para mostrar la imagen seleccionada usando su ruta de archivo.
OCRImage.Source = path;
OCRImage.Source = path;
OCRImage.Source = path
$vbLabelText   $csharpLabel
  • Se crea un objeto IronTesseract para realizar OCR. La imagen seleccionada se agrega a un objeto OcrInput. Se llama al método Read para extraer texto de la imagen, que luego se muestra en el control Editor.
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    input.AddImage(path);
    OcrResult result = ocr.Read(input);
    string text = result.Text;
    outputText.Text = text; 
}
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    input.AddImage(path);
    OcrResult result = ocr.Read(input);
    string text = result.Text;
    outputText.Text = text; 
}
Dim ocr = New IronTesseract()
Using input = New OcrInput()
	input.AddImage(path)
	Dim result As OcrResult = ocr.Read(input)
	Dim text As String = result.Text
	outputText.Text = text
End Using
$vbLabelText   $csharpLabel

Producción

Después de ejecutar el proyecto, aparece la interfaz de usuario que se muestra a continuación. Cuando haces clic en el botón, te pedirá que selecciones una imagen/PDF de cualquier ubicación.

.NET MAUI OCR Tutorial Using IronOCR - Figure 3: Salida de OCR

Salida de OCR

Después de seleccionar la imagen, IronOCR procesa la imagen y muestra las palabras reconocidas en el control Editor. Puedes copiar el texto del control Editor.

.NET MAUI OCR Tutorial Using IronOCR - Figure 4: Imagen OCR

Imagen OCR

De los resultados, se muestra que IronOCR realiza un trabajo maravilloso al procesar imágenes complejas con patrones, mostrando resultados precisos. IronOCR es capaz de detectar pequeños detalles y seleccionar las letras exactas necesarias usando sus modelos preentrenados.

<{i:(Ejecutar el proyecto en modo de liberación con depuración adjunta podría causar problemas. En tales casos, puedes publicar el proyecto como una aplicación .NET MAUI no empaquetada, como se muestra en el enlace a continuación, para asegurar que la aplicación funcione correctamente.)}>

Conclusión

Para seguir leyendo, consulta este tutorial que proporciona información adicional sobre cómo usar IronOCR para leer texto de imágenes.

IronOCR es gratuito para propósitos de desarrollo. Puedes comprarlo por un precio muy bajo a partir de solo $799. Consulta el plan de precios aquí.

Preguntas Frecuentes

¿Para qué se utiliza .NET MAUI en el desarrollo de aplicaciones?

.NET MAUI (Multi-platform App UI) se utiliza para construir aplicaciones multiplataforma con una sola base de código, permitiendo a los desarrolladores orientar plataformas como Android, iOS y Windows.

¿Cómo pueden los desarrolladores realizar OCR en una aplicación .NET MAUI?

Los desarrolladores pueden realizar OCR en una aplicación .NET MAUI integrando IronOCR, una biblioteca OCR de .NET. IronOCR permite la conversión de imágenes y PDFs en texto editable y buscable.

¿Cuáles son los pasos para configurar IronOCR en un proyecto .NET MAUI?

Para configurar IronOCR en un proyecto .NET MAUI, instale la biblioteca IronOCR a través de NuGet, configure su frontend en Visual Studio e implemente el código C# necesario para realizar OCR usando el objeto IronTesseract.

¿Qué tan preciso es IronOCR al procesar texto?

IronOCR proporciona una tasa de precisión superior al 99% al procesar texto, lo que lo hace más confiable que otras soluciones OCR como Tesseract debido a sus avanzados algoritmos de IA.

¿Puede IronOCR manejar múltiples idiomas?

Sí, IronOCR soporta 125 idiomas internacionales, con el inglés instalado por defecto. Se pueden añadir idiomas adicionales a través de NuGet o descargando DLLs específicas de idioma.

¿Cómo selecciona un archivo de imagen para OCR en una aplicación .NET MAUI?

En una aplicación .NET MAUI, puede seleccionar un archivo de imagen para OCR usando la clase FilePicker, que permite a los usuarios elegir imágenes de su dispositivo para la extracción de texto.

¿Cuál es el papel del control Editor al mostrar resultados de OCR?

El control Editor en una aplicación .NET MAUI se utiliza para mostrar texto extraído de imágenes procesadas por IronOCR, proporcionando una interfaz para que los usuarios vean los resultados del OCR.

¿Hay algún costo asociado con el uso de IronOCR para desarrollo?

IronOCR es gratuito para uso en desarrollo. Sin embargo, se requiere una licencia para su uso en producción, la cual se puede obtener a un precio competitivo.

¿Qué hace que IronOCR sea la opción preferida para los desarrolladores de C#?

IronOCR es la opción preferida para desarrolladores de C# debido a su integración perfecta con aplicaciones .NET, alta precisión, velocidad y soporte para múltiples idiomas, lo que lo hace superior a muchas otras bibliotecas OCR.

¿Cómo pueden los desarrolladores mejorar la funcionalidad de su aplicación OCR de .NET MAUI?

Los desarrolladores pueden mejorar su aplicación OCR de .NET MAUI explorando recursos adicionales proporcionados por IronOCR, utilizando su documentación completa y soporte para implementar características avanzadas.

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
Revisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente Principal de Programas - Equipo de la Comunidad .NET
Jeff también es Gerente Principal de Programas para los equipos de .NET y Visual Studio. Es el productor ejecutivo de la serie de conferencias virtuales .NET Conf y anfitrión de 'Fritz and Friends', una transmisión en vivo para desarrolladores que se emite dos veces a la semana donde habla sobre tecnología y escribe código junto con la audiencia. Jeff escribe talleres, presentaciones, y planifica contenido para los eventos de desarrolladores más importantes de Microsoft, incluyendo Microsoft Build, Microsoft Ignite, .NET Conf y la Cumbre de Microsoft MVP.
¿Listo para empezar?
Nuget Descargas 5,167,857 | Version: 2025.11 recién lanzado