USO DE IRONOCR

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

Publicado en 29 de septiembre, 2024
Compartir:

Introducción

OCR es una tecnología utilizada para transformar documentos de diversas naturalezas en datos editables y buscables. Convierte imágenes escaneadas, archivos PDF y fotos de cámaras digitales en datos que se pueden editar y buscar. Esta tecnología se utiliza ampliamente para convertir documentos impresos en formato digital con el fin de editarlos, buscarlos y almacenarlos, reduciendo el espacio físico ocupado por los documentos. OCR tiene un papel fundamental en la automatización de la entrada de datos, lo que ahorra mucho tiempo a las empresas y organizaciones al reducir el trabajo realizado 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 imágenes. Los últimos avances relacionados con OCR han aumentado su precisión, lo que permite soportar más idiomas y escrituras complejas como la escritura árabe. Muy necesario en finanzas, salud, legislación y educación, el OCR surgió como una herramienta indispensable donde el procesamiento rápido de varios documentos impresos era un requisito previo. Este artículo utilizará Tesseract para realizar OCR en imágenes de datos en múltiples idiomas.

Cómo usar Tesseract OCR con múltiples idiomas

  1. Primero, instala el paquete NuGet de IronOCR/Tesseract dentro de tu proyecto .NET.

  2. Se creará una instancia de la clase IronTesseract, inicializando además el motor OCR.

  3. Está diseñado para que la propiedad de idioma admita más de un idioma.

  4. Especifique la ruta del archivo de imagen que desea procesar y luego cree un objeto OcrInput.

  5. Ahora, realiza OCR en la imagen de entrada utilizando 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 de código abierto desarrollado por Hewlett-Packard y posteriormente mantenido por Google. Es famoso por su alta precisión y adaptabilidad, lo que lo convierte en uno de los OCR más destacados. Tesseract admite detección de escritura, reconoce texto en muchos idiomas y puede manejar múltiples idiomas; Por lo tanto, generalmente se utiliza para proyectos que requieren documentos multilingües y soporte.

El motor OCR Tesseract trabaja con la información contenida en cualquier píxel de la imagen, siguiendo patrones que representan caracteres, palabras y oraciones que eventualmente se convierten en texto legible por máquina. Los muchos tipos de archivos de imagen que soporta, como TIFF, JPEG y PNG, permiten a Tesseract producir texto en formatos como texto plano, HTML y PDF con capacidad de búsqueda.

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

Creación de un nuevo proyecto en Visual Studio

Abre el programa Visual Studio. Al abrir el programa, dirígete al "menú archivo." Bajo el "menú archivo," existe la opción "nuevo proyecto." Bajo "nuevo proyecto," haz clic en "Aplicación de Consola." En esta publicación, crearemos documentos PDF utilizando un programa de consola.

Tesseract OCR para múltiples idiomas (Tutorial para desarrolladores): Figura 1 - Crear un nuevo proyecto

Ingrese el nombre de su proyecto y la ubicación del archivo en los cuadros de texto proporcionados. Luego, como se muestra en la imagen a continuación, haga clic en el botón Crear y seleccione el .NET Framework que necesita.

Tesseract OCR para múltiples idiomas (Tutorial para desarrolladores): Figura 2 - Seleccione el .NET Framework junto con proporcionar un proyecto y una 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 ha elegido las versiones de consola, Windows o web, se abrirá el archivo de programa .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 Tesseract en GitHub con el instalador de Tesseract: https://github.com/tesseract-ocr/tesseract.

Lo mejor sería instalar Tesseract OCR en tu computadora siguiendo las instrucciones de configuración específicas para tu sistema operativo, ya sea Windows, macOS o Linux. Una vez instalado, añade el paquete Tesseract.NET a tu proyecto de C# utilizando 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 la Solución. Luego, busca "Tesseract" en el Administrador de Paquetes NuGet para obtener el paquete "Tesseract" o "Tesseract.NET". Seleccione este paquete y haga clic en el botón Instalar para instalarlo en su proyecto.

