Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
OCR significa reconocimiento óptico de caracteres. Permite convertir un archivo de imagen en texto codificado por máquina. El ordenador siempre guarda los documentos escaneados como archivos de imagen. Los datos de estos archivos de imagen no se pueden buscar, editar ni guardar en formato de texto con un editor de texto normal o incluso con una aplicación de tratamiento de textos. El procesamiento OCR ayuda a convertir estas imágenes en texto legible por máquina para su posterior procesamiento por parte de sus usuarios.
En esta era moderna, los documentos escaneados que se comparten a través de int.NET están en formato digital y, en su mayoría, en forma de PDF o imágenes. Hay un montón de recursos en línea que convierten la imagen en texto. Sin embargo, la mayoría de las empresas requieren esta funcionalidad en sus aplicaciones informáticas. Teniendo esto en cuenta, hay muchas bibliotecas que proporcionan tecnología de procesamiento de OCR para incrustar en aplicaciones de software.
En este artículo, vamos a discutir dos de las librerías OCR más populares para C#. Estos son:
IronOCR para .NET es una biblioteca C# para escanear, buscar y leer imágenes y archivos PDF. Toma una imagen o un archivo PDF como entrada y utiliza el último motor de OCR .NET personalizado Tesseract 5 para generar texto, datos estructurados o documentos PDF con capacidad de búsqueda. Su Tesseract está disponible en más de 125 idiomas junto con soporte multiplataforma en .NET Core, Standard, desde 2.0 hasta 7.
IronOCR es una API fácil de usar que permite a los desarrolladores de C# convertir imágenes en texto automáticamente, simplemente utilizando la clase IronTesseract
y la clave API. Prioriza la rapidez, la precisión y la facilidad de uso. También ayuda a Computer Vision API a encontrar texto con un conjunto de modelos entrenados.
Otra potente característica de IronOCR es que puede escanear códigos de barras y códigos QR de todos los archivos de imagen y leer su texto. A continuación se indican otras características importantes de IronOCR.
System.Drawing Objects
, Streams, documentos PDF(DPI objetivo optimizado)Salida de datos simple: .NET cadenas de texto, código de barras y datos QR, imágenes
Ahora, echemos un vistazo a Google Cloud Vision API.
API de Google Cloud Vision es una librería cliente de Google Cloud OCR que soporta lenguaje C#. Permite a los desarrolladores de C# integrar fácilmente las funciones de detección de Computer Vision en las aplicaciones de software. Realiza OCR y detecta texto de archivos de imagen, etiquetas de imagen, detección de caras, detección de puntos de referencia.
Google Cloud Vision API utiliza las API REST y RPC para proporcionar un potente ML preentrenado(aprendizaje automático) modelo. Con Cloud import vision API, puede clasificar rápidamente imágenes en millones de categorías ya predefinidas. También puede detectar objetos, leer texto de documentos impresos y texto manuscrito.
Detección de etiquetas: Devuelve etiquetas generalizadas para la imagen
El resto del artículo es el siguiente:
Creación de un proyecto de Visual Studio
Instalación de IronOCR
Instalación de Google OCR
Imagen a texto
Código de barras y QR a texto
PDF a texto
Licencias
En este tutorial, vamos a utilizar la última versión de Visual Studio 2022. Por lo tanto, asumo que ya lo has descargado e instalado para C#. Si no, puede descargarlo desdeSitio web de Visual Studio.
Ahora, necesitamos crear un proyecto Console para empezar con ambas librerías. Siga los pasos para crear un proyecto:
Haga clic en Crear un nuevo proyecto.
Seleccione Aplicación de Consola C# de las opciones dadas.
Haga clic en Siguiente.
De la información adicional, seleccione .NET 6.0 Framework por ser la versión más estable.
Ahora, haga clic en Crear y el proyecto se creará en la ubicación especificada.
A continuación, instalaremos las bibliotecas en nuestro proyecto para compararlas.
Hay varias formas de instalar la biblioteca IronOCR. Veámoslos uno por uno.
NuGet es el gestor de paquetes para descargar e instalar dependencias en tu proyecto. Sus paquetes contienen el código compilado(DLL) y el archivo de manifiesto. Acceda a él mediante el siguiente método:
Haga clic en Administrar paquetes NuGet para la solución
Haga clic en Gestionar paquetes NuGet
Ahora se abrirá la ventana del Gestor de paquetes NuGet. Busque IronOCR y haga clic en Instalar.
Puede descargarse directamente del sitio web oficial de NuGet. Siga los pasos indicados:
Haga clic en el enlace "".
Haga clic en la opción Descargar paquete en la parte derecha de la página.
Abra el paquete descargado y comenzará la instalación.
Sólo tiene que visitar el sitio web de Iron Software y navegar hasta la página web de IronOCR for .NET. Desplácese hasta la parte inferior y haga clic en Descargar DLL o Descargar instalador de Windows.
Se descargará un archivo Zip. Extráigalo y añádalo a su archivo de proyecto o ejecute el instalador de Windows. Siga los siguientes pasos para añadirlo a su proyecto.
Haga clic con el botón derecho en las dependencias del proyecto en Visual Studio desde el Explorador de soluciones.
A continuación, seleccione la opción Añadir referencia de proyecto.
Busque la ubicación del archivo DLL descargado.
Vaya a la pestaña Herramientas de Visual Studio.
Opción de ampliación del gestor de paquetes NuGet.
Install-Package IronOCR
Esto descargará e instalará automáticamente IronOCR en su proyecto.
Ahora, estamos listos para utilizar IronOCR en nuestro proyecto.
Sólo se requiere un espacio de nombres y es necesario añadirlo en la parte superior del archivo de código fuente donde necesitamos acceder a sus funciones.
using IronOCR;
using IronOCR;
Imports IronOCR
Ahora, vamos a instalar Google Vision OCR.
Para poder utilizar la API de visión en su proyecto C#, debe cumplir los siguientes requisitos previos
Crear una cuenta de Google
Crear un nuevo proyecto desde Google Cloud Console
Activar facturación
Activar Vision API
Crear cuenta de servicio y establecer las credenciales
Descargar las credenciales clave de la cuenta de servicio en formato de archivo JSON
En la documentación oficial puede consultar la configuración y los requisitos para utilizar Google Cloud Vision.aquí.
Ahora, para instalar la biblioteca cliente de Google Cloud para realizar el procesamiento OCR en Visual Studio, necesitamos utilizar NuGet Package Manager.
Acceda a él mediante el siguiente método:
Haga clic en Administrar paquetes NuGet para soluciones
Haga clic en Gestionar paquetes NuGet
Ahora se abrirá la ventana del Gestor de paquetes NuGet. Busque Google Cloud Vision OCR y haga clic en Instalar.
Incluye el siguiente espacio de nombres para utilizar la API Google OCR Vision:
using Google.Cloud.Vision.V1;
using Google.Cloud.Vision.V1;
Imports Google.Cloud.Vision.V1
Establezca también la variable de entorno con las credenciales clave descargadas en el archivo JSON.
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json")
Ahora, todo está configurado y listo para usar.
Leer datos de imágenes es una tarea bastante tediosa. La resolución y la calidad de las imágenes desempeñan un papel importante en la extracción de contenidos. Ambas bibliotecas ofrecen reconocimiento óptico de caracteres(OCR) para extraer texto de las imágenes.
IronOCR facilita a los desarrolladores la lectura del contenido de un archivo de imagen con su potente clase IronTesseract
. Aquí utilizaremos la imagen PNG paraleer texto de un archivo de imagen y el código es el siguiente:
var OCR = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddImage("test-files/employmentapp.png");
var Result = OCR.Read(Input);
Console.WriteLine(Result.Text);
}
var OCR = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddImage("test-files/employmentapp.png");
var Result = OCR.Read(Input);
Console.WriteLine(Result.Text);
}
Dim OCR = New IronTesseract()
Using Input = New OcrInput()
Input.AddImage("test-files/employmentapp.png")
Dim Result = OCR.Read(Input)
Console.WriteLine(Result.Text)
End Using
El resultado de IronOCR coincide con la imagen original que se le ha proporcionado. El código es limpio y fácil de entender, sin tecnicismos.
Google Cloud Vision OCR también convierte la imagen en texto con diferentes fuentes. En primer lugar, tenemos que crear un cliente utilizando el archivo de credenciales. A continuación, utilizando este objeto cliente podemos llamar al método DetectText
para obtener una respuesta en forma de anotación. El código es el siguiente:
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
var client = ImageAnnotatorClient.Create();
var image = Image.FromFile("test-files/employmentapp.png");
var response = client.DetectText(image);
foreach (var annotation in response)
{
if (annotation.Description != null)
{
Console.WriteLine(annotation.Description);
}
}
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
var client = ImageAnnotatorClient.Create();
var image = Image.FromFile("test-files/employmentapp.png");
var response = client.DetectText(image);
foreach (var annotation in response)
{
if (annotation.Description != null)
{
Console.WriteLine(annotation.Description);
}
}
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json")
Dim client = ImageAnnotatorClient.Create()
Dim image As System.Drawing.Image = System.Drawing.Image.FromFile("test-files/employmentapp.png")
Dim response = client.DetectText(image)
For Each annotation In response
If annotation.Description IsNot Nothing Then
Console.WriteLine(annotation.Description)
End If
Next annotation
Se da la misma imagen como entrada para comparar los resultados de ambas bibliotecas.
De la salida anterior, se puede ver claramente que, IronOCR conserva los formatos de salida de imagen. Aunque Google OCR ha proporcionado un texto de salida preciso, no se conserva el formato de la tabla. IronOCR ha conservado el formato de la tabla exactamente igual que en la imagen.
IronOCR proporciona una característica única y útil en la lectura de imágenes, es decir, puede leer códigos de barras y códigos QR. Puede detectar códigos de barras y mostrar su valor con facilidad. En primer lugar, establezca la configuración ReadBarCodes
en true y, a continuación, itere a través de cada uno de los códigos de barras en los resultados del OCR. A continuación se indica el código para leer códigos de barras:
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);
}
}
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);
}
}
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)
Next Barcode
End Using
Los tres códigos de barras de la entrada se leen correctamente y se muestra su texto oculto.
Google Vision API aún no permite esta funcionalidad. La lectura de códigos de barras puede ser útil en aplicaciones informáticas. Sin embargo, Google OCR permite extraer texto manuscrito y obtener texto de un documento escaneado como archivo de imagen. El código para la detección de etiquetas es el siguiente:
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg");
var labels = client.DetectLabels(image);
Console.WriteLine("Labels (and confidence score):");
Console.WriteLine(new String('=', 30));
foreach (var label in labels)
{
Console.WriteLine($"{label.Description} ({(int)(label.Score * 100)}%)");
}
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg");
var labels = client.DetectLabels(image);
Console.WriteLine("Labels (and confidence score):");
Console.WriteLine(new String('=', 30));
foreach (var label in labels)
{
Console.WriteLine($"{label.Description} ({(int)(label.Score * 100)}%)");
}
Imports System
Dim client = ImageAnnotatorClient.Create()
Dim image = System.Drawing.Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg")
Dim labels = client.DetectLabels(image)
Console.WriteLine("Labels (and confidence score):")
Console.WriteLine(New String("="c, 30))
For Each label In labels
Console.WriteLine($"{label.Description} ({CInt(Math.Truncate(label.Score * 100))}%)")
Next label
Leer archivos PDF es tan fácil como leer archivos de imagen en IronOCR. Sólo tienes que cambiar el método AddImage
por AddPdf
en el código de lectura de imágenes. El código es el siguiente:
var OCR = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddPdf("test-files/example.PDF");
var Result = OCR.Read(Input);
Console.WriteLine(Result.Text);
}
var OCR = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddPdf("test-files/example.PDF");
var Result = OCR.Read(Input);
Console.WriteLine(Result.Text);
}
Dim OCR = New IronTesseract()
Using Input = New OcrInput()
Input.AddPdf("test-files/example.PDF")
Dim Result = OCR.Read(Input)
Console.WriteLine(Result.Text)
End Using
El texto extraído tiene el mismo formato que el archivo PDF.
Google OCR también permite extraer texto de documentos PDF/TIFF. Sin embargo, sólo detecta el texto si el archivo está en Google Cloud Storage. Para ello, debes crear un bucket de Google Storage. El código para C# no es sencillo y es bastante largo de implementar aquí. No hay ejemplos disponibles para C# para detectar textos en ficheros. Puede echar un vistazo aCódigo Java como referencia para probarlo.
IronOCR es gratuito para fines de desarrollo, pero requiere licencia para uso comercial. También ofrece una prueba gratuita para que compruebes todo su potencial para tus necesidades. El paquete Lite parte de $749 con unprueba gratuita. IronOCR ofrece 1 año de soporte y actualizaciones gratuitas del producto y 399 dólares anuales a partir de entonces. Todas las licencias son perpetuas, lo que significa que se compran una sola vez y sin cargos ocultos. También puede optar por la cobertura de redistribución libre de derechos para productos SaaS y OEM con una única compra de 199 USD. Para más información sobre paquetes de licencias y planes de precios, visiteaquí.
Los planes de precios de Google Cloud Vision se basan en el número de operaciones realizadas por la aplicación en una imagen. Para archivos como PDF que tienen varias páginas, cada página se trata como una imagen. Además, cada característica aplicada a una imagen es una unidad facturable independiente. Por ejemplo, si aplica la detección de texto y la detección de etiquetas a la misma imagen, cada función se cobrará por separado. A continuación se indican los planes de precios y, para más información, visite este enlaceenlace.
IronOCR proporciona a los desarrolladores de C# la API de Tesseract más avanzada que conocemos, 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.
Google Cloud Vision API es una API avanzada construida con IA. Proporciona una variedad de funciones de análisis de imágenes que pueden ser muy útiles en la creación de aplicaciones ML. Permite a los desarrolladores comunicarse directamente con Google Cloud mediante una clave API, lo que significa que no es necesario almacenar archivos localmente.
Las licencias de IronOCR se basan en los usuarios, lo que significa que siempre debe adquirir una licencia en función del número de desarrolladores que vayan a utilizar el producto. Las licencias de Google Cloud Vision se basan en el número de imágenes de las que extraer información y analizar los datos. Las licencias son mensuales y los precios son muy elevados para un gran número de imágenes 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 OEM y SaaS.
En conclusión general, ambas bibliotecas poseen capacidades de aprendizaje automático. IronOCR tiene una ligera ventaja sobre Google OCR, ya que está construido específicamente para C # .NET framework que es rápido y ahorra tiempo. Proporciona todas las funciones con muy pocas líneas de código, lo que libera al desarrollador de la carga de escribir largos códigos. Se basa en la popular API Tesseract 5, que facilita la integración y el análisis de imágenes y otros formatos de archivo con resultados precisos. Por otro lado, Google Vision OCR está basado en IA y más enfocado para Java, Python y REST y sólo puede ejecutarse cuando está conectado a Google Cloud. Esto puede llevar mucho tiempo ya que la respuesta viene del lado del servidor. Puede elegir la biblioteca en función de sus necesidades específicas.
Ahora, puede obtener 5 productos Iron por el precio de 2. Iron Suite incluye las siguientes herramientas:
9 productos API .NET para sus documentos de oficina