.NET MAUI OCR Usando IronOCR
Introducción
Microsoft lanzó .NET MAUI (Multi-platform App UI), que es un framework para construir aplicaciones multiplataforma con el .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 [GitHub](https://github.com/dotnet/maui" target="_blank" rel="nofollow noreferrer noopener).
En esta guía, aprenderemos a crear aplicaciones de procesador OCR en .NET MAUI usando la librería IronOCR con ejemplos.
Cómo realizar OCR en .NET Maui
IronOCR: biblioteca OCR .NET
IronOCR es una biblioteca NuGet OCR para .NET que permite a los desarrolladores integrar fácilmente la funcionalidad de 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 que soporta todas las versiones de Tesseract (desde Tesseract 3 hasta Tesseract 5) con una instalación/descarga fácil.
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%. Obtén más información y soporte sobre la comparación entre IronOCR y Tesseract en el video de [YouTube](https://www.youtube.com/watch?v=2QTEb6x8NJ4" target="_blank" rel="nofollow noopener noreferrer).
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.
Visual Studio 2022 (Última versión)
.NET 6 o 7
Paquetes MAUI instalados en Visual Studio
- 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.

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 está configurada 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" />
Aquí, creamos una caja de 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" />
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"
/>
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>
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.

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
Desglosemos el código anterior.
El siguiente fragmento de código ayuda a seleccionar la imagen utilizando el objeto FilePicker
de C#. El título de FilePicker
y el tipo de archivo de FilePicker
están configurados en 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()
El control de cuadro de Image
se configura a continuación para usar la imagen especificada en la variable path
anterior.
OCRImage.Source = path;
OCRImage.Source = path;
OCRImage.Source = path
Después, comenzamos 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
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.

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.

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.
Ejecutar el proyecto en modo de lanzamiento con depuración adjunta podría causar problemas. En tales casos, puede publicar el proyecto como una aplicación .NET MAUI sin empaquetar, como se muestra en el enlace a continuación, para asegurarse de que la aplicación funcione correctamente.
Conclusión
Para obtener más información, consulte este tutorial que proporciona información adicional sobre cómo utilizar IronOCR para leer texto de imágenes.
IronOCR es gratuito para fines de desarrollo. Puede comprarlo por el precio muy bajo que comienza desde solo $749. Consulta el plan de precios aquí.