Saltar al pie de página
USANDO IRONOCR

Cómo implementar OCR en proyectos de GitHub de C# con IronOCR

La búsqueda de soluciones de OCR en GitHub suele arrojar documentación fragmentada, configuraciones complejas de Tesseract y proyectos que no se han actualizado en años. Para los desarrolladores de C# que necesitan una extracción de texto fiable de imágenes y archivos PDF, navegar por el ecosistema de repositorios puede llevarles horas que sería mejor dedicar a programar. Muchos proyectos de reconocimiento óptico de caracteres de código abierto requieren la gestión manual de archivos binarios, la descarga de archivos tessdata y la resolución de problemas específicos de cada plataforma.

Este tutorial muestra cómo implementar la funcionalidad OCR en proyectos de C# utilizando la biblioteca IronOCR, una biblioteca gestionada que elimina la sobrecarga de configuración habitual en los envoltorios Tesseract sin procesar. Ya sea para crear flujos de procesamiento de documentos o para añadir reconocimiento de texto a aplicaciones existentes, esta guía ofrece ejemplos de código funcional listos para cualquier proyecto de OCR en C# en GitHub.

¿Cómo empezar a utilizar IronOCR?

IronOCR proporciona una biblioteca .NET gestionada distribuida a través de NuGet, lo que facilita su integración en cualquier repositorio de GitHub. A diferencia de los envoltorios OCR de código abierto de Tesseract, que requieren la gestión manual de los binarios y la configuración de tessdata, IronOCR gestiona estas dependencias internamente y funciona de forma inmediata en Windows, Linux y macOS.

La biblioteca mantiene repositorios de ejemplos oficiales en GitHub que los desarrolladores pueden clonar y consultar. Estos ejemplos muestran implementaciones reales, como la conversión de imagen a texto, la compatibilidad con varios idiomas y el procesamiento de PDF. Los colaboradores pueden probar las funciones inmediatamente después de clonar el repositorio sin necesidad de ninguna configuración adicional.

Para empezar en Visual Studio, instale IronOCR a través del gestor de paquetes NuGet:

Install-Package IronOcr
Install-Package IronOcr
SHELL

OCR C# GitHub: Implementar el reconocimiento de texto con IronOCR: Imagen 1 - Instalación

Una vez instalado, este paquete único incluye todo lo necesario para las operaciones de OCR. La biblioteca es compatible con .NET Framework 4.6.2+, .NET Core y .NET 5 a 10 para garantizar la máxima compatibilidad con todo tipo de proyectos.

¿Cómo se extrae texto de formatos de imagen en C#?

El siguiente ejemplo muestra la extracción básica de texto utilizando la clase IronTesseract de IronOCR. Este motor de OCR lee varios formatos de imagen, incluidos PNG, JPG, JPEG, BMP, GIF y TIFF:

using IronOcr;

// Initialize the OCR engine
var ocr = new IronTesseract();

// Load and process an image
using var input = new OcrInput("document-scan.png");

// Perform OCR and retrieve results
var result = ocr.Read(input);

