Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
Con el auge de la tecnología móvil, las aplicaciones de escaneo de documentos como Scanbot SDK y los SDK Nativos se han convertido en herramientas indispensables para individuos y empresas por igual. En este tutorial, exploraremos cómo crear una aplicación de escaneo de documentos utilizando la última versión de .NET Multi-platform App UI (MAUI) e IronOCR, una potente biblioteca de OCR (Reconocimiento Óptico de Caracteres) para .NET. .NET MAUI simplifica la creación de aplicaciones móviles multiplataforma como Android, garantizando una implementación perfecta en el dispositivo del usuario final. Al final de esta guía, podrá desarrollar su propia aplicación SDK de escáner de documentos que puede extraer texto de imágenes y archivos escaneados con facilidad.
Instale la biblioteca de C# de IronOCR para usar el SDK de escáner de documentos.
Diseña un formulario .NET MAUI con los controles necesarios.
Capturar marco de foto usando el método MediaPicker.CapturePhotoAsync.
Convertir la foto capturada a Stream.
Pase el flujo al método LoadImage de OcrInput.
Realice OCR utilizando el método Read de IronTesseract.
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 la forma en que las empresas gestionan el procesamiento de documentos, facilitando la extracción de información valiosa de diversas fuentes, como documentos escaneados, PDF e imágenes.
IronOCR destaca entre las soluciones de OCR por sus funciones avanzadas, su sólido rendimiento y su facilidad de integración. Tanto si es un desarrollador que desea incorporar funciones de OCR a sus aplicaciones como si es una empresa que busca agilizar los procesos de gestión de documentos generados por datos, IronOCR le ofrece una solución integral.
Estas son algunas de las principales características de IronOCR:
Alta precisión: IronOCR utiliza 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 con precisión texto de documentos complejos, incluidas imágenes con QR de baja resolución o escaneados de mala calidad.
Soporte Multilingüe: Una de las características destacadas de IronOCR es su extenso soporte de idiomas. Puede reconocer texto en más de 127 idiomas, lo que la hace adecuada para empresas que operan en entornos lingüísticos diversos.
Preprocesamiento de imágenes: Para mejorar la precisión, IronOCR ofrece diversas capacidades de preprocesamiento de imágenes, como reducción de ruido, ajuste de contraste y corrección de sesgo. Estas técnicas de preprocesamiento ayudan a mejorar los resultados del OCR, especialmente cuando se trata de imágenes distorsionadas o imperfectas.
Soporte para Varios Formatos de Archivo: IronOCR admite una amplia variedad de formatos de archivo, incluidos TIFF, JPEG, PNG y PDF. Esta flexibilidad permite a los usuarios procesar documentos de distintas fuentes sin preocuparse por problemas de compatibilidad.
Opciones de personalización: Los desarrolladores pueden personalizar el comportamiento de IronOCR según sus requisitos específicos. Tanto si se trata de ajustar los parámetros de reconocimiento como de integrarlo con los flujos de trabajo existentes, IronOCR ofrece un alto grado de flexibilidad y personalización.
Rápido y escalable: IronOCR está optimizado para el rendimiento, lo que permite una extracción rápida de texto incluso de grandes volúmenes de documentos. Su arquitectura escalable garantiza un funcionamiento sin problemas, tanto si procesa un puñado de documentos como si gestiona depósitos de documentos masivos.
Integración con aplicaciones .NET: IronOCR se integra perfectamente con aplicaciones .NET, proporcionando a los desarrolladores APIs y bibliotecas fáciles de usar para incorporar la funcionalidad de OCR en sus proyectos de software. Esta estrecha integración simplifica el desarrollo y acelera el tiempo de comercialización de las aplicaciones compatibles con OCR.
Abre Visual Studio 2022 y crea un nuevo proyecto .NET MAUI App.
Elija un nombre de proyecto adecuado y configure los ajustes del proyecto.
Haga clic con el botón derecho en su solución en Visual Studio.
Empecemos diseñando el layout de nuestra MainPage.xaml. Crearemos un diseño sencillo con un control de imagen para mostrar la foto capturada, un botón Capturar para tomar fotos y una Etiqueta 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>
En esta disposición:
Para integrar la funcionalidad de extracción de texto en nuestra aplicación .NET MAUI Document Scanning, seguiremos estos pasos:
Utilice la API de la cámara: Comience aprovechando la API de la cámara proporcionada por .NET MAUI para capturar archivos de imagen directamente dentro de su aplicación.
Pasar imagen a IronOCR: Una vez que se captura una imagen, pásala a IronOCR, una potente biblioteca OCR, para la extracción de texto. IronOCR proporciona una sólida funcionalidad para extraer texto de imágenes con gran precisión.
Mostrar el texto extraído: Finalmente, muestre el texto extraído en el área designada en la interfaz de usuario de su aplicación. Esto permite a los usuarios ver fácilmente el texto extraído de la imagen capturada o del código QR.
A continuación se muestra 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 Namespace
Desglosemos el código paso a paso:
Si el texto se extrae con éxito, lo mostramos en un control Label llamado textLabel. Si no se detecta texto, mostramos un mensaje de error utilizando DisplayAlert.
Para un uso más robusto de IronOCR y detalles del código, visite esta página de ejemplos de código.
Siguiendo este tutorial, habrás aprendido a utilizar el SDK de escáner de documentos IronOCR en .NET MAUI. Las aplicaciones de escaneado de documentos tienen numerosas aplicaciones prácticas, desde la digitalización de documentos en papel hasta la extracción de información almacenada en recibos y facturas. Con las potentes funciones de IronOCR y la flexibilidad de .NET MAUI, puede crear aplicaciones de escáner de documentos ricas en funciones que se adapten a diversos casos de uso. Experimenta con distintas funcionalidades, explora bibliotecas adicionales y sigue 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 visite esta página de documentación.
IronOCR ofrece una prueba gratuita para probar su funcionalidad completa en modo comercial. Su licencia perpetua lite comienza desde $749. Descargue la biblioteca desde la página de descarga y pruébela.