Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
El procedimiento utilizado para transformar una imagen de texto en un formato de texto legible por máquina se conoce como reconocimiento óptico de caracteres. (OCR). Por ejemplo, si escanea un formulario, facturas o un recibo, el ordenador guarda el escaneado como un archivo de imagen. Los datos del archivo de imagen no pueden editarse, buscarse ni contarse con un editor de texto. Sin embargo, puede utilizar soluciones de OCR para convertir el archivo de imagen en un documento de texto con su contenido almacenado como datos de texto.
En esta era moderna, la mayoría de los flujos de trabajo empresariales implican recibir información de medios impresos. Diferentes documentos como formularios en papel, facturas, documentos legales escaneados, extracción de tablas, textos manuscritos e impresos o contratos forman parte de los procesos empresariales. Además, la digitalización de este tipo de contenido documental crea imágenes con el texto oculto en su interior. El texto de las imágenes no se puede procesar con un procesador de textos del mismo modo que los documentos de texto. La tecnología OCR resuelve el problema convirtiendo las imágenes de texto en datos de texto que pueden ser analizados por otro software empresarial.
El motor de OCR funciona siguiendo los siguientes pasos:
En este proceso, un escáner lee los documentos y los convierte en datos binarios. Los programas de OCR identifican la imagen escaneada y clasifican las zonas claras como fondo y las oscuras como texto.
El software de OCR primero limpia la imagen y elimina los errores para preparar sus datos para la lectura.
Los dos tipos principales de algoritmos OCR para el reconocimiento de texto son la coincidencia de patrones y la extracción de características.
La imagen de un carácter, o glifo, se aísla a lo largo del proceso de coincidencia de patrones y se compara con un glifo registrado previamente.
Mediante el proceso de extracción de características, los glifos se dividen en características como líneas, bucles cerrados, dirección de las líneas y cruces de líneas.
La tecnología transforma los datos de texto recuperados en un archivo digital tras su análisis. Algunos sistemas de OCR pueden crear documentos PDF con anotaciones que incluyen las versiones antes y después del documento escaneado.
En este artículo se analiza la comparación entre dos de las aplicaciones y bibliotecas de documentos más extendidas para OCR. Estos son:
IronOCR es una biblioteca C# .NET que ofrece servicios para escanear, buscar y leer imágenes y archivos PDF. Incluye más de 127 paquetes de idiomas globales. Los resultados se obtienen en forma de texto, datos estructurados o PDF con función de búsqueda. Compatible con versiones de .NET como 6, 5, Core, Standard y Framework.
IronOCR es único en su capacidad para detectar y extraer automáticamente datos de imágenes y documentos escaneados imperfectamente. La clase 'IronTesseract' tiene la API más sencilla. Proporciona la versión más avanzada de Tesseract conocida en cualquier lugar, en cualquier plataforma, con mayor velocidad, precisión y una DLL y API nativas.
IronOCR también puede escanear códigos de barras y códigos QR de todos los formatos de imagen, y lee texto y escanea PDF utilizando el último motor Tesseract 5.
Puede realizar fácilmente OCR en archivos PDF y exportar documentos PDF con capacidad de búsqueda mediante OCR.
Ahora, echemos un vistazo a AWS OCR.
AWS Textract de Amazon es un sistema de aprendizaje automático (ML) Servicio que extrae automáticamente texto, escritura y datos de documentos escaneados. Va más allá del simple reconocimiento óptico de caracteres (OCR) para identificar, comprender y extraer datos de formularios y tablas utilizando tecnología de aprendizaje profundo.
AWS OCR Textract utiliza el aprendizaje automático para leer y procesar cualquier tipo de documento, extrayendo con precisión texto, escritura a mano, datos tabulares y otros datos sin esfuerzo manual. En lugar de tardar horas o días en extraer los datos, Textract puede hacerlo rápidamente. Además, puedes añadir reseñas humanas con la Inteligencia Artificial Aumentada de Amazon (AI) para supervisar sus modelos y comprobar los datos sensibles.
Análisis escalable de documentos que puede acelerar la toma de decisiones.
El resto del artículo es el siguiente:
Creación de un proyecto de Visual Studio
Instalación de IronOCR
Instalación de AWS OCR Textract
PDF a texto
Imagen a texto
Código de barras y QR a texto
Licencias
Este tutorial utilizará la versión 2022 de Visual Studio, por lo que asumo que debes tenerla instalada.
La versión más reciente y estable de .NET Framework es la 6.0. Vamos a utilizarla.
Haga clic en el botón Crear y se creará el proyecto.
A continuación, instalaremos una a una las librerías para nuestro uso.
La biblioteca IronOCR puede descargarse e instalarse de cuatro maneras. Son las siguientes:
Uso del gestor de paquetes NuGet de Visual Studio.
Descarga directa a través del sitio web de NuGet.
Descarga directa a través de la página web de IronOCR.
El gestor de paquetes NuGet de Visual Studio puede utilizarse para incorporar IronOCR a un proyecto C#.
Ampliar Herramientas o haciendo clic con el botón derecho del ratón en el explorador de soluciones.
Ampliar el gestor de paquetes NuGet.
A continuación, aparecerá una nueva ventana en la barra de búsqueda: escriba IronOCR. Marque la casilla del proyecto a la derecha y haga clic en Instalar.
Utilizando este método, los desarrolladores pueden instalar la biblioteca IronOCR y cualquier paquete de idioma de su elección.
IronOCR puede descargarse directamente del sitio web de NuGet siguiendo estas instrucciones:
Navegue hasta el enlace "https://www.nuget.org/packages/IronOCR/".
Seleccione la opción de descarga de paquetes en el menú de la derecha.
Haga doble clic en el paquete de descarga. Se instalará automáticamente.
Los desarrolladores pueden descargar la biblioteca IronOCR directamente desde el sitio web mediante este enlace Enlace.
Haga clic con el botón derecho del ratón en el proyecto de la ventana de la solución.
A continuación, seleccione la opción Referencia y busque la ubicación de la referencia descargada.
En Visual Studio, vaya a Herramientas-> Gestor de paquetes NuGet -> Consola del gestor de paquetes
Install-Package IronOcr
El paquete se descargará/instalará en el proyecto actual y estará listo para su uso.
Después de escribir el comando, pulse Intro y se instalará.
Incluya esta línea de código en el programa para utilizar IronOCR:
using IronOcr;
using IronOcr;
Imports IronOcr
Ahora vamos a instalar AWS Textract.
Antes de utilizar Amazon Textract por primera vez, complete las siguientes tareas:
Regístrese en los servicios de AWS.
Crear un usuario IAM.
Una vez que te hayas registrado correctamente en la cuenta y hayas creado el usuario IAM, ya puedes configurar las claves de acceso en la consola de AWS para acceder a la API mediante programación utilizando C#. Necesitarás:
Puede descargar e instalar AWS Textract SDK desde NuGet Package Manager.
Incluya los siguientes espacios de nombres para utilizar AWS Textract:
using Amazon.Textract;
using Amazon.Textract.Model;
using Amazon.Textract;
using Amazon.Textract.Model;
Imports Amazon.Textract
Imports Amazon.Textract.Model
Ambas bibliotecas pueden extraer texto de archivos PDF. Veamos el código uno por uno.
IronOCR permite reconocer y leer texto de formatos de documentos PDF utilizando el avanzado Tesseract. Para extraer la información se utiliza el siguiente código sencillo:
var Ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddPdf("example.pdf","password");
// We can also select specific PDF page numbers to OCR
var Result = Ocr.Read(input);
Console.WriteLine(Result.Text);
Console.WriteLine($"{Result.Pages.Count()} Pages");
// Read every page of the PDF
}
var Ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddPdf("example.pdf","password");
// We can also select specific PDF page numbers to OCR
var Result = Ocr.Read(input);
Console.WriteLine(Result.Text);
Console.WriteLine($"{Result.Pages.Count()} Pages");
// Read every page of the PDF
}
Dim Ocr = New IronTesseract()
Using input = New OcrInput()
input.AddPdf("example.pdf","password")
' We can also select specific PDF page numbers to OCR
Dim Result = Ocr.Read(input)
Console.WriteLine(Result.Text)
Console.WriteLine($"{Result.Pages.Count()} Pages")
' Read every page of the PDF
End Using
El código es sencillo, limpio y muy fácil de entender y utilizar.
Amazon Textract facilita la incorporación de la detección y el análisis de texto de documentos a sus aplicaciones. El siguiente código se utiliza para leer PDF y el mismo PDF se pasa:
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new StartDocumentTextDetectionRequest();
request.DocumentLocation = new DocumentLocation
{
S3Object = new S3Object
{
Bucket = "your_bucket_name",
Name = "your_bucket_key"
}
};
var id = await client.StartDocumentTextDetectionAsync(request);
var jobId = id.JobId;
var response = client.GetDocumentTextDetectionAsync(new GetDocumentTextDetectionRequest{
JobId = jobId
});
response.Wait();
if (response.Result.JobStatus.Equals("SUCCEEDED"))
{
foreach (var block in response.Result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
else if (block.BlockType == "PAGE")
{
Console.WriteLine(block.Text);
}
else if (block.BlockType == "Line")
{
Console.WriteLine(block.Text);
}
}
}
}
}
static void Main(String [] args)
{
ReturnResult();
}
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new StartDocumentTextDetectionRequest();
request.DocumentLocation = new DocumentLocation
{
S3Object = new S3Object
{
Bucket = "your_bucket_name",
Name = "your_bucket_key"
}
};
var id = await client.StartDocumentTextDetectionAsync(request);
var jobId = id.JobId;
var response = client.GetDocumentTextDetectionAsync(new GetDocumentTextDetectionRequest{
JobId = jobId
});
response.Wait();
if (response.Result.JobStatus.Equals("SUCCEEDED"))
{
foreach (var block in response.Result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
else if (block.BlockType == "PAGE")
{
Console.WriteLine(block.Text);
}
else if (block.BlockType == "Line")
{
Console.WriteLine(block.Text);
}
}
}
}
}
static void Main(String [] args)
{
ReturnResult();
}
Public Shared Async Sub ReturnResult()
Dim client As New AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1)
Dim request = New StartDocumentTextDetectionRequest()
request.DocumentLocation = New DocumentLocation With {
.S3Object = New S3Object With {
.Bucket = "your_bucket_name",
.Name = "your_bucket_key"
}
}
Dim id = Await client.StartDocumentTextDetectionAsync(request)
Dim jobId = id.JobId
Dim response = client.GetDocumentTextDetectionAsync(New GetDocumentTextDetectionRequest With {.JobId = jobId})
response.Wait()
If response.Result.JobStatus.Equals("SUCCEEDED") Then
For Each block In response.Result.Blocks
If block.BlockType = "WORD" Then
Console.WriteLine(block.Text)
ElseIf block.BlockType = "PAGE" Then
Console.WriteLine(block.Text)
ElseIf block.BlockType = "Line" Then
Console.WriteLine(block.Text)
End If
Next block
End If
End Sub
}
Shared Sub Main(ByVal args() As String)
ReturnResult()
End Sub
El código es un poco complicado, largo y requiere atención al pasar y recuperar objetos. En primer lugar, tenemos que crear el objeto AmazonTextractClient con 3 parámetros: AccessKeyId
, Clave de acceso secreta
y Región
. A continuación, tenemos que iniciar una solicitud utilizando StartDocumentTextDetectionRequest()
method. A continuación, el objeto de solicitud establece el Ubicación del documento
utilizando el nombre y la clave del cubo. Esta solicitud se pasa a StartDocumentTextDetectionAsync()
method. Como es un método asíncrono, tenemos que usar la palabra clave await antes de él y hacer que el método ReturnResult
función async. Si tiene éxito, se devuelve el resultado y se guarda el jobid. El jobid se pasa a GetDocumentTextDetectionAsync()
y espere a que SUCEDED
respuesta. El bucle Foreach se utiliza para recorrer cada bloque y comprobar si es "PALABRA", "PÁGINA" o "LÍNEA", y luego imprimir el reconocimiento de texto. Por último, llame a este método en el método Main para el procesamiento de documentos.
El resultado es bastante similar al de IronOCR.
Leer datos de imágenes es complicado, ya que la calidad de la imagen desempeña un papel vital a la hora de extraer información. Ambas bibliotecas permiten extraer texto. Aquí utilizaremos archivos png.
El código es casi similar al anterior. Toma, AñadirPDF
se sustituye por AñadirImagen
método.
var Ocr = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddImage("test-files/redacted-employmentapp.png")
//... you can add any number of images
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
var Ocr = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddImage("test-files/redacted-employmentapp.png")
//... you can add any number of images
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
Dim Ocr = New IronTesseract()
Using Input = New OcrInput()
Input.AddImage("test-files/redacted-employmentapp.png") var Result = Ocr.Read(Input)
Console.WriteLine(Result.Text)
End Using
La salida es limpia y coincide con la imagen original sólo con unas pocas líneas de código sin ningún tecnicismo y salida perfecta.
El siguiente código ayuda a detectar texto a partir de imágenes:
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new DetectDocumentTextRequest();
request.Document = new Document {
Bytes = new MemoryStream(File.ReadAllBytes(@"test-files/redacted-employmentapp.png"))};
var result = await client.DetectDocumentTextAsync(request);
foreach (var block in result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
}
}
static void Main(String [] args)
{
ReturnResult();
}
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new DetectDocumentTextRequest();
request.Document = new Document {
Bytes = new MemoryStream(File.ReadAllBytes(@"test-files/redacted-employmentapp.png"))};
var result = await client.DetectDocumentTextAsync(request);
foreach (var block in result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
}
}
static void Main(String [] args)
{
ReturnResult();
}
Public Shared Async Sub ReturnResult()
Dim client As New AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1)
Dim request = New DetectDocumentTextRequest()
request.Document = New Document With {.Bytes = New MemoryStream(File.ReadAllBytes("test-files/redacted-employmentapp.png"))}
Dim result = Await client.DetectDocumentTextAsync(request)
For Each block In result.Blocks
If block.BlockType = "WORD" Then
Console.WriteLine(block.Text)
End If
Next block
End Sub
Shared Sub Main(ByVal args() As String)
ReturnResult()
End Sub
De nuevo, el código es casi similar al anterior. Aquí, tenemos que iniciar una solicitud utilizando DetectDocumentTextRequest()
method. A continuación, el objeto de solicitud establece el documento leyendo todos los bytes. Esta solicitud se pasa a DetectDocumentTextAsync() método. Como es un método asíncrono, tenemos que usar la palabra clave await antes de él y hacer que el método ReturnResult
función async. Si tiene éxito, el resultado se devuelve en bloques. El bucle Foreach se utiliza para recorrer cada bloque y comprobar si es "WORD", a continuación, imprimir el reconocimiento de texto. Por último, llame a este método en el método Main para el procesamiento de documentos.
El resultado es similar al de IronOCR, pero este necesita que el archivo se cargue en el bucket de AWS en primer lugar.
Una característica única de IronOCR es que puede leer códigos de barras y códigos QR de los documentos mientras escanea el texto. Instancias del OcrResult.OcrBarcode
proporciona al desarrollador información detallada sobre cada código de barras escaneado. AWS Textract no proporciona esta funcionalidad.
A continuación se indica el código de IronOCR:
var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
input.AddImage("test-files/Barcode.png");
var Result = Ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
Console.WriteLine(Barcode.Value);
// type and location properties also exposed
}
}
var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
input.AddImage("test-files/Barcode.png");
var Result = Ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
Console.WriteLine(Barcode.Value);
// type and location properties also exposed
}
}
Dim Ocr = New IronTesseract()
Ocr.Configuration.ReadBarCodes = True
Using input = New OcrInput()
input.AddImage("test-files/Barcode.png")
Dim Result = Ocr.Read(input)
For Each Barcode In Result.Barcodes
Console.WriteLine(Barcode.Value)
' type and location properties also exposed
Next Barcode
End Using
El código se explica por sí mismo y es fácil de entender.
IronOCR es una biblioteca que ofrece gratuitamente una licencia para desarrolladores. También tiene una estructura de precios distinta; el paquete Lite cuesta a partir de $599 sin cargos ocultos. También es posible la redistribución de productos SaaS y OEM. Todas las licencias incluyen una garantía de devolución del dinero de 30 días, un año de soporte y actualizaciones del software, validez para desarrollo/establecimiento/producción y una licencia perpetua. (compra única). Para ver toda la estructura de precios de IronOCR y los detalles de las licencias, vaya a aquí.
Puede obtener el servicio de redistribución de productos SaaS y OEM sin derechos de autor por sólo 1599 $ en una única compra.
AWS Textract API proporciona a los desarrolladores el servicio de capa gratuita de AWS. Puede comenzar a utilizar Amazon Textract de forma gratuita. El nivel gratuito tiene una duración de tres meses y los precios se muestran a continuación.
Puede consultar los precios en este enlace enlace. Además, puede ajustar los precios según sus necesidades utilizando la calculadora de precios.
IronOCR proporciona a los desarrolladores de C# los más avanzados API de Tesseract que conozcamos, en cualquier plataforma. IronOCR puede desplegarse en Windows, Linux, Mac, Azure, AWS, Lambda y es compatible con proyectos .NET Framework, así como .NET Standard y .NET Core. También podemos leer códigos de barras en escaneados OCR, e incluso exportar nuestro OCR como HTML y PDF con capacidad de búsqueda.
Amazon Textract facilita la incorporación de la detección y el análisis de texto de documentos a sus aplicaciones. Amazon Textract se basa en la probada tecnología de aprendizaje profundo, altamente escalable, desarrollada por los científicos de visión informática de Amazon para analizar miles de millones de imágenes y vídeos a diario. No necesitas conocimientos de aprendizaje automático para utilizarlo. Amazon Textract incluye API sencillas y fáciles de usar que pueden analizar archivos de imagen y archivos PDF. Amazon Textract siempre está aprendiendo de nuevos datos, y Amazon añade continuamente nuevas funciones al servicio.
Las licencias de IronOCR están basadas en el desarrollador, lo que significa que siempre debe adquirir una licencia basada en el número de desarrolladores que utilizarán el producto. Las licencias de AWS Textract se basan en el número de páginas del documento para extraer información y analizar los datos. Las licencias son mensuales y los precios son muy altos para un gran número de páginas en comparación con la licencia IronOCR. Además, la licencia de IronOCR se adquiere una sola vez y puede utilizarse de por vida, y admite la distribución OME y SaaS.
En comparación general, IronOCR y AWS OCR tienen capacidades de aprendizaje automático para detectar texto de un documento o imagen. IronOCR tiene una ligera ventaja sobre AWS OCR, ya que es rápido y ahorra tiempo. El código es sencillo y resulta fácil detectar el texto de los documentos. La tarea se lleva a cabo de varias maneras. Por otro lado, AWS Textract utiliza muchos métodos para lograr la misma tarea. Esto aumenta la respuesta del servidor y a veces lleva mucho tiempo. Podemos ver que si introducimos un documento imperfecto en IronOCR, éste puede leer su contenido con una precisión estadística de alrededor del 99%, aunque el documento esté mal formateado, sesgado y tenga ruido digital. IronOCR funciona de forma inmediata, sin necesidad de ajustar el rendimiento o modificar en profundidad las imágenes introducidas. Velocidad es Blazing: IronOCR.2020 + es hasta 10 veces más rápido y hace más de 250% menos errores que las versiones anteriores.
Además, Iron Software ofrece actualmente un paquete de cinco herramientas por el precio de sólo dos. Las herramientas incluidas en Iron Suite son:
IronPDF
IronWebscraper
Visite este enlace para explorar la IRONSUITE.
9 productos API .NET para sus documentos de oficina