Cómo corregir los colores de las imágenes para leerlas

por Chaknith Bin

Fijar los colores de una imagen implica varias técnicas para mejorar la legibilidad y la calidad de una imagen. IronOcr ofrece métodos de binarización, escala de grises, inversión y sustitución de colores para que el texto y el contenido de una imagen sean más legibles y estéticamente agradables, lo que es especialmente importante cuando se trabaja con OCR. (Reconocimiento óptico de caracteres) para extraer texto de imágenes. También es posible leer sólo el color del texto seleccionado.


Biblioteca NuGet C# para OCR

Instalar con NuGet

Install-Package IronOcr
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Binarizar Imagen Ejemplo

Este proceso convierte la imagen en un formato de dos colores, normalmente blanco y negro. Es útil para separar el texto del fondo y reducir el ruido, lo que hace que el texto se distinga mejor y sea más fácil de leer.

Para aplicar el efecto de binarización a la imagen, utilice el método Binarizar. Dado que los procesos de OCR funcionan mejor con la imagen de mayor contraste, con texto negro sobre fondo blanco, este método resulta significativo para distinguir bien el fondo de los caracteres.

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-binarize-image.cs
using IronOcr;

//  Instanciar IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

//  Añadir imagen
using var imageInput = new OcrImageInput("sample.jpg");
//  Aplicar efecto binarizado
imageInput.Binarize();

//  Exportar la imagen modificada
imageInput.SaveAsImages("binarize");
Imports IronOcr

'  Instanciar IronTesseract
Private ocrTesseract As New IronTesseract()

'  Añadir imagen
Private imageInput = New OcrImageInput("sample.jpg")
'  Aplicar efecto binarizado
imageInput.Binarize()

'  Exportar la imagen modificada
imageInput.SaveAsImages("binarize")
VB   C#

Para mayor comodidad, puede exportar la imagen modificada utilizando el método SaveAsImages. A continuación se muestra una comparación de la imagen antes y después de la binarización.

Imagen de muestra
Imagen binarizada

Ejemplo de imagen en escala de grises

Convertir la imagen en varios tonos de gris puede distraer menos y facilitar la lectura. Esto es especialmente útil cuando los colores originales de la imagen causan desorden visual.

Para aplicar el efecto de escala de grises a la imagen, utilice el método ToGrayScale. El proceso de escala de grises consiste en sacar la media de los valores R, G y B.

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-grayscale-image.cs
//  Aplicar efecto de escala de grises
imageInput.ToGrayScale();
'  Aplicar efecto de escala de grises
imageInput.ToGrayScale()
VB   C#
Imagen de muestra
Imagen en escala de grises

Invertir imagen Ejemplo

Invertir los colores puede mejorar el contraste. Por ejemplo, convertir texto blanco sobre fondo negro en texto negro sobre fondo blanco puede mejorar la legibilidad.

Utilice el método Invertir para invertir el color de la imagen. El método acepta opcionalmente un valor booleano, que se utiliza para eliminar todos los canales de color y devolver una imagen en escala de grises.

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-invert-image.cs
//  Aplicar efecto de inversión
imageInput.Invert();
'  Aplicar efecto de inversión
imageInput.Invert()
VB   C#

Las siguientes imágenes muestran el método Invertir con y sin la opción de escala de grises.

Imagen invertida
Imagen invertida y en escala de grises

Ejemplo de sustitución de color

Esta técnica permite sustituir determinados colores de la imagen por otros, lo que puede ayudar a resaltar o quitar énfasis a ciertos elementos. Suele utilizarse para resaltar el texto o corregir contrastes de color problemáticos.

Para utilizar el método ReplaceColor, especifique el color actual a sustituir así como el nuevo color. El tercer parámetro del método, que corresponde al valor de tolerancia, también es importante. Se requiere una mayor tolerancia en las imágenes borrosas para lograr el resultado deseado.

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-replace-color.cs
using IronOcr;

//  Instanciar IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

//  Añadir imagen
using var imageInput = new OcrImageInput("sample.jpg");
IronSoftware.Drawing.Color currentColor = new IronSoftware.Drawing.Color("#DB645C");
IronSoftware.Drawing.Color newColor = IronSoftware.Drawing.Color.DarkCyan;

//  Sustituir color
imageInput.ReplaceColor(currentColor, newColor, 80);

//  Exportar la imagen modificada
imageInput.SaveAsImages("replaceColor");
Imports IronOcr

'  Instanciar IronTesseract
Private ocrTesseract As New IronTesseract()

'  Añadir imagen
Private imageInput = New OcrImageInput("sample.jpg")
Private currentColor As New IronSoftware.Drawing.Color("#DB645C")
Private newColor As IronSoftware.Drawing.Color = IronSoftware.Drawing.Color.DarkCyan

'  Sustituir color
imageInput.ReplaceColor(currentColor, newColor, 80)

'  Exportar la imagen modificada
imageInput.SaveAsImages("replaceColor")
VB   C#
Imagen de muestra
Imagen en color sustituida

Ejemplo de color de texto específico de lectura

El objetivo de esta función es leer sólo el color de texto especificado. Utilice el método SelectTextColor para especificar el color que IronOcr debe enfocar, junto con el valor de tolerancia. El valor de tolerancia acepta un rango de 0-255, que representa la diferencia permitida entre el color del píxel y el color seleccionado para cada valor R, G y B en el espacio de color.

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-select-text-color.cs
using IronOcr;
using System;

//  Instanciar IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

//  Añadir imagen
using var imageInput = new OcrImageInput("sample.jpg");
//  Color del texto a enfocar
IronSoftware.Drawing.Color focusColor = new IronSoftware.Drawing.Color("#DB645C");

//  Especifique qué color de texto leer
imageInput.SelectTextColor(focusColor, 60);

//  Realizar OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

//  Salida del resultado a la consola
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports System

'  Instanciar IronTesseract
Private ocrTesseract As New IronTesseract()

'  Añadir imagen
Private imageInput = New OcrImageInput("sample.jpg")
'  Color del texto a enfocar
Private focusColor As New IronSoftware.Drawing.Color("#DB645C")

'  Especifique qué color de texto leer
imageInput.SelectTextColor(focusColor, 60)

'  Realizar OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)

'  Salida del resultado a la consola
Console.WriteLine(ocrResult.Text)
VB   C#

A continuación, encontrará el resultado del OCR, en el que sólo se leerá el texto de color anaranjado.

Resultado OCR

Chaknith Bin

Ingeniero de software

Chaknith es el Sherlock Holmes de los desarrolladores. La primera vez que se le ocurrió que podría tener futuro en la ingeniería de software fue cuando hacía retos de código por diversión. Su trabajo se centra en IronXL e IronBarcode, pero se enorgullece de ayudar a los clientes con todos los productos. Chaknith aprovecha sus conocimientos, adquiridos hablando directamente con los clientes, para ayudar a mejorar los propios productos. Sus comentarios anecdóticos van más allá de los tickets de Jira y apoyan el desarrollo de productos, la documentación y el marketing, para mejorar la experiencia general del cliente.Cuando no está en la oficina, se le puede encontrar aprendiendo sobre aprendizaje automático, codificación y senderismo.