Tesseract OCR para múltiples idiomas (Tutorial para desarrolladores): Figura 3 - Buscar Tesseract en la pestaña de exploración

Tesseract OCR utilizando C#

Debe configurar Tesseract en su proyecto de C# para especificar la ubicación del ejecutable de Tesseract OCR y los archivos de datos del lenguaje después de instalar la envoltura de Tesseract.NET. He aquí 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 tesseract languages into 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 tesseract languages into 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 tesseract languages into 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
VB   C#

El código anterior explica cómo Tesseract OCR 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 .traineddata necesarios 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 en el método Pix.LoadFromFile. Más específicamente, uno 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 y los idiomas de interés, "eng+spa+fra," para reconocer el texto. El motor funcionará en modo predeterminado.

Tesseract OCR para múltiples idiomas (Tutorial para desarrolladores): Figura 5 - Ejemplo de salida de consola

La imagen se pasará al método Process de la clase del motor, en el cual se analiza, se extrae el contenido de texto y se almacena en la variable text. Por último, el texto extraído se imprimirá en la consola, creando una visualización de cómo funciona el OCR.

¿Qué es IronOCR?

IronOCR es una biblioteca OCR propietaria centrada en Dot NET. Agrega capacidades de OCR a aplicaciones .NET y permite la extracción de texto de imágenes, documentos escaneados, PDFs y todos los demás medios visuales. Impulsando el reconocimiento de texto de última generación con el increíblemente exitoso motor Tesseract, IronOCR también incluye varias características adicionales que lo hacen adecuado para su uso en aplicaciones empresariales.

Esto hace que IronOCR sea extremadamente bueno: su tremendo soporte de idiomas, con más de 120 idiomas y soporte para la detección automática de idiomas y el procesamiento de documentos que contienen varios idiomas simultáneamente. A su vez, esto hace que IronOCR sea muy versátil y se pueda desplegar a nivel mundial, donde el procesamiento de documentos multilingües es sumamente crítico.

Tesseract OCR para múltiples idiomas (Tutorial para desarrolladores): Figura 6 - IronOCR: La biblioteca OCR C#

Por otro lado, IronOCR aún 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. Admite una amplia gama de formatos de imagen y documentos PDF. Las funciones avanzadas integradas de preprocesamiento de imágenes, reducción de ruido y corrección de errores mejoran la precisión y el rendimiento de OCR.

Instalar IronOCR

Puede instalar los paquetes directamente en su solución utilizando 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 acceder al administrador de paquetes NuGet a través de Visual Studio

Tiene un cuadro de búsqueda incrustado, que debe mostrar una lista de paquetes del sitio web de NuGet. Como se puede ver 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 - Busque IronOCR en el explorador de soluciones

El gráfico anterior podría ofrecer una lista de términos de búsqueda válidos. Necesitamos seleccionar lo que es necesario para instalar el paquete de soluciones.

Además, instala los paquetes de idioma Tesseract necesarios uno por uno, como el siguiente en este ejemplo.

En este ejemplo, usaremos los códigos de idioma español, francés e inglés. El inglés es el paquete de idioma predeterminado, por lo que no requiere instalación.

Tesseract OCR para múltiples idiomas (Tutorial para desarrolladores): Figura 9 - Instalar paquete de idioma francés

Instala Spanish desde el paquete NuGet.

Tesseract OCR para múltiples idiomas (Tutorial para desarrolladores): Figura 10 - Instalar paquete de idioma español

Leer múltiples idiomas con IronOCR con el motor Tesseract

El siguiente ejemplo demuestra cómo reconocer texto en múltiples idiomas a partir de una imagen utilizando C# y el motor 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("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("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("Text:")
			Console.WriteLine(result.Text)
		End Using
	End Sub
End Class
VB   C#

El programa C# anterior es un ejemplo de uso de la biblioteca IronOCR para realizar el reconocimiento óptico de caracteres en una imagen que contiene caracteres en inglés, español y francés. Este ejemplo comienza importando el espacio de nombres que requiere IronOCR, seguido de la declaración de una clase llamada programa con un método Main, que es el punto de entrada de la aplicación.

