Guía de C#: Cómo usar los filtros de imagen de IronOCR para un mejor OCR

This article was translated from English: Does it need improvement?
Translated
View the article in English

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 solo una simple cadena de llamadas, puedes aplicar 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.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronOCR con el gestor de paquetes NuGet

    PM > Install-Package IronOcr

  2. 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);
  3. Despliegue para probar en su entorno real

    Empieza a utilizar IronOCR en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer

Lista de filtros de imagen OCR

Los siguientes filtros de imagen pueden realmente mejorar el rendimiento:

  • Filtros para cambiar la Orientación de la Imagen
    • Rotate - 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 Imagen
    • Binarize - 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 Imagen
    • Contrast - 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 Imagen
    • Sharpen - 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.
    • DeepCleanBackgroundNoise - Eliminación pesada del ruido de fondo. Utiliza este filtro solo si se sabe que hay un ruido extremo de fondo documental, ya que podría reducir la precisión del OCR en documentos limpios y es intenso para la CPU.
    • EnhanceResolution - Mejora la resolución de imágenes de baja calidad. Este filtro no es frecuentemente necesario porque OcrInput.MinimumDPI y OcrInput.TargetDPI capturará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)
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

Casos de uso de filtros

Girar

Referencia de API

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 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)
$vbLabelText   $csharpLabel
AntesInput.Rotate(180)`` DespuésInput.Rotate(180)``
Screenshot related to Ejemplo de código de caso de uso Screenshot Rotated related to Ejemplo de código de caso de uso

Escritorio

Referencia de API

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.

Por favor notaEste método devuelve un valor booleano, que es verdadero si se aplicó el filtro y falso si no se pudo aplicar debido a que no se pudo detectar la orientación de la imagen. Esto fallará si la página no tiene contenido para definir la orientación.

Ejemplo de código de caso de uso

Este es un ejemplo de llamar a Deskew para corregir una imagen sesgada:

: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
$vbLabelText   $csharpLabel
AntesDeskew()`` DespuésDeskew()``
Paragraph Skewed related to Ejemplo de código de caso de uso Paragraph Deskewed related to Ejemplo de código de caso de uso

Escala

Referencia de API

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.

Por favor notaExiste un punto óptimo para tamaños de códigos de barras de 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 llamar a Scale para ampliar los espacios entre las barras en 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)
$vbLabelText   $csharpLabel
AntesScale()`` DespuésScale()``
C Sharp Ocr Image Filters 1 related to Ejemplo de código de caso de uso C Sharp Ocr Image Filters 2 related to Ejemplo de código de caso de uso

Binarizar

Referencia de API

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 llamar 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.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)
$vbLabelText   $csharpLabel
AntesBinarize()`` DespuésBinarize()``
No Binarize related to Ejemplo de código de caso de uso After Binarize related to Ejemplo de código de caso de uso

Invertir

Referencia de API

Explicación del filtro

IronOCR lee mejor cuando la imagen es texto negro sobre un fondo blanco. El filtro Invert se utiliza para lograr esto invirtiendo todos los colores en una imagen.

Ejemplo de código de caso de uso

Este es un ejemplo de llamar 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.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)
$vbLabelText   $csharpLabel
Before After
Before Invert related to Ejemplo de código de caso de uso After Invert related to Ejemplo de código de caso de uso

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.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
Revisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente Principal de Programas - Equipo de la Comunidad .NET
Jeff también es Gerente Principal de Programas para los equipos de .NET y Visual Studio. Es el productor ejecutivo de la serie de conferencias virtuales .NET Conf y anfitrión de 'Fritz and Friends', una transmisión en vivo para desarrolladores que se emite dos veces a la semana donde habla sobre tecnología y escribe código junto con la audiencia. Jeff escribe talleres, presentaciones, y planifica contenido para los eventos de desarrolladores más importantes de Microsoft, incluyendo Microsoft Build, Microsoft Ignite, .NET Conf y la Cumbre de Microsoft MVP.
¿Listo para empezar?
Nuget Descargas 5,167,857 | Version: 2025.11 recién lanzado