Cómo Usar un SDK de Escáner de Documentos en una Aplicación .NET MAUI
Con el auge de la tecnología móvil, las aplicaciones de escaneo de documentos como Scanbot SDK y SDK Nativos se han convertido en herramientas indispensables tanto para individuos como para empresas. En este tutorial, exploraremos cómo crear una aplicación de escáner de documentos utilizando la última versión de .NET Multi-platform App UI (MAUI) e IronOCR, una poderosa biblioteca OCR (Reconocimiento Óptico de Caracteres) para .NET. .NET MAUI simplifica la creación de aplicaciones móviles multiplataforma, asegurando un despliegue fluido en dispositivos como Android. Al final de esta guía, podrás desarrollar tu propia aplicación SDK de escáner de documentos que pueda extraer texto de imágenes y archivos escaneados con facilidad.
Cómo utilizar un SDK de escáner de documentos en una aplicación .NET MAUI
- Instala la biblioteca C# IronOCR para usar el SDK de escáner de documentos.
- Diseña un formulario .NET MAUI con los controles necesarios.
- Captura una foto utilizando el método MediaPicker.CapturePhotoAsync.
- Convierte la foto capturada a un Stream.
- Pasa el stream al método OcrInput LoadImage.
- Realiza OCR usando el método IronTesseract Read.
- Muestra el texto del documento utilizando la propiedad Text de OcrResult.
IronOCR - La biblioteca de OCR de C#
IronOCR es un software de Reconocimiento Óptico de Caracteres (OCR) de última generación desarrollado por Iron Software, LLC, diseñado para convertir imágenes y documentos escaneados en texto editable de manera precisa y eficiente. La tecnología OCR ha revolucionado cómo las empresas manejan el procesamiento de documentos, facilitando la extracción de información valiosa de varias fuentes como documentos escaneados, PDFs e imágenes.
IronOCR se destaca entre las soluciones OCR debido a sus características avanzadas, rendimiento robusto y facilidad de integración. Ya sea que seas un desarrollador buscando incorporar características OCR en tus aplicaciones o una empresa que busca optimizar los procesos de gestión documental, IronOCR ofrece una solución completa.
Características principales de IronOCR
- Alta Precisión: IronOCR emplea algoritmos de última generación y técnicas de aprendizaje automático para lograr una precisión excepcional en el reconocimiento de texto. Puede extraer texto con precisión de documentos complejos, incluyendo imágenes con baja resolución o escaneos de mala calidad.
- Soporte Multilingüe: IronOCR es compatible con el reconocimiento de texto en más de 125 idiomas, haciéndolo adecuado para negocios que operan en diversos entornos lingüísticos.
- Preprocesamiento de Imágenes: IronOCR proporciona varias capacidades de preprocesamiento de imágenes, como reducción de ruido, ajuste de contraste y enderezamiento, para mejorar la precisión. Estas técnicas mejoran los resultados de OCR, especialmente en imágenes distorsionadas o imperfectas.
- Soporte para varios formatos de archivo: IronOCR es compatible con una amplia gama de formatos de archivo, incluyendo TIFF, JPEG, PNG y PDF, asegurando compatibilidad con diferentes fuentes de documentos.
- Opciones de personalización: Los desarrolladores pueden personalizar el comportamiento de IronOCR para cumplir con requisitos específicos, ofreciendo flexibilidad en los parámetros de reconocimiento y en la integración de flujos de trabajo.
- Rápido y Escalable: Optimizado para el rendimiento, IronOCR extrae texto rápidamente de grandes volúmenes de documentos. Su arquitectura escalable asegura una operación fluida, independientemente del volumen de documentos.
- Integración con aplicaciones .NET: IronOCR se integra sin problemas con aplicaciones .NET, proporcionando una API fácil de usar para incorporar funcionalidad de OCR. Esto simplifica el desarrollo y acelera el tiempo de comercialización para aplicaciones habilitadas con OCR.
- Clasificación de Documentos y Extracción de Datos: Más allá del reconocimiento básico de texto, IronOCR ofrece características avanzadas para la clasificación de documentos y la extracción de datos, identificando campos de datos específicos como nombres, direcciones o números de factura.
Requisitos previos
- Conocimientos básicos de programación en C#.
- Visual Studio 2022 instalado con la carga de trabajo de .NET MAUI.
- Biblioteca de paquetes IronOCR instalada a través del Administrador de Paquetes NuGet.
1. Configuración de su proyecto .NET MAUI
- Abre Visual Studio 2022 y crea un nuevo proyecto de aplicación .NET MAUI.

