Guía de C#: Cómo usar los filtros de imagen de IronOCR para un mejor OCR
IronOCR proporciona las herramientas que necesitas para leer 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.
como-título:2(Inicio Rápido: Aplicar Filtros para Limpiar Imágenes OCR)
En una simple cadena de llamadas, puede aplicar los filtros DeNoise, Binarize y Deskew para mejorar la claridad del escaneado antes del OCR. Este ejemplo muestra lo fácil que es mejorar imágenes usando los filtros integrados de IronOCR y empezar de inmediato.
Empieza a crear PDF con NuGet ahora:
Instalar IronOCR con el gestor de paquetes NuGet
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
Empieza a utilizar 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:
Filtros para cambiar la Orientación de la ImagenRotate- Rota las imágenes en un número de grados en sentido horario. Para antihorario, usa números negativos.Deskew- Rota una imagen para que esté bien orientada 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.
Filtros para manipular los Colores de la ImagenBinarize- Este filtro de imagen convierte cada píxel en negro o blanco sin un término medio. 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 cada color. Ej. El blanco se convierte en negro y viceversa.ReplaceColor- Reemplaza un color en una imagen con otro color, dentro de un cierto umbral.
Filtros para mejorar el Contraste en una ImagenContrast- 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.
Filtros para reducir el Ruido de ImagenSharpen- Agudiza documentos de OCR borrosos y aplana los canales alpha a blanco.DeNoise- Elimina el ruido digital. Este filtro solo debe usarse en escenarios donde se espera el ruido.EnhanceResolution- Mejora la resolución de imágenes de baja calidad. Este filtro no es frecuentemente necesario porqueOcrInput.MinimumDPIyOcrInput.TargetDPIcapturará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.csusing 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);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.csusing 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);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 de ejecutar Deskew(), sin embargo, el grado de tolerancia para esto es bastante estrecho y es mejor utilizado para imágenes que están casi perfectamente rectas (dentro de unos 15 grados más o menos). Para imágenes de entrada que están a 90 grados o al revés, deberíamos llamar a Rotate().
Ejemplo de código de caso de uso
Este es un ejemplo de llamada a Rotate() para corregir una imagen invertida:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-3.csusing 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);AntesInput.Rotate(180)`` | DespuésInput.Rotate(180)`` |
|---|---|
![]() | ![]() |
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 sesgada:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-4.csusing 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.");
}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 llamada a Scale() para ampliar los espacios entre las barras de un código de barras para escanearlo:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-5.csusing 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);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 llamada a Binarize() para alinear texto coloreado y eliminar colores de fondo y ruido:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-6.csusing 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);AntesBinarize()`` | DespuésBinarize()`` |
|---|---|
![]() | ![]() |
Invertir
Explicación del filtro
IronOCR lee mejor cuando la imagen es texto negro sobre un fondo blanco. El filtro Invertir se utiliza para invertir todos los colores de una imagen.
Ejemplo de código de caso de uso
Este es un ejemplo de llamada a Invert() para convertir blanco sobre negro en negro sobre blanco:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-7.csusing 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);Antes | Después |
|---|---|
![]() | ![]() |
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.












