HERRAMIENTAS OCR

Cómo obtener texto de imágenes con Tesseract

Kannaopat Udonpant
Kannapat Udonpant
6 de junio, 2023
Actualizado 28 de enero, 2024
Compartir:

El uso de bibliotecas como IronOCR y Tesseract permite a los desarrolladores acceder a algoritmos avanzados y técnicas de aprendizaje automático para extraer información textual de imágenes y documentos escaneados. Este tutorial mostrará a los lectores cómo utilizar la biblioteca Tesseract para realizar la extracción de texto de imágenes, y concluirá presentando el enfoque único de IronOCR.

1. OCR con Tesseract

1.1. Instalar Tesseract

Utilizando la consola del gestor de paquetes NuGet, introduzca el siguiente comando.

Install-Package Tesseract

O descargue el paquete a través del gestor de paquetes NuGet.

Cómo obtener reconocimiento de texto OCR, Figura 1: Instalar el paquete Tesseract en el Administrador de Paquetes NuGet

Instalar el paquete Tesseract en el Administrador de paquetes NuGet

Debe instalar y guardar manualmente los archivos de idioma en la carpeta del proyecto después de instalar el paquete NuGet. Esto puede considerarse una deficiencia de esta biblioteca específica.

Visita el siguiente sitio web para descargar los archivos de idioma. Una vez descargados, descomprime los archivos y añade la carpeta "tessdata" a la carpeta de depuración de tu proyecto.

1.2. Utilización de Tesseract (inicio rápido)

El OCR de una imagen dada puede realizarse utilizando el código fuente que se muestra a continuación:

using Tesseract;

var ocrEngine = new TesseractEngine(@"tessdata", "eng", EngineMode.Default);
var img = Pix.LoadFromFile("Demo.png");
var res = ocrEngine.Process(img);
Console.WriteLine(res.GetText());
Console.ReadKey();
using Tesseract;

var ocrEngine = new TesseractEngine(@"tessdata", "eng", EngineMode.Default);
var img = Pix.LoadFromFile("Demo.png");
var res = ocrEngine.Process(img);
Console.WriteLine(res.GetText());
Console.ReadKey();
Imports Tesseract

Private ocrEngine = New TesseractEngine("tessdata", "eng", EngineMode.Default)
Private img = Pix.LoadFromFile("Demo.png")
Private res = ocrEngine.Process(img)
Console.WriteLine(res.GetText())
Console.ReadKey()
$vbLabelText   $csharpLabel

Primero, se debe crear un objeto TerreractEngine y cargar los datos de idioma en el Motor. Luego, se carga el archivo de imagen deseado con la ayuda de Tesseract Pix. Luego, esta imagen se pasa al TerreractEngine para extraer el texto reconocido correctamente utilizando el método GetText disponible en el TesseractEngine. Este es el resultado del código.

Cómo obtener reconocimiento de texto OCR, Figura 2: Texto extraído de la imagen

Texto extraído de la imagen

1.3 Consideraciones sobre Tesseract

  1. A partir de la versión 3.00, Tesseract admite formato de texto de salida, datos posicionales de OCR y análisis de diseño de página.

  2. Tesseract está disponible en Windows, Linux y Mac OS X. Sin embargo, sólo se ha confirmado que Tesseract funciona como estaba previsto en Windows y Ubuntu, debido al limitado soporte de desarrollo.

  3. Tesseract puede distinguir entre texto monoespaciado y texto con espaciado proporcional.

  4. Utilizando un front-end como OCRopus, Tesseract es ideal para su uso como back-end y puede utilizarse para trabajos de OCR más exigentes, como el análisis de diseño.

  5. Algunos de los defectos de Tesseract:

    • Las últimas versiones no se han diseñado para compilar en Windows

    • Las envolturas de la API C# de Tesseract se mantienen con poca frecuencia y llevan años de retraso con respecto a las nuevas versiones de Tesseract.

    Para obtener más información sobre Tesseract en C#, visite el tutorial de Tesseract.

