Saltar al pie de página
USANDO IRONOCR

Tesseract OCR para múltiples idiomas (Tutorial para desarrolladores)

El OCR es una tecnología utilizada para cambiar documentos de diferente naturaleza en datos editables y buscables. Convierte imágenes escaneadas, archivos PDF y fotos de cámaras digitales en datos que pueden ser editados y buscados. Esta tecnología se utiliza extensamente para convertir documentos impresos en forma digital para edición, búsqueda y almacenamiento, reduciendo el espacio físico ocupado por los documentos. OCR tiene un papel enorme en la automatización de entrada de datos, ahorrando así mucho tiempo a las empresas y organizaciones al reducir el trabajo utilizado por los recursos humanos.

Es un proceso que utiliza técnicas avanzadas de aprendizaje automático y reconocimiento de patrones para extraer texto con precisión de las imágenes. Los últimos desarrollos relacionados con el OCR han aumentado su precisión, apoyando por tanto más idiomas y guiones complejos como el guión árabe. Muy necesario en finanzas, salud, legislación y educación, el OCR surgió como una herramienta indispensable donde procesar rápidamente varios documentos impresos era un requisito. Este artículo utilizará Tesseract para hacer OCR a imágenes en datos de múltiples idiomas.

Cómo utilizar Tesseract OCR con varios idiomas

  1. Primero, instala el paquete NuGet IronOCR/Tesseract dentro de tu proyecto .NET.
  2. Crea una instancia de la clase IronTesseract, que inicializará el motor OCR.
  3. La propiedad de idioma soporta más de un idioma.
  4. Especifica la ruta del archivo de imagen que deseas procesar, luego crea un objeto OcrInput.
  5. Ahora, realiza OCR en la imagen de entrada usando la función Read de la instancia de IronTesseract.
  6. Toma el resultado y muestra el texto reconocido.

¿Qué es Tesseract ?

Tesseract es un motor de Reconocimiento Óptico de Caracteres abierto desarrollado por Hewlett-Packard y luego mantenido por Google. Es famoso por su alta precisión y adaptabilidad, convirtiéndolo en uno de los OCR más destacados. Tesseract soporta detección de escritura, reconoce texto en muchos idiomas, y puede manejar múltiples idiomas; por lo tanto, generalmente se usa para proyectos que requieren documentos multilingües y soporte.

El motor OCR de Tesseract trabaja sobre la información contenida en cualquier píxel individual de la imagen, siguiendo patrones que representan caracteres, palabras y oraciones que finalmente se convierten en texto legible por máquina. Los muchos tipos de archivos de imagen que soporta, como TIFF, JPEG, y PNG, permiten que Tesseract produzca texto en formatos como texto plano, HTML y PDF buscable.

Una de las ventajas significativas de Tesseract es que puede ser entrenado para ser sensible a fuentes particulares o nuevos idiomas añadidos. También es frecuentemente usado en varias aplicaciones, que van desde extracción de texto simple hasta tareas complejas en la digitalización de documentos históricos, procesamiento de facturas, o incluso software de accesibilidad que permite leer para personas con discapacidad visual.

Crear un nuevo proyecto en Visual Studio

Abre el programa Visual Studio. Al abrir el programa, procede al "menú archivo". Bajo el "menú archivo", está la opción "nuevo proyecto." Bajo "nuevo proyecto", haz clic en "Aplicación de Consola." En este post, crearemos documentos PDF usando un programa de consola.

Tesseract OCR para Múltiples Idiomas (Tutorial para Desarrolladores): Figura 1 - Crea un nuevo proyecto

Ingresa el nombre de tu proyecto y la ubicación del archivo en los cuadros de texto provistos. Luego, como se muestra en la imagen abajo, haz clic en el botón Crear y selecciona cuál .NET Framework necesitas.

Tesseract OCR para Múltiples Idiomas (Tutorial para Desarrolladores): Figura 2 - Selecciona el .NET Framework junto con proporcionar un proyecto y ubicación de guardado.