- Elige un nombre de proyecto adecuado y configura las opciones de tu proyecto.

- Asegúrate de tener instalados los SDKs necesarios de Android y iOS para el desarrollo de dispositivos en plataformas objetivo.
2. Instalación de la biblioteca IronOCR
- Haz clic derecho en tu Solución en Visual Studio.
- Selecciona 'Administrar paquetes NuGet para la solución' y en la pestaña Explorar, busca 'IronOCR'.

- Instala la biblioteca IronOCR en tu proyecto.
3. Diseño de la interfaz de usuario
Empecemos diseñando el diseño de nuestro MainPage.xaml. Crearemos un diseño simple con un control de imagen para mostrar la foto capturada, un botón de captura para tomar fotos y un Label para mostrar el texto extraído.
Aquí está el código XAML para MainPage.xaml:
<?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"
xmlns:d="http://schemas.microsoft.com/dotnet/2021/maui/design"
x:Class="DocumentScanner.MainPage">
<ScrollView>
<VerticalStackLayout Padding="30,0" Spacing="25">
<Image Source="dotnet_bot.png"
HeightRequest="185"
Aspect="AspectFit"
SemanticProperties.Description="dot net bot in a race car number eight" />
<Label Text="Welcome to .NET MAUI Document Scanner SDK"
Style="{StaticResource Headline}"
SemanticProperties.HeadingLevel="Level1" />
<Label Text="Using IronOCR"
Style="{StaticResource SubHeadline}"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome to .NET MAUI Document Scanner SDK" />
<!-- Camera preview -->
<Image x:Name="cameraPreview" />
<!-- Capture button -->
<Button Text="Capture" Clicked="OnCaptureClicked" />
<!-- Text display area -->
<Label x:Name="textLabel" Text="Recognized Text:"/>
</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"
xmlns:d="http://schemas.microsoft.com/dotnet/2021/maui/design"
x:Class="DocumentScanner.MainPage">
<ScrollView>
<VerticalStackLayout Padding="30,0" Spacing="25">
<Image Source="dotnet_bot.png"
HeightRequest="185"
Aspect="AspectFit"
SemanticProperties.Description="dot net bot in a race car number eight" />
<Label Text="Welcome to .NET MAUI Document Scanner SDK"
Style="{StaticResource Headline}"
SemanticProperties.HeadingLevel="Level1" />
<Label Text="Using IronOCR"
Style="{StaticResource SubHeadline}"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome to .NET MAUI Document Scanner SDK" />
<!-- Camera preview -->
<Image x:Name="cameraPreview" />
<!-- Capture button -->
<Button Text="Capture" Clicked="OnCaptureClicked" />
<!-- Text display area -->
<Label x:Name="textLabel" Text="Recognized Text:"/>
</VerticalStackLayout>
</ScrollView>
</ContentPage>En este diseño:
- Usamos un VerticalStackLayout para apilar los controles verticalmente.
- El control Image llamado cameraPreview se usa para mostrar la foto capturada.
- El control Button desencadena el controlador de eventos OnCaptureClicked cuando se hace clic.
- El control Label llamado textLabel se utiliza para mostrar el texto extraído.
Resultado