2. OCR con IronOCR

2.1. Instalación de IronCR

Introduzca el siguiente comando en la consola de NuGet Package Manager.

Install-Package IronOcr

O instale la biblioteca IronOCR a través del gestor de paquetes NuGet, junto con paquetes adicionales para otros idiomas, que son sencillos y cómodos de usar.

Cómo obtener reconocimiento de texto OCR, Figura 3: Instalar IronOcr y paquetes de idiomas a través de NuGet Package Manager

Instalar IronOcr y paquetes de idiomas a través de NuGet Package Manager

2.2. Utilización de IronOCR

A continuación se muestra el código de ejemplo para reconocer el texto de la imagen dada.

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.EnglishBest;
ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var input = new OcrInput())      
{          
    input.LoadImage(@"Demo.png");
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
    Console.ReadKey();
}
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.EnglishBest;
ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var input = new OcrInput())      
{          
    input.LoadImage(@"Demo.png");
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
    Console.ReadKey();
}
Dim ocr = New IronTesseract()
ocr.Language = OcrLanguage.EnglishBest
ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5
Using input = New OcrInput()
	input.LoadImage("Demo.png")
	Dim result = ocr.Read(input)
	Console.WriteLine(result.Text)
	Console.ReadKey()
End Using
$vbLabelText   $csharpLabel

El código anterior instancia un objeto IronTesseract. Además, se está creando un objeto OcrInput para agregar uno o más archivos de imagen, proporcionando la ruta del archivo local con el método LoadImage. Puedes subir todas las fotos que quieras. La funcionalidad Read en el objeto IronTesseract analizará el archivo de imagen y extraerá el resultado en el resultado OCR.

Cómo obtener el reconocimiento de texto OCR, Figura 4: Salida de texto extraído usando la biblioteca IronOCR

Salida de texto extraído usando la biblioteca IronOCR

2.3 Consideraciones sobre IronOCR

  1. IronOCR es una extensión de la biblioteca Tesseract, que introduce más estabilidad y mayor precisión.

  2. IronOCR puede leer contenido de texto de PDFs y fotos. IronOCR también puede leer más de 20 tipos distintos de códigos de barras y códigos QR.

  3. Los resultados pueden presentarse como texto sin formato, datos estructurados, códigos de barras o códigos QR.

  4. La biblioteca reconoce 127 idiomas en todo el mundo.

  5. IronOCR funciona en todos los entornos .NET de manera flexible (consola, web, escritorio, etc.), y también es compatible con los últimos frameworks móviles como Mono, Xamarin, Azure y MAUI.

  6. IronOCR ofrece una prueba gratuita y tiene una edición de desarrollo a un precio más bajo. Obtenga más información sobre las licencias.

    Para un tutorial detallado de IronOCR, consulte este artículo para leer texto de una imagen en C#.

Kannaopat Udonpant
Ingeniero de software
Antes de convertirse en ingeniero de software, Kannapat realizó un doctorado en Recursos Medioambientales en la Universidad de Hokkaido (Japón). Mientras cursaba su licenciatura, Kannapat también se convirtió en miembro del Laboratorio de Robótica Vehicular, que forma parte del Departamento de Ingeniería de Bioproducción. En 2022, aprovechó sus conocimientos de C# para unirse al equipo de ingeniería de Iron Software, donde se centra en IronPDF. Kannapat valora su trabajo porque aprende directamente del desarrollador que escribe la mayor parte del código utilizado en IronPDF. Además del aprendizaje entre iguales, Kannapat disfruta del aspecto social de trabajar en Iron Software. Cuando no está escribiendo código o documentación, Kannapat suele jugar con su PS5 o volver a ver The Last of Us.
< ANTERIOR
OCR C# Open Source (Lista para desarrolladores)
SIGUIENTE >
Mejor API de OCR (Comparación de listas actualizada)