Primero, en el método Main, se instancia una instancia de la clase IronTesseract. Esta instancia se asignará a la variable Ocr. Entonces, el Propiedad de idioma de esta instancia está configurado para incluir inglés, español y francés combinando OcrLanguage.English, OcrLanguage.Spanish y OcrLanguage.French. Todo esto garantizará que el motor de OCR pueda reconocer y procesar texto en cualquiera de estos tres idiomas.

Primero, establece la ruta al archivo de imagen de entrada utilizando la variable inputFile. En la siguiente línea, carga esta imagen dentro de una declaración en la clase OcrInput para la gestión y eliminación adecuada de recursos. Finalmente, llama al método Read de la instancia de IronTesseract con el objeto de entrada y realiza la OCR en la imagen.

Finalmente, se verifica el resultado para el texto reconocido y se imprime en la consola. Estas declaraciones de Console.WriteLine mostrarán el texto detectado para que el usuario pueda ver los resultados del OCR. El programa ilustra una manera efectiva de usar la capacidad multilingüe de IronOCR para extraer texto de imágenes de 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?

Es bastante fácil de usar en comparación con Tesseract y tiene algunas ventajas sobre este último. En primer lugar, IronOCR ofrece un excelente soporte de idiomas. El motor admite 127 idiomas directamente, mientras que para Tesseract, hay informes que indican soporte para unos 100 idiomas. sin embargo, a menudo, requiere configuraciones complejas y formación adicional para obtener el mejor rendimiento. Además, IronOCR es más fácil de usar, ya que se integra fácilmente en aplicaciones .NET y completa la documentación.

Mucho más fácil de usar que Tesseract, IronOCR tiene una curva de aprendizaje menos pronunciada y requiere menos configuración técnica. Como si eso no fuera suficiente, IronOCR viene con un procesamiento de imagen avanzado y actualizaciones regulares de funcionalidad para una mejor precisión y fiabilidad con tipos de documentos complejos y variados. IronOCR es una opción mucho mejor para cualquier desarrollador que busque una solución OCR sólida, versátil y de fácil aplicación.

Conclusión

OCR Tesseract para múltiples idiomas (Tutorial para desarrolladores): Figura 12 - Página de licencias de IronOCR

Aunque Tesseract e IronOCR representan tecnologías de OCR muy robustas, cada una tiene capacidades y fortalezas únicas. Nuevamente, dado que es de código abierto, ampliamente utilizado y en una posición de liderazgo en cuanto a disponibilidad y flexibilidad de idiomas, Tesseract se destaca. Es confiable para cualquiera que busque una solución gratuita con comunidades activas y mejora continua.

En contraste, IronOCR es una biblioteca propietaria del .NET Framework que ha mejorado la experiencia del usuario con una integración más sencilla y un excelente soporte para la mayoría de los tipos de archivos de imagen. También presenta un rendimiento sobresaliente en el reconocimiento de texto, entre los cuales se destaca el manejo de contenido de imágenes de baja calidad. IronOCR admite completamente muchos idiomas y tiene algunas características adicionales que lo hacen más fácil de usar y completo para el desarrollador que busca facilidad y soporte total.

Una edición de desarrollo económica está disponible para IronOCR. Cuando compras el paquete de IronOCR, recibes una licencia de por vida. Dado que las ofertas de IronOCR comienzan en 749$, un costo único para múltiples sistemas, ofrece una excelente relación calidad-precio. Ofrece soporte en línea de ingenieros 24/7 a los usuarios con licencia de IronOCR. Consulte el IronOCR sitio web para obtener más información sobre la tarifa; para obtener más información sobre los productos de Iron Software, consulte aquí.

SIGUIENTE >
Cómo crear una demostración de software OCR en C#

¿Listo para empezar? Versión: 2024.9 acaba de salir

Descarga gratuita de NuGet Descargas totales: 2,398,755 Ver licencias >