Ahora que se ha seleccionado la versión de la aplicación, el proyecto de Visual Studio creará su estructura. Si has elegido las versiones de consola, Windows, o web, abrirá el archivo program.cs para agregar código y construir/ejecutar la aplicación.

Instalar Tesseract OCR para .NET

El primer paso es descargar e instalar el software Tesseract OCR en tu computadora. Aquí está el repositorio oficial de GitHub de Tesseract con el instalador de Tesseract: https://github.com/tesseract-ocr/tesseract.

Lo mejor sería obtener Tesseract OCR en tu computadora siguiendo las instrucciones de instalación específicas para tu sistema operativo, ya sea Windows, macOS o Linux. Una vez instalado, agrega el paquete Tesseract.NET a tu proyecto C# usando el Administrador de Paquetes NuGet de Visual Studio.

Abre el Administrador de Paquetes NuGet en tu proyecto de Visual Studio desde Herramientas -> Administrador de Paquetes NuGet -> Administrar Paquetes NuGet para Solución. Después, busca "Tesseract" en el Administrador de Paquetes NuGet para obtener ya sea el paquete "Tesseract" o "Tesseract.NET". Selecciona este paquete y haz clic en el botón Instalar para instalarlo en tu proyecto.

Tesseract OCR para Múltiples Idiomas (Tutorial para Desarrolladores): Figura 3 - Busca Tesseract en la pestaña de exploración

OCR de Tesseract con C

Debes configurar Tesseract en tu proyecto C# para especificar la ubicación del ejecutable del OCR de Tesseract y los archivos de datos de idioma después de instalar el envoltorio Tesseract.NET. Aquí hay un ejemplo:

using System;
using System.Drawing;
using Tesseract;

class Program
{
    static void Main()
    {
        // Set the path to the Tesseract data files (traineddata files)
        string tessDataPath = @"./tessdata"; // Ensure this directory contains the language data files

        // Load the image
        string imagePath = @"path_to_your_image.png";
        using (var img = Pix.LoadFromFile(imagePath))
        {
            // Add languages to the Tesseract engine
            using (var engine = new TesseractEngine(tessDataPath, "eng+spa+fra", EngineMode.Default))
            {
                using (var page = engine.Process(img))
                {
                    // Extract the text
                    string text = page.GetText();
                    Console.WriteLine("Recognized Text:");
                    Console.WriteLine(text);
                }
            }
        }
    }
}
using System;
using System.Drawing;
using Tesseract;

class Program
{
    static void Main()
    {
        // Set the path to the Tesseract data files (traineddata files)
        string tessDataPath = @"./tessdata"; // Ensure this directory contains the language data files

        // Load the image
        string imagePath = @"path_to_your_image.png";
        using (var img = Pix.LoadFromFile(imagePath))
        {
            // Add languages to the Tesseract engine
            using (var engine = new TesseractEngine(tessDataPath, "eng+spa+fra", EngineMode.Default))
            {
                using (var page = engine.Process(img))
                {
                    // Extract the text
                    string text = page.GetText();
                    Console.WriteLine("Recognized Text:");
                    Console.WriteLine(text);
                }
            }
        }
    }
}
Imports System
Imports System.Drawing
Imports Tesseract

Friend Class Program
	Shared Sub Main()
		' Set the path to the Tesseract data files (traineddata files)
		Dim tessDataPath As String = "./tessdata" ' Ensure this directory contains the language data files

		' Load the image
		Dim imagePath As String = "path_to_your_image.png"
		Using img = Pix.LoadFromFile(imagePath)
			' Add languages to the Tesseract engine
			Using engine = New TesseractEngine(tessDataPath, "eng+spa+fra", EngineMode.Default)
				Using page = engine.Process(img)
					' Extract the text
					Dim text As String = page.GetText()
					Console.WriteLine("Recognized Text:")
					Console.WriteLine(text)
				End Using
			End Using
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

