OCR de .NET MAUI con IronOCR
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.
Cómo realizar OCR en .NET MAUI
- Descargue la biblioteca C# para realizar OCR en .NET MAUI
- Configurar el frontend del proyecto MAUI
- Pase la ruta completa de la imagen usando la clase FilePicker
- Invoque el método
Readpara realizar OCR en la imagen - Acceda al texto extraído accediendo a la propiedad Texto y visualícelo
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:
- 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 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.

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" />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" />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" />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>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:

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 SubDesglosamos el código anterior:
- El código utiliza el
FilePickerpara 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()- El control
Imageestá configurado para mostrar la imagen seleccionada usando su ruta de archivo.
OCRImage.Source = path;OCRImage.Source = path;OCRImage.Source = path- Se crea un objeto
IronTesseractpara realizar OCR. La imagen seleccionada se agrega a un objetoOcrInput. Se llama al métodoReadpara extraer texto de la imagen, que luego se muestra en el controlEditor.
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 UsingProducció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.

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.

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.







