Guía C#: Filtros de imagen en IronOCR para mejorar la conversión de imagen a texto
IronOCR proporciona las herramientas que necesitas para convertir imagen a texto de imágenes que pueden necesitar preprocesamiento en forma de filtros. Puedes elegir entre una amplia variedad de filtros que pueden manipular tus imágenes para que sean procesables.
Inicio rápido: aplicar filtros para limpiar imágenes OCR
Con solo una simple cadena de llamadas, puede aplicar los filtros DeNoise, Binarize y Deskew para mejorar la claridad del escaneo antes del OCR. Este ejemplo muestra lo fácil que es mejorar imágenes usando los filtros integrados de IronOCR y empezar de inmediato.
-
Instala IronOCR con el Administrador de Paquetes NuGet
PM > Install-Package IronOcr -
Copie y ejecute este fragmento de código.
using var input = new IronOcr.OcrInput("scan.jpg"); input.DeNoise(true).Binarize().Deskew(45); var result = new IronOcr.IronTesseract().Read(input); -
Despliegue para probar en su entorno real
Comienza a usar IronOCR en tu proyecto hoy mismo con una prueba gratuita
Lista de filtros de imagen OCR
Los siguientes filtros de imagen pueden realmente mejorar el rendimiento:
Filters to change the Image OrientationRotate- Gira las imágenes unos grados en sentido horario. Para girar en sentido antihorario, use números negativos.Deskew- Gira una imagen para que quede en la posición correcta y ortogonal. Esto es muy útil para OCR porque la tolerancia de Tesseract para escaneos inclinados puede ser tan baja como 5 grados.Scale- Escala las páginas de entrada de OCR proporcionalmente.
Filters to manipulate Image ColorsBinarize- Este filtro de imagen convierte cada píxel en negro o blanco sin punto intermedio. Esto puede mejorar el rendimiento del OCR en casos de muy bajo contraste entre texto y fondo.ToGrayScale- Este filtro de imagen convierte cada píxel en tonos de gris. Poco probable que mejore la precisión del OCR, pero puede mejorar la velocidad.Invert- Invierte todos los colores. Ej. El blanco se convierte en negro y viceversa.ReplaceColor- Reemplaza un color en una imagen con otro color, dentro de un umbral determinado.
Filters to improve Contrast in an ImageContrast- Aumenta el contraste automáticamente. Este filtro suele mejorar la velocidad y precisión del OCR en escaneos de bajo contraste.Dilate- Morfología avanzada. Dilate agrega píxeles a los bordes de los objetos en una imagen. Lo opuesto a Erode.Erode- Morfología avanzada. Erosion elimina píxeles de los límites de los objetos. Lo opuesto a Dilate.
Filters to reduce Image NoiseSharpen- Afina los documentos OCR borrosos y aplana los canales alfa a blanco.DeNoise- Elimina el ruido digital. Este filtro solo debe usarse en situaciones donde se espera ruido.EnhanceResolution- Mejora la resolución de imágenes de baja calidad. Este filtro no suele ser necesario porqueOcrInput.MinimumDPIyOcrInput.TargetDPIdetectarán y resolverán automáticamente las entradas de baja resolución.
Ejemplo y uso de filtros
En el siguiente ejemplo, demostramos cómo aplicar filtros dentro de tu código.
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-1.cs
using IronOcr;
using System;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("my_image.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("my_image.png")
input.Deskew()
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
Filtro de depuración / ¿Qué está haciendo el filtro?
Si tienes dificultades para leer imágenes o códigos de barras dentro de tu programa, hay una forma de guardar una imagen de un resultado filtrado. De esta manera, puedes depurar y ver exactamente lo que hace cada filtro y cómo está manipulando tu imagen.
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-2.cs
using IronOcr;
using System;
var file = "skewed_image.tiff";
var ocr = new IronTesseract();
using var input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(file, pageindices);
// Here we apply the filter: Deskew
input.Deskew();
// Save the input with filter(s) applied
input.SaveAsImages("my_deskewed");
// We read, then print the text to the console
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
Private file = "skewed_image.tiff"
Private ocr = New IronTesseract()
Private input = New OcrInput()
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames(file, pageindices)
' Here we apply the filter: Deskew
input.Deskew()
' Save the input with filter(s) applied
input.SaveAsImages("my_deskewed")
' We read, then print the text to the console
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
Casos de uso de filtros
Girar
Explicación del filtro
Rotate es un filtro utilizado para establecer manualmente una rotación conocida a una imagen para que esté lo más cerca posible de estar recta. IronOCR tiene la funcionalidad para ejecutar Deskew(), sin embargo, el grado de tolerancia para esto es bastante estrecho y se utiliza mejor para imágenes que son casi perfectamente rectas (dentro de los 15 grados aproximadamente). Para las imágenes de entrada que están desviadas 90 grados o al revés, debemos llamar a Rotate().
Ejemplo de código de caso de uso
Este es un ejemplo de cómo llamar a Rotate() para corregir una imagen al revés:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-3.cs
using IronOcr;
using System;
var image = "screenshot.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Rotate 180 degrees because image is upside-down
input.Rotate(180);
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
Private image = "screenshot.png"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Rotate 180 degrees because image is upside-down
input.Rotate(180)
' Read image into variable: result
Dim result = ocr.Read(input)
' Example print to console
Console.WriteLine(result.Text)
| `` | `` |
|---|---|
![]() |
![]() |
Escritorio
Explicación del filtro
Utiliza una Transformación de Hough para intentar enderezar una imagen dentro de ciertos grados de tolerancia. Esto es importante para imágenes que no están completamente rectas porque un documento inclinado puede resultar en una lectura equivocada.
Ejemplo de código de caso de uso
Este es un ejemplo de cómo llamar a Deskew() para corregir una imagen torcida:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-4.cs
using IronOcr;
using System;
var image = @"paragraph_skewed.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply deskew with 15 degree snap
bool didDeskew = input.Deskew(15);
if (didDeskew)
{
// Read image into variable: result
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
else
{
Console.WriteLine("Deskew not applied because Image Orientation could not be determined.");
}
Imports IronOcr
Imports System
Private image = "paragraph_skewed.png"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Apply deskew with 15 degree snap
Dim didDeskew As Boolean = input.Deskew(15)
If didDeskew Then
' Read image into variable: result
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
Else
Console.WriteLine("Deskew not applied because Image Orientation could not be determined.")
End If
Escala
Explicación del filtro
Scale es un filtro útil de manipulación de imagen que ayuda a redimensionar una imagen utilizando los píxeles que ya tiene. Esto se puede usar cuando un código de barras no está siendo escaneado porque la imagen tiene solo decenas de píxeles de ancho, con cada barra como un pixel, o si el texto es demasiado pequeño sin suavizado.
1000px x 1000px donde los códigos de barras se pueden leer bien, lo que se debe tener en cuenta si no se encuentra su código de barras.Ejemplo de código de caso de uso
Este es un ejemplo de cómo llamar a Scale() para ampliar los espacios entre las barras de un código de barras para escanear:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-5.cs
using IronOcr;
using System;
var image = @"small_barcode.png";
var ocr = new IronTesseract();
// Optional: This example uses a barcode
ocr.Configuration.ReadBarCodes = true;
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply scale
input.Scale(400); // 400% is 4 times larger
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
Private image = "small_barcode.png"
Private ocr = New IronTesseract()
' Optional: This example uses a barcode
ocr.Configuration.ReadBarCodes = True
Dim input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Apply scale
input.Scale(400) ' 400% is 4 times larger
' Read image into variable: result
Dim result = ocr.Read(input)
' Example print to console
Console.WriteLine(result.Text)
Binarizar
Explicación del filtro
El filtro Binarize clasifica todos los píxeles en una imagen como negros o blancos, dependiendo de un algoritmo adaptativo. Esto elimina todos los colores y separa el fondo en un blanco plano, con todo lo que se reconoce como texto coloreado en un negro total para facilitar la lectura.
Ejemplo de código de caso de uso
Este es un ejemplo de cómo llamar a Binarize() para alinear el texto en color y eliminar los colores de fondo y el ruido:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-6.cs
using IronOcr;
using System;
var image = @"no-binarize.jpg";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply Binarize
input.Binarize();
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
Private image = "no-binarize.jpg"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Apply Binarize
input.Binarize()
' Read image into variable: result
Dim result = ocr.Read(input)
' Example print to console
Console.WriteLine(result.Text)
| `` | `` |
|---|---|
![]() |
![]() |
Invertir
Explicación del filtro
IronOCR se lee mejor cuando la imagen es black text on a white background. El filtro Invert se utiliza para lograr esto invirtiendo todos los colores de una imagen.
Ejemplo de código de caso de uso
Este es un ejemplo de cómo llamar a Invert() para convertir el blanco sobre negro en negro sobre blanco:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-7.cs
using IronOcr;
using System;
var image = @"before-invert.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply Invert
input.Invert(true);
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
Private image = "before-invert.png"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Apply Invert
input.Invert(True)
' Read image into variable: result
Dim result = ocr.Read(input)
' Example print to console
Console.WriteLine(result.Text)
Before |
After |
|---|---|
![]() |
![]() |
Preguntas Frecuentes
¿Cómo pueden los filtros de imagen mejorar la precisión del OCR en C#?
Los filtros de imagen en IronOCR pueden preprocesar las imágenes para mejorar su calidad, mejorando así la precisión del OCR. Filtros como Binario y Contraste aumentan la legibilidad ajustando colores y contrastes, mientras que Rotar y Desviación corrigen la orientación de la imagen.
¿Qué filtros están disponibles para corregir la orientación de la imagen?
IronOCR proporciona filtros de Rotar y Desviación para corregir problemas de orientación de imágenes. Rotar permite el ajuste manual de ángulos de imagen, mientras que Desviación endereza automáticamente las imágenes ligeramente inclinadas.
¿Cómo afecta el filtro Binario al preprocesamiento de la imagen?
El filtro Binario en IronOCR convierte los píxeles de la imagen en blanco y negro, lo que elimina los colores de fondo y mejora la visibilidad del texto, mejorando particularmente la precisión del OCR en condiciones de bajo contraste.
¿Cuándo es apropiado usar filtros de reducción de ruido?
Los filtros de reducción de ruido como Afilar y ReducirRuido deben usarse cuando hay ruido digital en las imágenes. Estos filtros limpian la imagen, haciendo que el texto sea más claro para obtener mejores resultados de OCR en IronOCR.
¿Puede la mejora de la resolución de la imagen afectar el rendimiento del OCR?
Sí, usar el filtro MejorarResolución puede mejorar el rendimiento del OCR al aumentar la resolución de imágenes de baja calidad. Aunque las configuraciones por defecto de DPI Mínimo y DPI Objetivo de IronOCR a menudo son suficientes, el filtro puede proporcionar una mejora adicional de la resolución si es necesario.
¿Qué papel juegan los filtros de manipulación de color en el OCR?
Los filtros de manipulación de color como Invertir, A Escala de Grises y Binario en IronOCR ajustan los colores de la imagen para aumentar la legibilidad del texto. Invertir cambia los esquemas de color, A Escala de Grises convierte las imágenes a escala de grises, y Binario reduce las imágenes a blanco y negro.
¿Cuál es la diferencia entre los filtros de Contraste y Afilar?
El filtro de Contraste en IronOCR aumenta la diferencia entre las áreas claras y oscuras, mejorando la claridad del texto, mientras que el filtro Afilar mejora los bordes para hacer que el texto sea más distintivo, ayudando a un mejor reconocimiento de OCR.
¿Cómo guardar y depurar imágenes filtradas en IronOCR?
Para guardar y depurar imágenes filtradas en IronOCR, use la función SaveAsImages después de aplicar filtros. Esto ayuda a visualizar los efectos de los filtros y asegura que los pasos de preprocesamiento hayan mejorado la calidad de la imagen para el OCR.
¿Cuáles son los filtros morfológicos avanzados disponibles en IronOCR?
IronOCR ofrece filtros morfológicos avanzados como Dilatar y Erosionar. Dilatar agrega píxeles a los límites de los objetos para mejorar las características, mientras que Erosionar los elimina, ambos utilizados para aclarar detalles de imagen para mejorar la precisión del OCR.