El código anterior explica cómo el OCR de Tesseract puede detectar y extraer texto de imágenes que contienen múltiples idiomas. Inicialmente establece la ruta a los archivos de datos de idioma de Tesseract. Los archivos necesarios .traineddata para cada idioma correspondiente, como inglés, español y francés, deben estar presentes en la ruta.

Tesseract OCR para Múltiples Idiomas (Tutorial para Desarrolladores): Figura 4 - Ejemplo de entrada

Carga una imagen especificada por imagePath usando el método Pix.LoadFromFile. Más específicamente, se esperaría una imagen con texto en inglés, español y francés. Luego, se inicializará una instancia de TesseractEngine con rutas a los archivos de datos de idioma e idiomas de interés, "eng+spa+fra," para reconocer el texto. El motor trabajará en modo predeterminado.

Tesseract OCR para Múltiples Idiomas (Tutorial para Desarrolladores): Figura 5 - Ejemplo de salida de consola

La imagen será luego procesada usando el método Process de la clase del motor, donde se analiza, se extrae el contenido de texto, y se almacena en la variable text. El texto extraído se imprime entonces a la consola, creando una visualización de cómo funciona el OCR.

¿Qué es IronOCR ?

IronOCR es una biblioteca exclusiva de OCR enfocada en .NET. Añade capacidades de OCR a aplicaciones .NET y permite la extracción de texto de imágenes, documentos escaneados, PDFs, y cualquier otro medio visual. Conduciendo el reconocimiento de texto de última generación con el extremadamente exitoso motor Tesseract, IronOCR también incluye varias características adicionales que lo hacen adecuado para su uso en aplicaciones empresariales.

IronOCR ofrece un tremendo soporte de idiomas: más de 120 idiomas con soporte para la detección automática de idiomas y procesamiento de documentos que contienen múltiples idiomas simultáneamente. Esto hace que IronOCR sea muy versátil y desplegable globalmente, donde el procesamiento de documentos multilingües es crucial.

Tesseract OCR para Múltiples Idiomas (Tutorial para Desarrolladores): Figura 6 - IronOCR: La Biblioteca de OCR en C#

Por otro lado, IronOCR enfatiza la simplicidad en el uso e integración. Su API extremadamente fácil de usar está complementada por documentación detallada y un conjunto de proyectos de ejemplo que ayudarán a cualquier desarrollador a comenzar rápidamente. Soporta un amplio array de formatos de imagen y documentos PDF. Las características avanzadas de preprocesamiento de imagen, reducción de ruido y corrección de errores integradas mejoran la precisión y el rendimiento del OCR.

Instalar IronOCR

Puedes instalar los paquetes directamente en tu solución usando la herramienta de gestión de Paquetes NuGet de Visual Studio. La siguiente captura de pantalla muestra cómo abrir el Administrador de Paquetes NuGet.

Tesseract OCR para Múltiples Idiomas (Tutorial para Desarrolladores): Figura 7 - Cómo llegar al administrador de paquetes NuGet a través de Visual Studio

Tiene un cuadro de búsqueda incrustado, que muestra una lista de paquetes del sitio web de NuGet. Como se ve en la captura de pantalla a continuación, buscaremos en el administrador de paquetes la frase IronOCR:

Tesseract OCR para Múltiples Idiomas (Tutorial para Desarrolladores): Figura 8 - Busca IronOCR en el explorador de soluciones

Los resultados de búsqueda podrían ofrecer una lista de posibles soluciones. Necesitarás seleccionar el paquete de solución necesario para instalar.

También, Instala los paquetes de idioma de Tesseract necesarios uno por uno, como el de abajo para este ejemplo.

En este ejemplo, utilizaremos códigos de idioma en español, francés e inglés. El inglés es el paquete de idioma predeterminado y no requiere instalación.

Tesseract OCR para Múltiples Idiomas (Tutorial para Desarrolladores): Figura 9 - Instalar paquete de idioma francés

Instala el español desde el paquete NuGet.

Tesseract OCR para Múltiples Idiomas (Tutorial para Desarrolladores): Figura 10 - Instalar paquete de idioma español