4. Implementación de la funcionalidad de escaneo de documentos
Para integrar la funcionalidad de extracción de texto en nuestra aplicación de escaneo de documentos .NET MAUI, seguiremos estos pasos:
- Utilizar la API de Cámara: Aprovechar la API de cámara proporcionada por .NET MAUI para capturar archivos de imagen directamente dentro de tu aplicación.
- Pasar Imagen a IronOCR: Una vez que se captura una imagen, pásala a IronOCR para la extracción de texto, aprovechando su robusta funcionalidad.
- Mostrar Texto Extraído: Muestra el texto extraído en el área designada en la interfaz de usuario de tu aplicación para su visualización por el usuario.
Aquí está el fragmento de código correspondiente que implementa estos pasos:
using IronOcr;
namespace DocumentScanner
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void OnCaptureClicked(object sender, EventArgs e)
{
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
try
{
// Request camera permissions
var status = await Permissions.RequestAsync<Permissions.Camera>();
if (status == PermissionStatus.Granted)
{
// Take photo
var photo = await MediaPicker.CapturePhotoAsync();
if (photo != null)
{
// Display captured photo in Image
cameraPreview.Source = ImageSource.FromStream(() => photo.OpenReadAsync().Result);
using (var stream = await photo.OpenReadAsync())
{
// Use a stream from the captured photo for OCR
var ocr = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage(stream);
var ocrResult = ocr.Read(ocrInput);
if (string.IsNullOrEmpty(ocrResult.Text))
{
await DisplayAlert("Error", "No Text Detected!", "OK");
}
else
{
await DisplayAlert("Text Detected!", ocrResult.Text, "OK");
// Display extracted text
textLabel.Text = ocrResult.Text;
}
}
}
}
else
{
// Camera permission denied
await DisplayAlert("Permission Denied", "Camera permission is required to capture photos.", "OK");
}
}
catch (Exception ex)
{
// Handle exception
await DisplayAlert("Error", ex.Message, "OK");
}
}
}
}using IronOcr;
namespace DocumentScanner
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void OnCaptureClicked(object sender, EventArgs e)
{
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
try
{
// Request camera permissions
var status = await Permissions.RequestAsync<Permissions.Camera>();
if (status == PermissionStatus.Granted)
{
// Take photo
var photo = await MediaPicker.CapturePhotoAsync();
if (photo != null)
{
// Display captured photo in Image
cameraPreview.Source = ImageSource.FromStream(() => photo.OpenReadAsync().Result);
using (var stream = await photo.OpenReadAsync())
{
// Use a stream from the captured photo for OCR
var ocr = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage(stream);
var ocrResult = ocr.Read(ocrInput);
if (string.IsNullOrEmpty(ocrResult.Text))
{
await DisplayAlert("Error", "No Text Detected!", "OK");
}
else
{
await DisplayAlert("Text Detected!", ocrResult.Text, "OK");
// Display extracted text
textLabel.Text = ocrResult.Text;
}
}
}
}
else
{
// Camera permission denied
await DisplayAlert("Permission Denied", "Camera permission is required to capture photos.", "OK");
}
}
catch (Exception ex)
{
// Handle exception
await DisplayAlert("Error", ex.Message, "OK");
}
}
}
}Imports IronOcr
Namespace DocumentScanner
Partial Public Class MainPage
Inherits ContentPage
Public Sub New()
InitializeComponent()
End Sub
Private Async Sub OnCaptureClicked(ByVal sender As Object, ByVal e As EventArgs)
License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
Try
' Request camera permissions
Dim status = Await Permissions.RequestAsync(Of Permissions.Camera)()
If status = PermissionStatus.Granted Then
' Take photo
Dim photo = Await MediaPicker.CapturePhotoAsync()
If photo IsNot Nothing Then
' Display captured photo in Image
cameraPreview.Source = ImageSource.FromStream(Function() photo.OpenReadAsync().Result)
Using stream = Await photo.OpenReadAsync()
' Use a stream from the captured photo for OCR
Dim ocr = New IronTesseract()
Dim ocrInput As New OcrInput()
ocrInput.LoadImage(stream)
Dim ocrResult = ocr.Read(ocrInput)
If String.IsNullOrEmpty(ocrResult.Text) Then
Await DisplayAlert("Error", "No Text Detected!", "OK")
Else
Await DisplayAlert("Text Detected!", ocrResult.Text, "OK")
' Display extracted text
textLabel.Text = ocrResult.Text
End If
End Using
End If
Else
' Camera permission denied
Await DisplayAlert("Permission Denied", "Camera permission is required to capture photos.", "OK")
End If
Catch ex As Exception
' Handle exception
Await DisplayAlert("Error", ex.Message, "OK")
End Try
End Sub
End Class
End NamespaceExplicación del código
Desglosemos el código paso a paso:
- En el archivo MainPage.xaml.cs, el método OnCaptureClicked está definido para manejar el evento de clic del botón de captura.
- Se configura la clave de licencia de IronOCR, necesaria para usar la biblioteca IronOCR. Reemplaza
"YOUR-LICENSE-KEY-HERE"con tu clave de licencia actual. - Se solicitan permisos de cámara utilizando Permissions.RequestAsync
() para asegurar que la aplicación pueda acceder a la cámara del dispositivo. - Se llama a MediaPicker.CapturePhotoAsync() para tomar una foto usando la cámara. Si tiene éxito, la foto se muestra en el control de imagen cameraPreview.
- Se abre un stream de la foto capturada y se usa como entrada para IronOCR, creando una instancia de IronTesseract, cargando el stream de imágenes en un objeto OcrInput y llamando al método Read para realizar OCR.
- El texto extraído se muestra en el control textLabel si tiene éxito. Si no se detecta texto, se muestra un mensaje de error utilizando DisplayAlert.
Para una exploración más profunda de IronOCR y ejemplos de código adicionales, visita esta página de ejemplos de código.
5. Prueba de la aplicación del escáner de documentos
- Ejecuta la aplicación en varias plataformas (Android, iOS y Windows) para garantizar la compatibilidad multiplataforma.
- Prueba diferentes escenarios, como escanear documentos con diversas fuentes, tamaños y orientaciones.
- Verifica que el texto extraído sea preciso y se muestre correctamente en la interfaz de usuario.
Salida: Documento escaneado sin texto

