Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
Con el auge de la tecnología móvil, las aplicaciones de escaneo de documentos como Scanbot SDK y Native SDK se han convertido en herramientas indispensables o en expertos en soluciones tanto para particulares como para empresas. En este tutorial, vamos a explorar cómo crear una aplicación de escáner de documentos utilizando la última versión de .NET Multi-plataforma App UI(MAUI) y IronOCR, un potente 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 IronOCR C# Library para utilizar Document Scanner SDK.
Diseña un formulario .NET MAUI con los controles necesarios.
Capturar Marco de Fotos usando el método MediaPicker.CapturePhotoAsync.
Convertir la foto capturada en Stream.
Pase el flujo al método LoadImage de OcrInput.
Realiza el OCR utilizando el método Read de IronTesseract.
IronOCR es un avanzado sistema de reconocimiento óptico de caracteres(OCR) desarrollado por Iron Software, LLC, diseñado para convertir con precisión y eficacia imágenes y documentos escaneados en texto editable. 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 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 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 más destacadas de IronOCR es su amplio 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 varias funciones de preprocesamiento de imágenes, como la reducción de ruido, el ajuste del contraste y la eliminación de la distorsión. Estas técnicas de preprocesamiento ayudan a mejorar los resultados del OCR, especialmente cuando se trata de imágenes distorsionadas o imperfectas.
**IronOCR es compatible con una amplia gama 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 de acuerdo a sus requerimientos 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 rápida extracción 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 API y bibliotecas fáciles de usar para incorporar la funcionalidad OCR a 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>
<?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>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<?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:
Utilizar la API de la cámara: Empieza aprovechando la API de cámara proporcionada por .NET MAUI para capturar archivos de imagen directamente dentro de tu aplicación.
Pase la imagen a IronOCR: Una vez capturada una imagen, pásela a IronOCR, una potente biblioteca de 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: Por último, muestre el texto extraído en el área designada de 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 correctamente, lo mostramos en un control Label llamado textLabel. Si no se detecta ningún texto, mostramos un mensaje de error utilizando DisplayAlert.
Para un uso más robusto de IronOCR y detalles del código, visite este enlaceejemplos de código página.
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, visite este enlacedocumentación página.
IronOCR proporciona un**Prueba gratuita para probar su funcionalidad completa en modo comercial. Su luz perpetualicencia comienza a partir de $749. Descargue la biblioteca dedescargar **y pruébalo.
9 productos API .NET para sus documentos de oficina