Lea varios idiomas con IronOCR y el motor Tesseract

El siguiente ejemplo demuestra cómo reconocer texto en múltiples idiomas desde una imagen usando C# y los motores IronOCR y Tesseract.

using IronOcr;

class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();

        // Add multiple languages
        Ocr.Language = OcrLanguage.English + OcrLanguage.Spanish + OcrLanguage.French;

        // Path to the image
        var inputFile = @"path\to\your\image.png";

        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            // Perform OCR
            var result = Ocr.Read(input);

            // Display the result
            Console.WriteLine("Recognized Text:");
            Console.WriteLine(result.Text);
        }
    }
}
using IronOcr;

class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();

        // Add multiple languages
        Ocr.Language = OcrLanguage.English + OcrLanguage.Spanish + OcrLanguage.French;

        // Path to the image
        var inputFile = @"path\to\your\image.png";

        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            // Perform OCR
            var result = Ocr.Read(input);

            // Display the result
            Console.WriteLine("Recognized Text:");
            Console.WriteLine(result.Text);
        }
    }
}
Imports IronOcr

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Initialize IronTesseract engine
		Dim Ocr = New IronTesseract()

		' Add multiple languages
		Ocr.Language = OcrLanguage.English + OcrLanguage.Spanish + OcrLanguage.French

		' Path to the image
		Dim inputFile = "path\to\your\image.png"

		' Read the image and perform OCR
		Using input = New OcrInput(inputFile)
			' Perform OCR
			Dim result = Ocr.Read(input)

			' Display the result
			Console.WriteLine("Recognized Text:")
			Console.WriteLine(result.Text)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

El programa C# anterior usa la biblioteca IronOCR para realizar el Reconocimiento Óptico de Caracteres en una imagen que contiene caracteres en inglés, español y francés. El programa comienza importando el espacio de nombres requerido para IronOCR y declarando una clase llamada Program con un método Main, que es el punto de entrada de la aplicación.

En el método Main, se instancia una instancia de la clase IronTesseract y se asigna a la variable Ocr. La propiedad Language se establece para incluir inglés, español y francés combinando OcrLanguage.English, OcrLanguage.Spanish y OcrLanguage.French. Esto asegura que el motor OCR pueda reconocer y procesar texto en cualquiera de estos tres idiomas.

La ruta al archivo de imagen de entrada se establece usando la variable inputFile. La imagen se carga luego dentro de una declaración using con una instancia de la clase OcrInput para una adecuada gestión y eliminación de recursos. Finalmente, se llama al método Read de la instancia de IronTesseract con el objeto de entrada para realizar OCR en la imagen.

El texto reconocido se imprime luego a la consola usando el método Console.WriteLine. Este programa ilustra un método eficaz para usar la capacidad multilingüe de IronOCR para extraer texto de imágenes que contienen palabras en diferentes idiomas.

Tesseract OCR para Múltiples Idiomas (Tutorial para Desarrolladores): Figura 11 - Salida de texto reconocido

¿Por qué IronOCR es mejor que Tesseract?

IronOCR es más fácil de usar en comparación con Tesseract y ofrece algunas ventajas. Primero, IronOCR proporciona excelente soporte de idiomas con 125 idiomas directamente desde el principio, mientras que Tesseract puede requerir configuraciones complejas y entrenamiento adicional para un rendimiento óptimo con alguno de sus 100 idiomas soportados. Además, IronOCR se integra fácilmente en aplicaciones .NET y viene con documentación completa.

IronOCR tiene una curva de aprendizaje menos pronunciada y requiere menos configuración técnica que Tesseract. También ofrece características avanzadas de preprocesamiento de imagen y actualizaciones regulares para mejorar la precisión y fiabilidad con tipos de documentos complejos. IronOCR es una gran opción para desarrolladores que buscan una solución sólida, versátil y de fácil aplicación de OCR.

Conclusión

Tesseract OCR para Múltiples Idiomas (Tutorial para Desarrolladores): Figura 12 - Página de licencias de IronOCR