// Output the extracted text to console
Console.WriteLine($"Extracted Text:\n{result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;

// Initialize the OCR engine
var ocr = new IronTesseract();

// Load and process an image
using var input = new OcrInput("document-scan.png");

// Perform OCR and retrieve results
var result = ocr.Read(input);

// Output the extracted text to console
Console.WriteLine($"Extracted Text:\n{result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
$vbLabelText   $csharpLabel

La clase IronTesseract actúa como motor OCR principal, basado en una implementación optimizada de Tesseract 5. Tras crear una instancia, el objeto OcrInput carga la imagen de destino desde el disco, una URL o una matriz de bytes. El método Read procesa la entrada y devuelve un OcrResult que contiene el texto sin formato extraído junto con un porcentaje de confianza que indica la precisión del reconocimiento. Los valores de confianza más altos (por encima del 90%) suelen indicar documentos fuente limpios y bien formateados.

El objeto OcrResult proporciona acceso estructurado al contenido reconocido. Además del texto sin formato, los desarrolladores pueden acceder a palabras, líneas, párrafos y caracteres individuales, junto con sus posiciones y puntuaciones de confianza. Cada Word incluye las coordenadas del rectángulo delimitador, lo que resulta muy útil para aplicaciones que requieren datos precisos sobre la ubicación del texto, como la anotación de documentos o la extracción de campos de formularios.

Entrada

OCR C# GitHub: Implementar el reconocimiento de texto con IronOCR: Imagen 2 - Ejemplo de entrada

Resultado

OCR C# GitHub: Implementar el reconocimiento de texto con IronOCR: Imagen 3 - Salida de la consola

IronOCR también admite la carga de imágenes desde flujos y matrices de bytes, lo cual resulta especialmente útil en aplicaciones web que reciben cargas de archivos. Esto significa que el procesamiento OCR puede realizarse íntegramente en memoria sin escribir archivos temporales en el disco, lo que reduce la sobrecarga de entrada-salida en entornos de alto rendimiento.

OCR C# GitHub: Implementar el reconocimiento de texto con IronOCR: Imagen 4 - Características

¿Cómo mejora el preprocesamiento de imágenes la precisión del reconocimiento óptico de caracteres?

Los documentos escaneados suelen llegar torcidos, con ruido o con resoluciones que no son las óptimas. IronOCR incluye filtros de preprocesamiento integrados que corrigen estos problemas antes de que el motor OCR procese la imagen:

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput("skewed-receipt.jpg");

// Apply preprocessing filters to enhance scan quality
input.Deskew();                    // Straighten rotated images
input.DeNoise();                   // Remove digital artifacts
input.EnhanceResolution(225);      // Optimize DPI for OCR

var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput("skewed-receipt.jpg");

// Apply preprocessing filters to enhance scan quality
input.Deskew();                    // Straighten rotated images
input.DeNoise();                   // Remove digital artifacts
input.EnhanceResolution(225);      // Optimize DPI for OCR

var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

El método Deskew detecta y corrige automáticamente la rotación de imágenes de hasta 15 grados, lo que resuelve el caso habitual de páginas colocadas ligeramente descentradas en un escáner. El filtro DeNoise elimina las manchas y los artefactos habituales en documentos fotografiados o escaneos antiguos. EnhanceResolution mejora la calidad de las imágenes con baja resolución (DPI) hasta un rango de 200-300 DPI, lo cual es óptimo para la precisión del reconocimiento óptico de caracteres.

Estos filtros se pueden encadenar y ejecutarse íntegramente en memoria sin necesidad de archivos temporales. En muchos casos, aplicar varias pasadas de preprocesamiento puede mejorar sustancialmente los resultados del reconocimiento de texto en documentos con graves problemas de calidad, como tinta descolorida, ruido de fondo o distorsión de la cámara. La mejora es más notable en documentos escaneados a menos de 150 ppp o en fotografías tomadas en condiciones de iluminación irregulares.

¿Cómo ayuda el recorte de la zona de interés al rendimiento?

En los documentos en los que solo una parte de la imagen contiene texto relevante, definir una región de recorte reduce tanto el tiempo de procesamiento como los posibles falsos positivos debidos al ruido de fondo:

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput("invoice.png");

// Define crop region (x, y, width, height in pixels)
var cropArea = new CropRectangle(50, 100, 600, 300);
input.AddRegion(cropArea);

var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput("invoice.png");

// Define crop region (x, y, width, height in pixels)
var cropArea = new CropRectangle(50, 100, 600, 300);
input.AddRegion(cropArea);

var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Dirigirse a una región específica resulta especialmente valioso al procesar documentos estructurados, como facturas o formularios, en los que los campos de texto ocupan posiciones conocidas. Este enfoque puede reducir el tiempo de procesamiento del OCR entre un 40 % y un 70 % en comparación con el análisis de la imagen completa, dependiendo de la cantidad de contenido irrelevante que haya en la imagen.

¿Se pueden extraer códigos de barras y códigos QR junto con texto?

IronOCR puede reconocer texto y escanear BarCodes simultáneamente dentro del mismo documento. Esta doble funcionalidad resulta muy útil para procesar facturas, etiquetas de envío y documentos de inventario:

using IronOcr;

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;  // Enable barcode detection

using var input = new OcrInput("shipping-label.png");
var result = ocr.Read(input);

// Access extracted text
Console.WriteLine($"Text: {result.Text}");

// Access any barcodes found in the image
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}");
}
using IronOcr;

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;  // Enable barcode detection

using var input = new OcrInput("shipping-label.png");
var result = ocr.Read(input);

// Access extracted text
Console.WriteLine($"Text: {result.Text}");

// Access any barcodes found in the image
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}");
}
$vbLabelText   $csharpLabel

