.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.
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 utilizando la opción FilePicker clase
- Invocar el
Leer
método para realizar el reconocimiento óptico de caracteres en la imagen - Acceda al texto extraído mediante Texto y mostrarla
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.
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.
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" />
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" />
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.
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 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()
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
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
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.
Tras seleccionar la imagen, IronOCR la procesa y muestra las palabras reconocidas en el control Editor. Puede copiar el texto desde el control Editor.
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, consultetutorial que ofrece información adicional sobre cómo utilizar IronOCR paraleer texto a partir de imágenes.
IronOCR es gratuito para fines de desarrollo. Puede adquirirlo por un precio muy bajo a partir de $749. Consulte el plan de preciosaquí.