Mientras que tanto Tesseract como IronOCR son tecnologías de OCR robustas, cada una tiene capacidades y fortalezas únicas. Tesseract, siendo de código abierto, es confiable para cualquiera que busque una solución gratuita y tiene comunidades activas y mejora continua.

En contraste, IronOCR es una biblioteca propietaria para el .NET Framework, ofreciendo una mejor experiencia de usuario con integración más fácil y soporte para la mayoría de los tipos de archivos de imagen. También funciona bien en reconocimiento de texto, particularmente con contenido de imagen de baja calidad. IronOCR admite plenamente muchos idiomas y tiene características adicionales que lo hacen más fácil de usar.

IronOCR ofrece una edición de desarrollo rentable y cuando se compra, proporciona una licencia de por vida. El paquete IronOCR comienza a partir de $liteLicense como un costo único para múltiples sistemas, ofreciendo un excelente valor por dinero y soporte de ingenieros en línea 24/7 para usuarios con licencia. Para obtener más información, consulta el sitio web de IronOCR.

Preguntas Frecuentes

¿Cómo puedo usar Tesseract OCR con múltiples idiomas en un proyecto .NET?

Puede usar la biblioteca IronOCR, que simplifica la integración de Tesseract OCR para procesar imágenes con texto en múltiples idiomas. Agregue el paquete NuGet de IronOCR/Tesseract a su proyecto .NET y configure los idiomas usando la propiedad Language de la clase IronTesseract.

¿Qué ventajas ofrece IronOCR sobre el Tesseract estándar?

IronOCR proporciona una API más amigable para aplicaciones .NET, admite más de 120 idiomas de forma predeterminada y ofrece un procesamiento de imagen avanzado para mejorar la precisión. Se integra perfectamente con proyectos .NET, ofreciendo documentación extensa y soporte para desarrolladores.

¿Puede IronOCR manejar documentos en múltiples idiomas simultáneamente?

Sí, IronOCR puede procesar documentos multilingües configurando varios idiomas en la propiedad Language. Esta característica es particularmente útil para aplicaciones globales donde los documentos pueden contener texto en diferentes idiomas.

¿Cuál es el proceso para configurar IronOCR en un proyecto C#?

Para configurar IronOCR en un proyecto C#, primero instale el paquete NuGet de IronOCR/Tesseract a través del Administrador de paquetes NuGet de Visual Studio. Luego, cree una instancia de la clase IronTesseract en su código y use sus métodos para procesar imágenes que contengan texto.

¿Cómo mejora IronOCR la precisión de los resultados OCR?

IronOCR mejora la precisión a través de técnicas avanzadas de procesamiento de imágenes, que mejoran la calidad de la imagen antes de extraer el texto. Esta característica ayuda a reconocer con precisión texto de imágenes de calidad variable.

¿Qué tipos de documentos puede procesar IronOCR?

IronOCR puede procesar una variedad de tipos de documentos, incluidas imágenes escaneadas, PDFs y fotos tomadas por cámaras digitales. Convierte estos documentos en formatos de datos editables y buscables.

¿Es IronOCR adecuado para automatizar tareas de entrada de datos?

Sí, IronOCR es altamente efectivo para automatizar la entrada de datos convirtiendo documentos impresos en texto digital, reduciendo la labor manual y ahorrando tiempo. Se utiliza ampliamente en sectores como finanzas, salud y educación.

¿Cómo apoya IronOCR a los desarrolladores en la implementación de la tecnología OCR?

IronOCR proporciona una documentación extensa, una API amigable y soporte en línea 24/7, lo que facilita a los desarrolladores implementar la tecnología OCR en sus aplicaciones .NET.

¿Cuáles son los casos de uso principales para IronOCR?

IronOCR se utiliza para digitalizar documentos impresos, automatizar la entrada de datos, procesar facturas y desarrollar software de accesibilidad para usuarios con discapacidad visual. Es aplicable en diversas industrias, incluidas finanzas, salud y educación.

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