Saltar al pie de página
HERRAMIENTAS OCR

Cómo obtener texto de imágenes usando Tesseract

Aprovechar bibliotecas como IronOCR y Tesseract otorga a los desarrolladores acceso 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 luego concluirá presentando el enfoque único de IronOCR.

1. OCR con Tesseract

1.1. Instalar Tesseract

Usando la Consola del Administrador de Paquetes NuGet, ingrese el siguiente comando:

Install-Package Tesseract

O descargue el paquete a través del Administrador de Paquetes NuGet.

Cómo obtener el reconocimiento de texto OCR, Figura 1: Instalar paquete Tesseract en el Administrador de Paquetes NuGet Instalar 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 limitación de esta biblioteca específica.

Visite la siguiente página web para descargar los archivos de idioma. Una vez descargados, descomprima los archivos y añada la carpeta "tessdata" a la carpeta de depuración de su proyecto.

1.2. Uso de Tesseract (Inicio rápido)

El OCR de una imagen dada se puede realizar usando el siguiente código fuente:

using Tesseract;

class Program
{
    static void Main()
    {
        // Initialize Tesseract engine with English language data
        using var ocrEngine = new TesseractEngine(@"tessdata", "eng", EngineMode.Default);

        // Load the image to be processed
        using var img = Pix.LoadFromFile("Demo.png");

        // Process the image to extract text
        using var res = ocrEngine.Process(img);

        // Output the recognized text
        Console.WriteLine(res.GetText());
        Console.ReadKey();
    }
}
using Tesseract;

class Program
{
    static void Main()
    {
        // Initialize Tesseract engine with English language data
        using var ocrEngine = new TesseractEngine(@"tessdata", "eng", EngineMode.Default);

        // Load the image to be processed
        using var img = Pix.LoadFromFile("Demo.png");

        // Process the image to extract text
        using var res = ocrEngine.Process(img);

        // Output the recognized text
        Console.WriteLine(res.GetText());
        Console.ReadKey();
    }
}
Imports Tesseract

Friend Class Program
	Shared Sub Main()
		' Initialize Tesseract engine with English language data
		Dim ocrEngine = New TesseractEngine("tessdata", "eng", EngineMode.Default)

		' Load the image to be processed
		Dim img = Pix.LoadFromFile("Demo.png")

		' Process the image to extract text
		Dim res = ocrEngine.Process(img)

		' Output the recognized text
		Console.WriteLine(res.GetText())
		Console.ReadKey()
	End Sub
End Class
$vbLabelText   $csharpLabel
  • Primero, se debe crear un objeto TesseractEngine, cargando los datos del idioma en el motor.
  • Luego se carga el archivo de imagen deseado con la ayuda de Pix.LoadFromFile.
  • La imagen se pasa al TesseractEngine para extraer texto utilizando el método Process.
  • El texto reconocido se obtiene con el método GetText y se imprime en la consola.

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

1.3 Consideraciones sobre el Tesseract

  1. Tesseract soporta el formato de texto de salida, datos posicionales de OCR y análisis de diseño de página desde la versión 3.00.
  2. Tesseract está disponible en Windows, Linux y MacOS, aunque se confirma principalmente que funciona como se espera en Windows y Ubuntu debido al soporte de desarrollo limitado.
  3. Tesseract puede distinguir entre texto monoespaciado y con espaciado proporcional.
  4. Utilizando un front-end como OCRopus, Tesseract es ideal para ser utilizado como un back-end y puede utilizarse para trabajos de OCR más exigentes, como el análisis de diseño.
  5. Algunas de las limitaciones de Tesseract:
    • Las últimas compilaciones no han sido diseñadas para compilarse en Windows
    • Los envoltorios de la API de C# de Tesseract se mantienen con poca frecuencia y están años retrasados respecto a los nuevos lanzamientos de Tesseract

Para aprender más sobre Tesseract en C#, por favor visite el tutorial de Tesseract.

2. OCR con IronOCR

2.1. Instalación de IronOCR

Ingrese el siguiente comando en la Consola del Administrador de Paquetes NuGet:

Install-Package IronOcr

O instale la biblioteca IronOCR a través del Administrador de Paquetes NuGet, junto con paquetes adicionales para otros idiomas, que son simples y convenientes de usar.

Cómo obtener el reconocimiento de texto OCR, Figura 3: Instalar IronOCR y paquetes de idiomas a través del Administrador de Paquetes NuGet Instalar IronOcr y paquetes de idiomas a través del Administrador de Paquetes NuGet

2.2. Uso de IronOCR

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

using IronOcr;

class Program
{
    static void Main()
    {
        // Create an IronTesseract instance with predefined settings
        var ocr = new IronTesseract()
        {
            Language = OcrLanguage.EnglishBest,
            Configuration = { TesseractVersion = TesseractVersion.Tesseract5 }
        };

        // Create an OcrInput instance for image processing
        using var input = new OcrInput();

        // Load the image to be processed
        input.AddImage("Demo.png");

        // Process the image and extract text
        var result = ocr.Read(input);

        // Output the recognized text
        Console.WriteLine(result.Text);
        Console.ReadKey();
    }
}
using IronOcr;

class Program
{
    static void Main()
    {
        // Create an IronTesseract instance with predefined settings
        var ocr = new IronTesseract()
        {
            Language = OcrLanguage.EnglishBest,
            Configuration = { TesseractVersion = TesseractVersion.Tesseract5 }
        };

        // Create an OcrInput instance for image processing
        using var input = new OcrInput();

        // Load the image to be processed
        input.AddImage("Demo.png");

        // Process the image and extract text
        var result = ocr.Read(input);

        // Output the recognized text
        Console.WriteLine(result.Text);
        Console.ReadKey();
    }
}
Imports IronOcr

Friend Class Program
	Shared Sub Main()
		' Create an IronTesseract instance with predefined settings
		Dim ocr = New IronTesseract() With {
			.Language = OcrLanguage.EnglishBest,
			.Configuration = { TesseractVersion = TesseractVersion.Tesseract5 }
		}

		' Create an OcrInput instance for image processing
		Dim input = New OcrInput()

		' Load the image to be processed
		input.AddImage("Demo.png")

		' Process the image and extract text
		Dim result = ocr.Read(input)

		' Output the recognized text
		Console.WriteLine(result.Text)
		Console.ReadKey()
	End Sub
End Class
$vbLabelText   $csharpLabel
  • Este código inicializa un objeto IronTesseract, configurando el idioma y la versión de Tesseract.
  • Luego se crea un objeto OcrInput para cargar archivos de imagen utilizando el método AddImage.
  • El método Read de IronTesseract procesa la imagen y extrae el texto, que luego se imprime en la consola.

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, introduciendo más estabilidad y mayor precisión.
  2. IronOCR puede leer contenido textual de PDFs y fotos. También puede leer más de 20 tipos distintos de códigos de barras y códigos QR.
  3. La salida puede ser rendida ya sea como texto simple, datos estructurados, códigos de barras o códigos QR.
  4. La biblioteca reconoce 125 idiomas en todo el mundo.
  5. IronOCR funciona en todos los entornos .NET de manera flexible (consola, Web, escritorio, etc.), y también soporta los últimos marcos móviles como Mono, Xamarin, Azure y MAUI.
  6. IronOCR ofrece una prueba gratuita y tiene una edición de desarrollo que es menos costosa. Aprenda más 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 completó un doctorado en Recursos Ambientales de la Universidad de Hokkaido en Japón. Mientras perseguía su grado, Kannapat también se convirtió en miembro del Laboratorio de Robótica de Vehículos, que es parte del Departamento de Ingeniería ...
Leer más