Cuando ReadBarCodes se establece en true, la detección de BarCodes se activa sin afectar significativamente al tiempo de procesamiento. La colección Barcodes del resultado contiene el valor y el tipo de formato de cada BarCode detectado. Los formatos compatibles incluyen códigos QR, Code 128, EAN-13, UPC, Data Matrix y PDF417. Esta doble capacidad elimina la necesidad de utilizar bibliotecas de escaneo de BarCodes independientes al procesar documentos que contienen tanto texto legible por el ser humano como códigos legibles por máquina.

Entrada

OCR C# GitHub: Implementar el reconocimiento de texto con IronOCR: Imagen 5 - Ejemplo de imagen de BarCode

Resultado

OCR C# GitHub: Implementar el reconocimiento de texto con IronOCR: Imagen 6 - Salida de texto de BarCode en la consola

En el caso de las aplicaciones de almacén y logística, la combinación de la extracción de texto y BarCodes en una sola pasada reduce las llamadas a la API y simplifica la arquitectura de la aplicación. Una sola operación Read devuelve todos los datos reconocibles del documento, ya sean texto impreso, escritura manuscrita o códigos legibles por máquina. La propiedad OcrResult.Barcodes expone una colección tipada, de modo que el código posterior puede iterar los resultados sin necesidad de una lógica de análisis sintáctico específica del formato.

¿Cómo generar archivos PDF con capacidad de búsqueda a partir de imágenes escaneadas?

La conversión de documentos escaneados a archivos PDF con capacidad de búsqueda permite seleccionar y copiar texto, así como realizar búsquedas de texto completo dentro de los sistemas de gestión de documentos. Se trabaja con varios formatos de imagen como entrada:

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput("scanned-contract.tiff");
var result = ocr.Read(input);

// Export as searchable PDF with invisible text layer
result.SaveAsSearchablePdf("contract-searchable.pdf");
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput("scanned-contract.tiff");
var result = ocr.Read(input);

// Export as searchable PDF with invisible text layer
result.SaveAsSearchablePdf("contract-searchable.pdf");
$vbLabelText   $csharpLabel

El método SaveAsSearchablePdf incrusta una capa de texto invisible que coincide con el contenido reconocido, conservando el aspecto del documento original al tiempo que permite realizar operaciones con el texto. Esto da como resultado documentos aptos para sistemas de archivo y de gestión documental Enterprise. IronOCR también permite exportar los resultados como HTML o JSON para su integración con sistemas posteriores.

En el caso de documentos de varias páginas, IronOCR procesa cada página por separado y agrupa el resultado en un único archivo. Los archivos TIFF con varios fotogramas se gestionan automáticamente, lo que facilita la conversión por lotes de archivos de documentos escaneados. El PDF resultante conserva el diseño visual del escaneo original, mientras que la capa de texto incrustada permite realizar búsquedas completas en cada página en cualquier visor de PDF o plataforma de gestión de documentos.

¿Cómo se utiliza IronOCR en aplicaciones multilingües?

IronOCR admite más de 125 idiomas, entre los que se incluyen inglés, español, francés, alemán, chino, japonés, árabe y muchos otros. Los paquetes de idiomas se instalan a través de NuGet como paquetes independientes, lo que mantiene la biblioteca principal ligera:

using IronOcr;

// Install-Package IronOcr.Languages.French
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.French;

