# C# Filtros de corrección de imágenes para mejorar la lectura de OCR
IronOCR proporciona cinco filtros esenciales de corrección de imágenes (`sharpen`, `enhance resolution`, `denoise`, `dilate` y `erode`) que preprocesan las imágenes para mejorar significativamente la precisión de OCR al aumentar la claridad del texto y reducir el ruido antes de la extracción del texto.
*as-heading:2(Guía rápida: Aplique Filtro de Afilado para Texto Claro)*
Utilice `OcrImageInput` de IronOCR para mejorar una imagen borrosa con una sola línea de código. Este ejemplo muestra la mejora de imágenes para un reconocimiento óptico de caracteres preciso.
```cs
:title=Fix Blurry Text Instantly
new IronOcr.OcrImageInput("sample.png").Sharpen().SaveAsImages("output.png");
```
<div class="hsg-featured-snippet">
<h3>Flujo de trabajo mínimo (5 pasos)</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronOcr/">Descargue una biblioteca de C# para la corrección de imágenes mediante filtros</a></li>
<li>Importe el documento PDF y las imágenes para su lectura</li>
<li>Aplique los filtros deseados, como mejorar, aumentar resolución, reducir ruido, dilatación y erosión</li>
<li>Exporte la imagen corregida para su visualización</li>
<li>Utilizar el método <code>Read</code> para el procesamiento OCR</li>
</ol>
</div>
<br class="clear" />
## ¿Cómo se aplica el filtro Sharpen?
Este filtro aumenta el contraste a lo largo de los bordes de la imagen, creando límites de texto más definidos. Mejora la claridad del texto, haciendo que el reconocimiento de caracteres sea más preciso.
### ¿Por qué la nitidez mejora la precisión del OCR?
El filtro de nitidez acentúa los límites entre el texto y el fondo mejorando el contraste de los bordes. Los algoritmos de reconocimiento de caracteres necesitan formas claras y definidas de las letras para funcionar correctamente. El texto borroso con bordes suaves, común en documentos escaneados o fotos de baja calidad, hace que los motores de OCR identifiquen erróneamente los límites de los caracteres. Para obtener más información sobre el procesamiento óptimo de imágenes para OCR, consulta nuestra completa guía sobre [Filtros de optimización de imágenes para OCR](https://ironsoftware.com/csharp/ocr/examples/ocr-image-filters-for-net-tesseract/).
Para aplicar el filtro de mejora, invoque el método `Sharpen` del objeto `OcrImageInput`:
```csharp
using IronOcr;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Apply sharpen filter
imageInput.Sharpen();
// Export filtered image
imageInput.SaveAsImages("sharpen.jpg");
```
### ¿Cuándo debo utilizar el filtro Sharpen?
Utilice el enfoque para imágenes ligeramente desenfocadas, documentos escaneados con bordes de texto suaves o fotografías tomadas con poca luz. Evite dar demasiada nitidez al texto claro, ya que esto introduce artefactos y reduce la precisión. Para escaneos extremadamente borrosos, combina la nitidez con otros filtros o consulta nuestra guía sobre [Cómo arreglar escaneos e imágenes de baja calidad](https://ironsoftware.com/csharp/ocr/examples/ocr-low-quality-scans-tesseract/).
Exporte las imágenes filtradas utilizando el método `SaveAsImages`. A continuación se muestra una comparación del antes y el después.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/ocr/how-to/image-quality-correction/sample.jpg" alt="Blurred text sample showing business article content before applying sharpen filter" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Antes</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/ocr/how-to/image-quality-correction/sharpen_0.webp" alt="Muestra de texto tras aplicar el filtro de enfoque que muestra una definición de bordes mejorada y mayor claridad de los caracteres" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Después</p>
</div>
</div>
<hr />
## ¿Cómo mejorar la resolución para obtener un mejor OCR?
Este filtro aumenta la densidad de píxeles, mejorando la nitidez y la claridad. Ayuda a los motores de reconocimiento óptico de caracteres a leer con mayor precisión texto en imágenes de baja resolución.
### ¿Qué PPP debo utilizar para el OCR?
Los motores de OCR funcionan mejor a 300 DPI (puntos por pulgada). Las resoluciones más bajas provocan errores de reconocimiento de caracteres; las resoluciones más altas ralentizan el procesamiento sin mejorar la precisión. El filtro de mejora de IronOCR aumenta de forma inteligente la escala de las imágenes a niveles óptimos de PPP. Para obtener información detallada, consulte nuestra guía [Configuración de la DPI](https://ironsoftware.com/csharp/ocr/how-to/dpi-setting/).
Invoque el método `EnhanceResolution` para aplicar este filtro. El objetivo predeterminado es 225 PPP:
```csharp
using IronOcr;
// Create OCR input
var imageInput = new OcrImageInput("low-res-scan.jpg");
// Apply enhance resolution filter with default 225 DPI
imageInput.EnhanceResolution();
// Or specify a custom DPI
imageInput.EnhanceResolution(300);
// Combine with OCR reading
var ocr = new IronTesseract();
var result = ocr.Read(imageInput);
Console.WriteLine($"Extracted text: {result.Text}");
```
### ¿Cuándo es más importante mejorar la resolución?
La mejora de la resolución es crucial para:
- Capturas de pantalla capturadas a resolución de pantalla (72-96 PPP)
- Imágenes web descargadas de Internet
- Documentos históricos escaneados a baja resolución
- Transmisiones de fax con una resolución inherentemente baja
El ejemplo [OCR Tesseract Image DPI](https://ironsoftware.com/csharp/ocr/examples/ocr-image-dpi-for-tesseract/) proporciona información sobre cómo los PPP afectan a la precisión en distintos tipos de documentos.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/ocr/how-to/image-quality-correction/sample.jpg" alt="Low-resolution text sample showing blurry, pixelated business article requiring OCR enhancement" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Antes</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/ocr/how-to/image-quality-correction/enhanceResolution_0.webp" alt="Texto con resolución mejorada que muestra caracteres más nítidos tras la mejora de los DPI para una mayor precisión del OCR" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Después</p>
</div>
</div>
<hr />
## ¿Cómo eliminar el ruido de las imágenes?
Los filtros de eliminación de ruido reducen los artefactos no deseados en las imágenes. La reducción de ruido aísla el texto de las interferencias del fondo, lo que produce resultados de OCR más limpios y precisos.
### ¿Cuál es la diferencia entre la morfología 2x2 y 3x3?
El tamaño de la morfología determina la fuerza de eliminación de ruido. Una morfología 2x2 aplica una suave reducción de ruido para minimizar los artefactos y preservar el texto. La morfología 3x3 proporciona una eliminación agresiva del ruido en documentos muy degradados, pero puede afectar a textos muy pequeños.
Para aplicar el filtro de eliminación de ruido, use el método `DeNoise`. La morfología por defecto es 2x2. Pase 'true' para morfología 3x3:
```csharp
using IronOcr;
// Load noisy document
var imageInput = new OcrImageInput("noisy-scan.pdf");
// Apply denoise filter with default 2x2 morphology
imageInput.DeNoise();
// Apply stronger denoising with 3x3 morphology
imageInput.DeNoise(true);
// Combine with other filters for severely degraded images
imageInput.DeNoise()
.Sharpen()
.EnhanceResolution(300);
// Process with OCR
var ocr = new IronTesseract();
var result = ocr.Read(imageInput);
// Check confidence levels
foreach (var page in result.Pages)
{
Console.WriteLine($"Page confidence: {page.Confidence}%");
}
```
### ¿Cómo puedo saber si mi imagen necesita eliminación de ruido?
Busque estos indicadores de ruido:
- Motas o puntos aleatorios en el fondo
- Ruido de sal y pimienta por escaneado deficiente
- Granulosidad de la fotografía con ISO alto
- Textura de fondo de papel reciclado
Para la detección automática de ruido, explore nuestro [Asistente de filtrado](https://ironsoftware.com/csharp/ocr/examples/filter-wizard/).
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/ocr/how-to/image-quality-correction/sample.jpg" alt="Documento escaneado con ruido, motas y artefactos que degradan el texto sobre ejecutivos tecnológicos japoneses" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Antes</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/ocr/how-to/image-quality-correction/denoise_0.webp" alt="Documento limpio después de que el filtro de reducción de ruido elimina las motas del fondo y mejora la claridad del texto" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Después</p>
</div>
</div>
<hr />
## ¿Cómo se utiliza el filtro Dilate?
La dilatación amplía las regiones brillantes de las imágenes. Engrosa el texto, haciéndolo más destacado y más fácil de interpretar para el software OCR.
### ¿Cuándo debo aplicar la dilatación al texto?
La dilatación funciona mejor con caracteres de texto finos o entrecortados que se encuentran en:
- Documentos de máquina de escribir antigua con tinta inconsistente
- Recibos descoloridos e impresiones en papel térmico
- Documentos con fuentes hairline
- Texto sobrecomprimido en formatos de imagen
La dilatación rellena pequeños huecos dentro de los caracteres y refuerza las conexiones de trazos débiles. De este modo se evita que los motores de OCR interpreten erróneamente los caracteres entrecortados como símbolos múltiples.
Para aplicar el filtro de dilatación, use el método `Dilate`. La morfología por defecto es 2x2; pase 'true' para 3x3:
```csharp
using IronOcr;
// Create OCR engine
var ocrTesseract = new IronTesseract();
// Apply dilate filter
var imageInput = new OcrImageInput("thin-text.jpg");
imageInput.Dilate();
// For more aggressive dilation
imageInput.Dilate(true);
// Practical example for faded receipt processing
var receiptInput = new OcrImageInput("faded-receipt.jpg");
receiptInput.Dilate()
.DeNoise()
.EnhanceResolution(300);
// Configure for better receipt reading
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;
ocrTesseract.Configuration.ReadBarCodes = true;
// Perform OCR
var result = ocrTesseract.Read(receiptInput);
```
### ¿Cuáles son los problemas comunes de la dilatación excesiva?
Una dilatación excesiva puede causar:
- Sangrado de caracteres donde se unen letras adyacentes
- Pérdida de detalles internos (huecos en 'e' u '8')
- Precisión reducida para texto en negrita
Supervise los resultados y ajústelos en consecuencia. Para documentos con pesos de texto mixtos, utilice nuestros filtros de corrección de calidad de imagen de forma selectiva.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/ocr/how-to/image-quality-correction/sample.jpg" alt="Documento con trazos de texto finos que se beneficiaría del filtrado de dilatación para OCR" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Antes</p>
</div>
<div class="competitors__card" style="width: 50%;">
<img src="/static-assets/ocr/how-to/image-quality-correction/dilate_0.webp" alt="Texto tras el filtro de dilatación que muestra trazos de caracteres engrosados y una legibilidad mejorada" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Después</p>
</div>
</div>
<hr />
## ¿Cómo se aplica el filtro Erode?
La erosión reduce el tamaño de las regiones brillantes en las imágenes, afinando los caracteres gruesos o distorsionados y mejorando la separación de caracteres.
### ¿Por qué la erosión ayuda con el texto grueso?
La erosión adelgaza los trazos del texto y separa los caracteres que se tocan. Este filtro destaca con:
- Documentos impresos sobreentintados
- Fotocopias con sangrado de caracteres
- Texto en negrita que aparece fusionado
- Transmisiones de fax de baja calidad
La erosión cuidadosa restaura la separación de caracteres y mejora el reconocimiento de letras individuales, evitando que se lean mal palabras enteras.
Use el método `Erode` para aplicar este filtro. La morfología por defecto es 2x2; pase 'true' para 3x3:
```csharp
using IronOcr;
// Create OCR instance
var ocrTesseract = new IronTesseract();
// Load image with thick text
var imageInput = new OcrImageInput("thick-text.jpg");
// Apply erode filter
imageInput.Erode();
// Stronger erosion for heavily bleeding text
imageInput.Erode(true);
// Example: Processing a poor-quality photocopy
var photocopyInput = new OcrImageInput("thick-text-photocopy.pdf");
// Apply erosion followed by sharpening for best results
photocopyInput.Erode()
.Sharpen()
.EnhanceResolution(300);
// Configure OCR for better accuracy
ocrTesseract.Configuration.BlackListCharacters = "~`@#$%^&*()_+-={}[]|\\:\";<>?,./";
ocrTesseract.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ";
var ocrResult = ocrTesseract.Read(photocopyInput);
// Extract with confidence check
var highConfidenceText = ocrResult.Blocks
.Where(b => b.Confidence > 90)
.Select(b => b.Text);
```
### ¿Cómo equilibrar la erosión con la legibilidad del texto?
Encontrar el nivel de erosión adecuado requiere pruebas minuciosas:
- Empezar con morfología 2x2 por defecto
- Prueba con muestras representativas de documentos
- Compruebe que los signos de puntuación permanezcan visibles
- Garantizar que las fuentes finas no se estropeen
Para documentos con pesos de texto mixtos, consulte nuestras [opciones de configuración avanzadas](https://ironsoftware.com/csharp/ocr/examples/csharp-configure-setup-tesseract/).
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/ocr/how-to/image-quality-correction/sample.jpg" alt="Documento con caracteres fusionados/gruesos que se beneficiaría del procesamiento con filtro de erosión" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Antes</p>
</div>
<div class="competitors__card" style="width: 50%;">
<img src="/static-assets/ocr/how-to/image-quality-correction/erode_0.webp" alt="Texto tras el filtro de erosión que muestra caracteres separados y un grosor de trazo refinado" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Después</p>
</div>
</div>
## ¿Cómo puedo guardar imágenes filtradas como archivos PDF con capacidad de búsqueda?
IronOCR permite guardar PDF modificados con filtros aplicados o en su estado original. El segundo parámetro del método `SaveAsSearchablePdf` determina si se guarda con filtros.
### ¿Cuál es la ventaja de conservar los cambios de filtro?
Preservar los cambios de filtro ofrece varias ventajas:
- Crea documentos más limpios y legibles
- Mantiene la coherencia en todos los lotes de documentos
- Proporciona confirmación visual de las mejoras en la calidad del texto
- Permite realizar comparaciones de control de calidad
La creación de PDF con capacidad de búsqueda incorpora una capa de texto OCR al tiempo que mantiene el aspecto visual. Más información en nuestra guía sobre [creación de PDF con función de búsqueda](https://ironsoftware.com/csharp/ocr/how-to/searchable-pdf/).
```csharp
using IronOcr;
var ocr = new IronTesseract();
var ocrInput = new OcrInput();
// Load a PDF file
ocrInput.LoadPdf("invoice.pdf");
// Apply multiple filters for comprehensive improvement
ocrInput.ToGrayScale()
.DeNoise()
.Sharpen()
.EnhanceResolution(300);
// Perform OCR
OcrResult result = ocr.Read(ocrInput);
// Save the result as a searchable PDF with filters applied
result.SaveAsSearchablePdf("outputFiltered.pdf", true);
// Or save without filters to preserve original appearance
result.SaveAsSearchablePdf("outputOriginal.pdf", false);
// Export to other formats
result.SaveAsTextFile("extracted-text.txt");
result.SaveAsHocrFile("output.html");
```
### ¿Cómo elegir entre PDF filtrados y originales?
**Guardar con filtros (true) cuando:**
- La calidad del documento original es deficiente
- Se necesita un aspecto coherente en todos los documentos
- La versión filtrada mejora notablemente la legibilidad
- Archivado de documentos a largo plazo
**Guardar sin filtros (falso) cuando:**
- La ley exige que se conserve el aspecto original
- La información sobre el color es importante
- Debe mantenerse la autenticidad del documento
- Sólo se necesitan filtros para la precisión del OCR
Para conocer las opciones avanzadas de procesamiento de PDF, explore nuestra [Guía de extracción de texto de PDF OCR](https://ironsoftware.com/csharp/ocr/examples/csharp-pdf-ocr/). Para conocer las combinaciones óptimas de filtros, consulte el [Tutorial del Asistente para filtros](https://ironsoftware.com/csharp/ocr/how-to/filter-wizard/).
IronOCR proporciona cinco filtros esenciales de corrección de imágenes (sharpen, enhance resolution, denoise, dilate y erode) que preprocesan las imágenes para mejorar significativamente la precisión de OCR al aumentar la claridad del texto y reducir el ruido antes de la extracción del texto.
Guía rápida: Aplique Filtro de Afilado para Texto Claro
Utilice OcrImageInput de IronOCR para mejorar una imagen borrosa con una sola línea de código. Este ejemplo muestra la mejora de imágenes para un reconocimiento óptico de caracteres preciso.
Importe el documento PDF y las imágenes para su lectura
Aplique los filtros deseados, como mejorar, aumentar resolución, reducir ruido, dilatación y erosión
Exporte la imagen corregida para su visualización
Utilizar el método Read para el procesamiento OCR
¿Cómo se aplica el filtro Sharpen?
Este filtro aumenta el contraste a lo largo de los bordes de la imagen, creando límites de texto más definidos. Mejora la claridad del texto, haciendo que el reconocimiento de caracteres sea más preciso.
¿Por qué la nitidez mejora la precisión del OCR?
El filtro de nitidez acentúa los límites entre el texto y el fondo mejorando el contraste de los bordes. Los algoritmos de reconocimiento de caracteres necesitan formas claras y definidas de las letras para funcionar correctamente. El texto borroso con bordes suaves, común en documentos escaneados o fotos de baja calidad, hace que los motores de OCR identifiquen erróneamente los límites de los caracteres. Para obtener más información sobre el procesamiento óptimo de imágenes para OCR, consulta nuestra completa guía sobre Filtros de optimización de imágenes para OCR.
Para aplicar el filtro de mejora, invoque el método Sharpen del objeto OcrImageInput:
using IronOcr;// Instantiate IronTesseractIronTesseract ocrTesseract = new IronTesseract();// Add imageusing var imageInput = new OcrImageInput("sample.jpg");// Apply sharpen filterimageInput.Sharpen();// Export filtered imageimageInput.SaveAsImages("sharpen.jpg");
using IronOcr;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Apply sharpen filter
imageInput.Sharpen();
// Export filtered image
imageInput.SaveAsImages("sharpen.jpg");
ImportsIronOcr' Instantiate IronTesseractPrivate ocrTesseract As New IronTesseract()' Add imagePrivate imageInput = New OcrImageInput("sample.jpg")' Apply sharpen filterimageInput.Sharpen()' Export filtered imageimageInput.SaveAsImages("sharpen.jpg")
Imports IronOcr
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Add image
Private imageInput = New OcrImageInput("sample.jpg")
' Apply sharpen filter
imageInput.Sharpen()
' Export filtered image
imageInput.SaveAsImages("sharpen.jpg")
¿Cuándo debo utilizar el filtro Sharpen?
Utilice el enfoque para imágenes ligeramente desenfocadas, documentos escaneados con bordes de texto suaves o fotografías tomadas con poca luz. Evite dar demasiada nitidez al texto claro, ya que esto introduce artefactos y reduce la precisión. Para escaneos extremadamente borrosos, combina la nitidez con otros filtros o consulta nuestra guía sobre Cómo arreglar escaneos e imágenes de baja calidad.
Exporte las imágenes filtradas utilizando el método SaveAsImages. A continuación se muestra una comparación del antes y el después.
Antes
Después
¿Cómo mejorar la resolución para obtener un mejor OCR?
Este filtro aumenta la densidad de píxeles, mejorando la nitidez y la claridad. Ayuda a los motores de reconocimiento óptico de caracteres a leer con mayor precisión texto en imágenes de baja resolución.
¿Qué PPP debo utilizar para el OCR?
Los motores de OCR funcionan mejor a 300 DPI (puntos por pulgada). Las resoluciones más bajas provocan errores de reconocimiento de caracteres; las resoluciones más altas ralentizan el procesamiento sin mejorar la precisión. El filtro de mejora de IronOCR aumenta de forma inteligente la escala de las imágenes a niveles óptimos de PPP. Para obtener información detallada, consulte nuestra guía Configuración de la DPI.
Invoque el método EnhanceResolution para aplicar este filtro. El objetivo predeterminado es 225 PPP:
using IronOcr;// Create OCR inputvar imageInput = new OcrImageInput("low-res-scan.jpg");// Apply enhance resolution filter with default 225 DPIimageInput.EnhanceResolution();// Or specify a custom DPIimageInput.EnhanceResolution(300);// Combine with OCR readingvar ocr = new IronTesseract();var result = ocr.Read(imageInput);Console.WriteLine($"Extracted text: {result.Text}");
using IronOcr;
// Create OCR input
var imageInput = new OcrImageInput("low-res-scan.jpg");
// Apply enhance resolution filter with default 225 DPI
imageInput.EnhanceResolution();
// Or specify a custom DPI
imageInput.EnhanceResolution(300);
// Combine with OCR reading
var ocr = new IronTesseract();
var result = ocr.Read(imageInput);
Console.WriteLine($"Extracted text: {result.Text}");
ImportsIronOcr' Create OCR inputDim imageInput As New OcrImageInput("low-res-scan.jpg")' Apply enhance resolution filter with default 225 DPIimageInput.EnhanceResolution()' Or specify a custom DPIimageInput.EnhanceResolution(300)' Combine with OCR readingDim ocr As New IronTesseract()Dim result = ocr.Read(imageInput)Console.WriteLine($"Extracted text: {result.Text}")
Imports IronOcr
' Create OCR input
Dim imageInput As New OcrImageInput("low-res-scan.jpg")
' Apply enhance resolution filter with default 225 DPI
imageInput.EnhanceResolution()
' Or specify a custom DPI
imageInput.EnhanceResolution(300)
' Combine with OCR reading
Dim ocr As New IronTesseract()
Dim result = ocr.Read(imageInput)
Console.WriteLine($"Extracted text: {result.Text}")
¿Cuándo es más importante mejorar la resolución?
La mejora de la resolución es crucial para:
Capturas de pantalla capturadas a resolución de pantalla (72-96 PPP)
Imágenes web descargadas de Internet
Documentos históricos escaneados a baja resolución
Transmisiones de fax con una resolución inherentemente baja
El ejemplo OCR Tesseract Image DPI proporciona información sobre cómo los PPP afectan a la precisión en distintos tipos de documentos.
Antes
Después
¿Cómo eliminar el ruido de las imágenes?
Los filtros de eliminación de ruido reducen los artefactos no deseados en las imágenes. La reducción de ruido aísla el texto de las interferencias del fondo, lo que produce resultados de OCR más limpios y precisos.
¿Cuál es la diferencia entre la morfología 2x2 y 3x3?
El tamaño de la morfología determina la fuerza de eliminación de ruido. Una morfología 2x2 aplica una suave reducción de ruido para minimizar los artefactos y preservar el texto. La morfología 3x3 proporciona una eliminación agresiva del ruido en documentos muy degradados, pero puede afectar a textos muy pequeños.
Para aplicar el filtro de eliminación de ruido, use el método DeNoise. La morfología por defecto es 2x2. Pase 'true' para morfología 3x3:
using IronOcr;// Load noisy documentvar imageInput = new OcrImageInput("noisy-scan.pdf");// Apply denoise filter with default 2x2 morphologyimageInput.DeNoise();// Apply stronger denoising with 3x3 morphologyimageInput.DeNoise(true);// Combine with other filters for severely degraded imagesimageInput.DeNoise() .Sharpen() .EnhanceResolution(300);// Process with OCRvar ocr = new IronTesseract();var result = ocr.Read(imageInput);// Check confidence levelsforeach (var page in result.Pages){Console.WriteLine($"Page confidence: {page.Confidence}%");}
using IronOcr;
// Load noisy document
var imageInput = new OcrImageInput("noisy-scan.pdf");
// Apply denoise filter with default 2x2 morphology
imageInput.DeNoise();
// Apply stronger denoising with 3x3 morphology
imageInput.DeNoise(true);
// Combine with other filters for severely degraded images
imageInput.DeNoise()
.Sharpen()
.EnhanceResolution(300);
// Process with OCR
var ocr = new IronTesseract();
var result = ocr.Read(imageInput);
// Check confidence levels
foreach (var page in result.Pages)
{
Console.WriteLine($"Page confidence: {page.Confidence}%");
}
ImportsIronOcr' Load noisy documentDim imageInput As New OcrImageInput("noisy-scan.pdf")' Apply denoise filter with default 2x2 morphologyimageInput.DeNoise()' Apply stronger denoising with 3x3 morphologyimageInput.DeNoise(True)' Combine with other filters for severely degraded imagesimageInput.DeNoise() _ .Sharpen() _ .EnhanceResolution(300)' Process with OCRDim ocr As New IronTesseract()Dim result = ocr.Read(imageInput)' Check confidence levelsFor Each page In result.PagesConsole.WriteLine($"Page confidence: {page.Confidence}%")Next
Imports IronOcr
' Load noisy document
Dim imageInput As New OcrImageInput("noisy-scan.pdf")
' Apply denoise filter with default 2x2 morphology
imageInput.DeNoise()
' Apply stronger denoising with 3x3 morphology
imageInput.DeNoise(True)
' Combine with other filters for severely degraded images
imageInput.DeNoise() _
.Sharpen() _
.EnhanceResolution(300)
' Process with OCR
Dim ocr As New IronTesseract()
Dim result = ocr.Read(imageInput)
' Check confidence levels
For Each page In result.Pages
Console.WriteLine($"Page confidence: {page.Confidence}%")
Next
¿Cómo puedo saber si mi imagen necesita eliminación de ruido?
La dilatación amplía las regiones brillantes de las imágenes. Engrosa el texto, haciéndolo más destacado y más fácil de interpretar para el software OCR.
¿Cuándo debo aplicar la dilatación al texto?
La dilatación funciona mejor con caracteres de texto finos o entrecortados que se encuentran en:
Documentos de máquina de escribir antigua con tinta inconsistente
Recibos descoloridos e impresiones en papel térmico
Documentos con fuentes hairline
Texto sobrecomprimido en formatos de imagen
La dilatación rellena pequeños huecos dentro de los caracteres y refuerza las conexiones de trazos débiles. De este modo se evita que los motores de OCR interpreten erróneamente los caracteres entrecortados como símbolos múltiples.
Para aplicar el filtro de dilatación, use el método Dilate. La morfología por defecto es 2x2; pase 'true' para 3x3:
using IronOcr;// Create OCR enginevar ocrTesseract = new IronTesseract();// Apply dilate filtervar imageInput = new OcrImageInput("thin-text.jpg");imageInput.Dilate();// For more aggressive dilationimageInput.Dilate(true);// Practical example for faded receipt processingvar receiptInput = new OcrImageInput("faded-receipt.jpg");receiptInput.Dilate() .DeNoise() .EnhanceResolution(300);// Configure for better receipt readingocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;ocrTesseract.Configuration.ReadBarCodes = true;// Perform OCRvar result = ocrTesseract.Read(receiptInput);
using IronOcr;
// Create OCR engine
var ocrTesseract = new IronTesseract();
// Apply dilate filter
var imageInput = new OcrImageInput("thin-text.jpg");
imageInput.Dilate();
// For more aggressive dilation
imageInput.Dilate(true);
// Practical example for faded receipt processing
var receiptInput = new OcrImageInput("faded-receipt.jpg");
receiptInput.Dilate()
.DeNoise()
.EnhanceResolution(300);
// Configure for better receipt reading
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;
ocrTesseract.Configuration.ReadBarCodes = true;
// Perform OCR
var result = ocrTesseract.Read(receiptInput);
ImportsIronOcr' Create OCR engineDim ocrTesseract As New IronTesseract()' Apply dilate filterDim imageInput As New OcrImageInput("thin-text.jpg")imageInput.Dilate()' For more aggressive dilationimageInput.Dilate(True)' Practical example for faded receipt processingDim receiptInput As New OcrImageInput("faded-receipt.jpg")receiptInput.Dilate() _ .DeNoise() _ .EnhanceResolution(300)' Configure for better receipt readingocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlockocrTesseract.Configuration.ReadBarCodes = True' Perform OCRDim result = ocrTesseract.Read(receiptInput)
Imports IronOcr
' Create OCR engine
Dim ocrTesseract As New IronTesseract()
' Apply dilate filter
Dim imageInput As New OcrImageInput("thin-text.jpg")
imageInput.Dilate()
' For more aggressive dilation
imageInput.Dilate(True)
' Practical example for faded receipt processing
Dim receiptInput As New OcrImageInput("faded-receipt.jpg")
receiptInput.Dilate() _
.DeNoise() _
.EnhanceResolution(300)
' Configure for better receipt reading
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock
ocrTesseract.Configuration.ReadBarCodes = True
' Perform OCR
Dim result = ocrTesseract.Read(receiptInput)
¿Cuáles son los problemas comunes de la dilatación excesiva?
Una dilatación excesiva puede causar:
Sangrado de caracteres donde se unen letras adyacentes
Pérdida de detalles internos (huecos en 'e' u '8')
Precisión reducida para texto en negrita
Supervise los resultados y ajústelos en consecuencia. Para documentos con pesos de texto mixtos, utilice nuestros filtros de corrección de calidad de imagen de forma selectiva.
Antes
Después
¿Cómo se aplica el filtro Erode?
La erosión reduce el tamaño de las regiones brillantes en las imágenes, afinando los caracteres gruesos o distorsionados y mejorando la separación de caracteres.
¿Por qué la erosión ayuda con el texto grueso?
La erosión adelgaza los trazos del texto y separa los caracteres que se tocan. Este filtro destaca con:
Documentos impresos sobreentintados
Fotocopias con sangrado de caracteres
Texto en negrita que aparece fusionado
Transmisiones de fax de baja calidad
La erosión cuidadosa restaura la separación de caracteres y mejora el reconocimiento de letras individuales, evitando que se lean mal palabras enteras.
Use el método Erode para aplicar este filtro. La morfología por defecto es 2x2; pase 'true' para 3x3:
using IronOcr;// Create OCR instancevar ocrTesseract = new IronTesseract();// Load image with thick textvar imageInput = new OcrImageInput("thick-text.jpg");// Apply erode filterimageInput.Erode();// Stronger erosion for heavily bleeding textimageInput.Erode(true);// Example: Processing a poor-quality photocopyvar photocopyInput = new OcrImageInput("thick-text-photocopy.pdf");// Apply erosion followed by sharpening for best resultsphotocopyInput.Erode() .Sharpen() .EnhanceResolution(300);// Configure OCR for better accuracyocrTesseract.Configuration.BlackListCharacters = "~`@#$%^&*()_+-={}[]|\\:\";<>?,./";ocrTesseract.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ";var ocrResult = ocrTesseract.Read(photocopyInput);// Extract with confidence checkvar highConfidenceText = ocrResult.Blocks .Where(b => b.Confidence > 90) .Select(b => b.Text);
using IronOcr;
// Create OCR instance
var ocrTesseract = new IronTesseract();
// Load image with thick text
var imageInput = new OcrImageInput("thick-text.jpg");
// Apply erode filter
imageInput.Erode();
// Stronger erosion for heavily bleeding text
imageInput.Erode(true);
// Example: Processing a poor-quality photocopy
var photocopyInput = new OcrImageInput("thick-text-photocopy.pdf");
// Apply erosion followed by sharpening for best results
photocopyInput.Erode()
.Sharpen()
.EnhanceResolution(300);
// Configure OCR for better accuracy
ocrTesseract.Configuration.BlackListCharacters = "~`@#$%^&*()_+-={}[]|\\:\";<>?,./";
ocrTesseract.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ";
var ocrResult = ocrTesseract.Read(photocopyInput);
// Extract with confidence check
var highConfidenceText = ocrResult.Blocks
.Where(b => b.Confidence > 90)
.Select(b => b.Text);
ImportsIronOcr' Create OCR instanceDim ocrTesseract As New IronTesseract()' Load image with thick textDim imageInput As New OcrImageInput("thick-text.jpg")' Apply erode filterimageInput.Erode()' Stronger erosion for heavily bleeding textimageInput.Erode(True)' Example: Processing a poor-quality photocopyDim photocopyInput As New OcrImageInput("thick-text-photocopy.pdf")' Apply erosion followed by sharpening for best resultsphotocopyInput.Erode() _ .Sharpen() _ .EnhanceResolution(300)' Configure OCR for better accuracyocrTesseract.Configuration.BlackListCharacters = "~`@#$%^&*()_+-={}[]|\:"";<>?,./"ocrTesseract.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 "Dim ocrResult = ocrTesseract.Read(photocopyInput)' Extract with confidence checkDim highConfidenceText = ocrResult.Blocks _ .Where(Function(b) b.Confidence > 90) _ .Select(Function(b) b.Text)
Imports IronOcr
' Create OCR instance
Dim ocrTesseract As New IronTesseract()
' Load image with thick text
Dim imageInput As New OcrImageInput("thick-text.jpg")
' Apply erode filter
imageInput.Erode()
' Stronger erosion for heavily bleeding text
imageInput.Erode(True)
' Example: Processing a poor-quality photocopy
Dim photocopyInput As New OcrImageInput("thick-text-photocopy.pdf")
' Apply erosion followed by sharpening for best results
photocopyInput.Erode() _
.Sharpen() _
.EnhanceResolution(300)
' Configure OCR for better accuracy
ocrTesseract.Configuration.BlackListCharacters = "~`@#$%^&*()_+-={}[]|\:"";<>?,./"
ocrTesseract.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 "
Dim ocrResult = ocrTesseract.Read(photocopyInput)
' Extract with confidence check
Dim highConfidenceText = ocrResult.Blocks _
.Where(Function(b) b.Confidence > 90) _
.Select(Function(b) b.Text)
¿Cómo equilibrar la erosión con la legibilidad del texto?
Encontrar el nivel de erosión adecuado requiere pruebas minuciosas:
Empezar con morfología 2x2 por defecto
Prueba con muestras representativas de documentos
Compruebe que los signos de puntuación permanezcan visibles
¿Cómo puedo guardar imágenes filtradas como archivos PDF con capacidad de búsqueda?
IronOCR permite guardar PDF modificados con filtros aplicados o en su estado original. El segundo parámetro del método SaveAsSearchablePdf determina si se guarda con filtros.
¿Cuál es la ventaja de conservar los cambios de filtro?
Preservar los cambios de filtro ofrece varias ventajas:
Crea documentos más limpios y legibles
Mantiene la coherencia en todos los lotes de documentos
Proporciona confirmación visual de las mejoras en la calidad del texto
Permite realizar comparaciones de control de calidad
La creación de PDF con capacidad de búsqueda incorpora una capa de texto OCR al tiempo que mantiene el aspecto visual. Más información en nuestra guía sobre creación de PDF con función de búsqueda.
using IronOcr;var ocr = new IronTesseract();var ocrInput = new OcrInput();// Load a PDF fileocrInput.LoadPdf("invoice.pdf");// Apply multiple filters for comprehensive improvementocrInput.ToGrayScale() .DeNoise() .Sharpen() .EnhanceResolution(300);// Perform OCROcrResult result = ocr.Read(ocrInput);// Save the result as a searchable PDF with filters appliedresult.SaveAsSearchablePdf("outputFiltered.pdf", true);// Or save without filters to preserve original appearanceresult.SaveAsSearchablePdf("outputOriginal.pdf", false);// Export to other formatsresult.SaveAsTextFile("extracted-text.txt");result.SaveAsHocrFile("output.html");
using IronOcr;
var ocr = new IronTesseract();
var ocrInput = new OcrInput();
// Load a PDF file
ocrInput.LoadPdf("invoice.pdf");
// Apply multiple filters for comprehensive improvement
ocrInput.ToGrayScale()
.DeNoise()
.Sharpen()
.EnhanceResolution(300);
// Perform OCR
OcrResult result = ocr.Read(ocrInput);
// Save the result as a searchable PDF with filters applied
result.SaveAsSearchablePdf("outputFiltered.pdf", true);
// Or save without filters to preserve original appearance
result.SaveAsSearchablePdf("outputOriginal.pdf", false);
// Export to other formats
result.SaveAsTextFile("extracted-text.txt");
result.SaveAsHocrFile("output.html");
ImportsIronOcrDim ocr As New IronTesseract()Dim ocrInput As New OcrInput()' Load a PDF fileocrInput.LoadPdf("invoice.pdf")' Apply multiple filters for comprehensive improvementocrInput.ToGrayScale() _ .DeNoise() _ .Sharpen() _ .EnhanceResolution(300)' Perform OCRDim result AsOcrResult = ocr.Read(ocrInput)' Save the result as a searchable PDF with filters appliedresult.SaveAsSearchablePdf("outputFiltered.pdf", True)' Or save without filters to preserve original appearanceresult.SaveAsSearchablePdf("outputOriginal.pdf", False)' Export to other formatsresult.SaveAsTextFile("extracted-text.txt")result.SaveAsHocrFile("output.html")
Imports IronOcr
Dim ocr As New IronTesseract()
Dim ocrInput As New OcrInput()
' Load a PDF file
ocrInput.LoadPdf("invoice.pdf")
' Apply multiple filters for comprehensive improvement
ocrInput.ToGrayScale() _
.DeNoise() _
.Sharpen() _
.EnhanceResolution(300)
' Perform OCR
Dim result As OcrResult = ocr.Read(ocrInput)
' Save the result as a searchable PDF with filters applied
result.SaveAsSearchablePdf("outputFiltered.pdf", True)
' Or save without filters to preserve original appearance
result.SaveAsSearchablePdf("outputOriginal.pdf", False)
' Export to other formats
result.SaveAsTextFile("extracted-text.txt")
result.SaveAsHocrFile("output.html")
¿Cómo elegir entre PDF filtrados y originales?
Guardar con filtros (true) cuando:
La calidad del documento original es deficiente
Se necesita un aspecto coherente en todos los documentos
La versión filtrada mejora notablemente la legibilidad
Archivado de documentos a largo plazo
Guardar sin filtros (falso) cuando:
La ley exige que se conserve el aspecto original
La información sobre el color es importante
Debe mantenerse la autenticidad del documento
Sólo se necesitan filtros para la precisión del OCR
¿Qué filtros de imagen pueden mejorar la precisión del OCR en C#?
IronOCR ofrece cinco filtros esenciales para la corrección de imágenes: nitidez, mejora de la resolución, eliminación de ruido, dilatación y erosión. Estos filtros preprocesan las imágenes para mejorar significativamente la precisión del OCR al mejorar la claridad del texto y reducir el ruido antes de la extracción del texto.
¿Cómo puedo mejorar la nitidez de una imagen borrosa para reconocer mejor el texto?
Usted puede afilar una imagen borrosa utilizando IronOCR's OcrImageInput con una sola línea de código: new IronOcr.OcrImageInput("sample.png").Sharpen(). Este filtro aumenta el contraste a lo largo de los bordes de la imagen, creando límites de texto más definidos para mejorar el reconocimiento de caracteres.
¿Por qué la nitidez mejora la precisión del OCR?
El filtro de nitidez de IronOCR enfatiza los límites entre el texto y el fondo mejorando el contraste de los bordes. Esto es crucial porque los algoritmos de reconocimiento de caracteres necesitan formas de letras claras y distintas para funcionar correctamente. El texto borroso con bordes suaves hace que los motores de OCR identifiquen erróneamente los límites de los caracteres.
¿Cuándo debo utilizar el filtro de nitidez para el OCR?
Utilice el filtro de nitidez de IronOCR para imágenes ligeramente desenfocadas, documentos escaneados con bordes de texto suaves o fotografías tomadas con poca luz. Evite dar demasiada nitidez al texto claro, ya que esto introduce artefactos y reduce la precisión.
¿Qué PPP debo tener en cuenta para obtener un rendimiento óptimo del OCR?
IronOCR funciona mejor con imágenes a 300 DPI (puntos por pulgada). Las resoluciones inferiores provocan errores de reconocimiento de caracteres, mientras que las resoluciones superiores ralentizan el procesamiento sin mejorar la precisión. Utilice el filtro de mejora de resolución para aumentar la densidad de píxeles en imágenes de baja resolución.
¿Puedo exportar imágenes filtradas después de aplicar correcciones?
Sí, IronOCR permite exportar imágenes filtradas mediante el método SaveAsImages. Esto le permite ver comparaciones del antes y el después de sus correcciones de imágenes y verificar las mejoras antes de ejecutar el OCR.
¿Cuál es el flujo de trabajo mínimo para aplicar filtros de imagen?
El flujo de trabajo mínimo con IronOCR consta de 5 pasos: descargar la biblioteca, importar el PDF o las imágenes, aplicar los filtros deseados (enfocar, mejorar resolución, denotar, dilatar, erosionar), exportar la imagen corregida para su visualización y utilizar el método Read para el procesamiento OCR.
What parameters should I consider when choosing between filtered and original PDFs?
Choose filtered PDFs when you need consistent appearance, improved readability, or archiving. Opt for original PDFs when preserving original appearance is legally required, or when maintaining color information and document authenticity is important.
What are common signs that my image needs denoising?
Noise indicators include random speckles, salt-and-pepper noise, graininess from high ISO photography, and background texture that interferes with text clarity.
What typical DPI settings are recommended for optimal OCR results?
OCR engines perform best at 300 DPI. Lower resolutions may lead to character misrecognition, while higher resolutions might slow processing without enhancing accuracy. IronOCR's enhancement filter can upscale images to the optimal DPI level.
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 estructurados y visualmente atractivos.