Salida: Documento escaneado con texto

Conclusión
Al seguir este tutorial, has aprendido cómo usar el SDK de escáner de documentos de IronOCR dentro de .NET MAUI. Las aplicaciones de escaneo de documentos tienen numerosas aplicaciones prácticas, desde digitalizar documentos en papel hasta extraer información almacenada en recibos y facturas. Utilizando las poderosas capacidades de IronOCR y la flexibilidad de .NET MAUI, puedes construir aplicaciones de escaneo de documentos ricas en funciones que se adapten a varios casos de uso. Experimenta con diferentes funcionalidades, explora bibliotecas adicionales y continúa perfeccionando tus habilidades para crear aplicaciones aún más impresionantes.
Para obtener información más detallada sobre las capacidades de IronOCR, por favor visita esta página de documentación.
IronOCR ofrece una prueba gratuita para probar su funcionalidad completa en modo comercial. Su licencia perpetua lite comienza a partir de $799. Descarga la biblioteca desde la página de descarga y pruébala.
Preguntas Frecuentes
¿Cómo puedo crear una aplicación de escáner de documentos usando .NET MAUI?
Puedes crear una aplicación de escáner de documentos usando .NET MAUI aprovechando IronOCR para el Reconocimiento Óptico de Caracteres. Comienza instalando IronOCR a través del Gestor de Paquetes NuGet en Visual Studio, luego usa .NET MAUI para diseñar la interfaz de usuario de tu aplicación e implementa la funcionalidad de escaneo usando el método Read de IronTesseract.
¿Cuáles son los beneficios de usar IronOCR para una aplicación de escáner de documentos?
IronOCR ofrece alta precisión en el reconocimiento de texto, soporte multilingüe y compatibilidad con varios formatos de archivos. También ofrece preprocesamiento de imágenes, rendimiento rápido e integración perfecta con aplicaciones .NET, lo que lo convierte en una opción robusta para una aplicación de escáner de documentos.
¿Cómo instalo IronOCR en un proyecto .NET MAUI?
Para instalar IronOCR en un proyecto .NET MAUI, abre Visual Studio y usa el Gestor de Paquetes NuGet para buscar 'IronOCR'. Añade el paquete a tu proyecto para comenzar a usar sus funcionalidades de OCR.
¿Qué pasos están involucrados en la captura y procesamiento de imágenes en una aplicación de escáner de documentos?
El proceso involucra usar el MediaPicker para capturar imágenes, convertirlas a un formato de flujo y luego usar el IronTesseract de IronOCR para realizar la extracción de texto. El texto extraído puede mostrarse en la interfaz de usuario de la aplicación.
¿Qué formatos de archivo son compatibles con IronOCR para el procesamiento de OCR?
IronOCR es compatible con una amplia gama de formatos de archivo, incluidos TIFF, JPEG, PNG y PDF, lo que permite capacidades versátiles de escaneo de documentos y extracción de texto.
¿Puede IronOCR soportar OCR en múltiples idiomas?
Sí, IronOCR soporta OCR en más de 125 idiomas, lo que lo hace adecuado para aplicaciones que requieren reconocimiento de texto en diversos contextos lingüísticos.
¿Cómo facilita .NET MAUI el desarrollo multiplataforma?
.NET MAUI permite a los desarrolladores construir aplicaciones móviles multiplataforma con una única base de código, permitiendo un despliegue sin problemas en dispositivos Android, iOS y Windows.
¿Cuáles son los requisitos previos para desarrollar una aplicación de escáner de documentos con .NET MAUI?
Los requisitos previos incluyen conocimiento básico de programación en C#, Visual Studio 2022 con la carga de trabajo .NET MAUI y la biblioteca IronOCR instalada desde NuGet.
¿Cómo puedo probar la compatibilidad de mi aplicación de escáner de documentos en todas las plataformas?
Puedes probar tu aplicación de escáner de documentos en todas las plataformas al desplegarla en dispositivos Android, iOS y Windows para asegurar la funcionalidad y precisión en la extracción de texto, aprovechando las capacidades multiplataforma de .NET MAUI.