using var input = new OcrInput("french-document.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

// Install-Package IronOcr.Languages.French
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.French;

using var input = new OcrInput("french-document.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Para documentos que contengan varios idiomas en la misma página, IronOCR admite la carga simultánea de varios modelos de idioma. Esto es relevante para aplicaciones internacionalizadas que procesan documentos de múltiples regiones sin necesidad de clasificar previamente los archivos por idioma. Cada paquete de idioma se mantiene junto con la biblioteca principal y admite las mismas capacidades de preprocesamiento y salida.

¿Cuáles son las mejores prácticas para el OCR en proyectos de GitHub?

A la hora de gestionar proyectos de OCR en GitHub, hay algunas decisiones organizativas que mejoran la experiencia de los colaboradores y la salud del proyecto a largo plazo. Estas prácticas se aplican tanto si estás creando un pequeño script de utilidad como un gran servicio de procesamiento de documentos para Enterprise.

Utiliza Git LFS para imágenes de prueba de gran tamaño a fin de evitar que el repositorio se sature. Los activos binarios en el historial estándar de Git aumentan los tiempos de clonación y los costes de almacenamiento, especialmente cuando los conjuntos de datos de prueba incluyen escaneos de alta resolución. Almacena las claves de licencia en variables de entorno o en GitHub Secrets, nunca en código C# confirmado; Consulte la guía de configuración de la clave de licencia para obtener instrucciones de configuración.

Incluya imágenes de muestra en una carpeta específica test-data para que los colaboradores puedan verificar la funcionalidad del OCR sin tener que recurrir a sus propios documentos. Documenta los formatos de imagen compatibles y los requisitos de versión de .NET en los archivos README para reducir las consultas iniciales. Compila y ejecuta pruebas en pipelines de CI utilizando GitHub Actions para confirmar que la biblioteca funciona correctamente en todos los entornos de destino.

Para los flujos de trabajo de GitHub Actions, IronOCR se ejecuta en entornos contenedorizados tanto en ejecutores Windows como Linux. Consulte la guía de implementación en Linux para obtener detalles de configuración si se dirige a Ubuntu u otros entornos que no sean Windows.

¿Cuales son tus próximos pasos?

IronOCR aporta un reconocimiento de texto fiable a los proyectos de C# en GitHub a través de una biblioteca distribuida por NuGet que gestiona la configuración de Tesseract, el preprocesamiento, la detección de BarCodes y la compatibilidad multilingüe sin dependencias binarias externas. Los ejemplos de código de esta guía abarcan los casos de uso principales: extracción básica de texto, preprocesamiento de imágenes, escaneo de BarCode, creación de PDF con capacidad de búsqueda y procesamiento multilingüe.

Para explorar el conjunto completo de funciones, inicia una prueba gratuita sin compromiso de tiempo ni necesidad de tarjeta de crédito. Cuando esté listo para la implementación en producción, revise las opciones de licencia que abarcan desde desarrolladores individuales hasta equipos empresariales.

Recursos relacionados para ampliar tus conocimientos:

OCR C# GitHub: Implementar el reconocimiento de texto con IronOCR: Imagen 7 - Licencias

Preguntas Frecuentes

¿Qué es IronOCR?

IronOCR es una biblioteca de OCR .NET para C# que extrae texto de imágenes y archivos PDF mediante un motor Tesseract 5 optimizado. Se instala mediante NuGet y gestiona las dependencias binarias internamente, sin necesidad de configuración manual de tessdata.

¿Cómo instalo IronOCR en un proyecto C#?

Ejecute «Install-Package IronOCR» en la consola del Administrador de paquetes NuGet de Visual Studio o use la interfaz del Administrador de paquetes NuGet para buscar IronOCR. El paquete incluye todos los binarios necesarios para Windows, Linux y macOS.

¿ IronOCR funciona en Linux para GitHub Actions?

Sí, IronOCR es compatible con ejecutores de Linux en GitHub Actions. Consulta la guía de implementación de Linux en https://ironsoftware.com/csharp/ocr/how-to/linux/ para conocer las dependencias de los paquetes necesarios en Ubuntu y otras distribuciones.

¿Puede IronOCR leer códigos de barras y códigos QR?

Sí. Configure ocr.Configuration.ReadBarCodes como true antes de ejecutar Read(). La colección OcrResult.Barcodes contiene el valor y el tipo de formato de cada código detectado, compatible con QR, Code 128, EAN-13, UPC, Data Matrix y PDF417.

¿Cómo puedo generar un PDF con capacidad de búsqueda a partir de una imagen escaneada?

Tras llamar a ocr.Read(input), utilice result.SaveAsSearchablePdf("output.pdf") para crear un PDF con una capa de texto invisible sobre el escaneo original. El resultado es adecuado para sistemas de archivo y gestión documental empresarial.

¿ IronOCR admite otros idiomas además del inglés?

Sí. IronOCR admite más de 125 idiomas mediante paquetes de idioma NuGet dedicados. Instale el paquete de idioma (por ejemplo, Install-Package IronOcr.Languages.French) y configure ocr.Language = OcrLanguage.French antes del procesamiento.

¿Cómo debo almacenar las claves de licencia de IronOCR en un repositorio de GitHub ?

Almacena las claves de licencia en GitHub Secrets e inyéctalas como variables de entorno en tu flujo de trabajo de GitHub Actions. Nunca confirmes las cadenas de claves de licencia directamente en código C# ni en archivos de configuración de aplicaciones.

¿Qué formatos de imagen soporta IronOCR?

IronOCR admite PNG, JPG, JPEG, BMP, GIF, TIFF (incluidos los multifotogramas), PDF y otros formatos comunes. Las imágenes se pueden cargar desde rutas de archivo, URL, secuencias o matrices de bytes.

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

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame