.NET MAUI OCR Usando IronOCR

Introducción

Microsoft lanzó .NET MAUI (Interfaz de usuario multiplataforma)que es un marco para crear aplicaciones multiplataforma con .NET Framework. Permite escribir código que se ejecuta en Android, iOS y Windows utilizando la misma base de código, lo que ahorra tiempo, recursos y esfuerzo. .NET MAUI es de código abierto. Puedes obtener el código fuente del proyecto .NET MAUI con ejemplos en la página GitHub.

En esta guía, aprenderemos a crear aplicaciones de procesador OCR en .NET MAUI usando la librería IronOCR con ejemplos.

IronOCR: biblioteca OCR .NET

IronOCR es una biblioteca .NET OCR NuGet que permite a los desarrolladores integrar fácilmente el reconocimiento óptico de caracteres (OCR) en sus proyectos. Con IronOCR, los documentos PDF pueden escanearse y convertirse en texto/datos editables y con capacidad de búsqueda sin pérdida de calidad de los datos. Esto facilita a los usuarios encontrar la información que necesitan en los documentos PDF y hacer cambios o correcciones si es necesario.

IronOCR es la compilación más avanzada de los binarios Tesseract disponibles para cualquier plataforma. Ofrece mayor velocidad, precisión y una DLL/API nativa compatible con todas las versiones de Tesseract. (desde Teseracto 3 hasta Teseracto 5) con una sencilla instalación/descarga.

El soporte lingüístico de IronOCR es amplio, con 125 idiomas internacionales a disposición de los usuarios. El idioma inglés se instala por defecto con la herramienta/DLL. Sin embargo, puedes añadir fácilmente más idiomas instalándolos a través de NuGet o descargando DLLs.

Comparación con Tesseract

IronOCR está diseñado específicamente para desarrolladores C# y se integra a la perfección con las aplicaciones .NET. Por el contrario, Tesseract es una biblioteca de OCR genérica que requiere que los desarrolladores escriban sus propias envolturas para poder utilizarla con C#. Además, IronOCR ofrece una precisión y velocidad superiores a las de otras bibliotecas, gracias a sus innovadores algoritmos de inteligencia artificial.

IronOCR incluye una completa documentación y asistencia técnica, lo que facilita su rápida puesta en marcha incluso a los desarrolladores principiantes.

IronOCR es mucho más preciso que Tesseract. De hecho, tiene un índice de precisión superior al 99%, mientras que el de Tesseract sólo ronda entre el 70,2% y el 92,9%. Más información y asistencia sobre la comparación entre IronOCR y Tesseract en YouTube vídeo.

Pasos para crear una aplicación OCR MAUI

Sigue los siguientes pasos para crear una aplicación OCR en el framework .NET MAUI usando IronOCR.

Requisitos previos

Para crear una aplicación OCR en .NET MAUI, hay algunos 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 utilizando la consola del gestor de paquetes NuGet. Abra la consola de paquetes NuGet haciendo clic con el botón derecho en el explorador de soluciones y escribiendo el siguiente comando para instalar la biblioteca IronOCR.

Install-Package IronOcr

Diseño frontend

En esta sección diseñaremos el frontend de la aplicación. Abra el archivo MainPage.xaml.

.NET MAUI OCR Tutorial Usando IronOCR - Figura 1: MainPage.xaml

MainPage.xaml

Designamos un botón que nos ayudará a seleccionar la imagen o documento PDF para el OCR. La propiedad clicked del botón se establece para ejecutar la función IOCR. Definiremos esta función en la siguiente sección.

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

Aquí creamos una caja Image con el nombre OCRImage. Este cuadro de imagen ayudará a visualizar el archivo seleccionado.

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

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

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

Aquí está la interfaz de usuario XAML completada.

<?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 el momento de escribir el código para la funcionalidad OCR.

Código para OCR con IronOCR

Abra el archivo de clase "MainPage.xaml.cs" y escriba la siguiente función en él.

.NET MAUI OCR Tutorial Usando IronOCR - Figura 2: MainPage.xaml.cs

MainPage.xaml.cs

private async void IOCR(object sender, EventArgs e)
{
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
        PickerTitle = "Pick image",
        FileTypes = FilePickerFileType.Images
    });
    var path = images.FullPath.ToString();
    OCRImage.Source = path;

    var ocr = new IronTesseract();
    using (var input = new OcrInput())
    {
        input.AddImage(path);
        OcrResult result = ocr.Read(input);
        string text = result.Text;
        outputText.Text = text; 
    }
}
private async void IOCR(object sender, EventArgs e)
{
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
        PickerTitle = "Pick image",
        FileTypes = FilePickerFileType.Images
    });
    var path = images.FullPath.ToString();
    OCRImage.Source = path;

    var ocr = new IronTesseract();
    using (var input = new OcrInput())
    {
        input.AddImage(path);
        OcrResult result = ocr.Read(input);
        string text = result.Text;
        outputText.Text = text; 
    }
}
Private Async Sub IOCR(ByVal sender As Object, ByVal e As EventArgs)
	Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
		.PickerTitle = "Pick image",
		.FileTypes = FilePickerFileType.Images
	})
	Dim path = images.FullPath.ToString()
	OCRImage.Source = path

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

Desglosemos el código anterior.

El siguiente fragmento de código ayuda a elegir la imagen utilizando el objeto FilePicker de C#. El título del FilePicker y el tipo de archivo del FilePicker se establecen como valores, junto con la ruta de la imagen.

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

A continuación se configura el control de caja Image para utilizar la imagen especificada en la variable path anterior.

OCRImage.Source = path;
OCRImage.Source = path;
OCRImage.Source = path
VB   C#

A continuación, empezamos a utilizar IronOCR creando una nueva instancia de la clase IronTesseract. Lo utilizamos para extraer texto de la imagen seleccionada y, a continuación, para mostrar el contenido 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
VB   C#

Salida

Tras ejecutar el proyecto, aparece la siguiente interfaz de usuario. Cuando haga clic en el botón, se le pedirá que seleccione la imagen/PDF desde cualquier ubicación.

.NET MAUI OCR Tutorial Usando IronOCR - Figura 3: Salida OCR

Salida OCR

Tras seleccionar la imagen, IronOCR la procesa y muestra las palabras reconocidas en el control Editor. Puede copiar el texto desde el control Editor.

.NET MAUI OCR Tutorial Usando IronOCR - Figura 4: Imagen OCR

Imagen OCR

De los resultados se desprende que IronOCR realiza un magnífico trabajo en el procesamiento de imágenes complejas con patrones, mostrando resultados precisos. IronOCR es capaz de detectar el punto rojo en la letra y seleccionar la letra exacta requerida utilizando sus modelos preentrenados.

Conclusión

Para más información, consulte tutorial que ofrece información adicional sobre cómo utilizar IronOCR para leer texto a partir de imágenes.

IronOCR es gratuito para fines de desarrollo. Puede adquirirlo por un precio muy bajo a partir de $599. Consulte el plan de precios aquí.