Resaltar textos como imágenes en C# con IronOCR

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

El método HighlightTextAndSaveAsImages de IronOCR visualiza los resultados del OCR dibujando cuadros delimitadores alrededor del texto detectado (caracteres, palabras, líneas o párrafos) y los guarda como imágenes de diagnóstico, lo que permite a los desarrolladores validar la precisión del OCR y depurar los problemas de reconocimiento.

La visualización de los resultados del OCR implica la representación de cuadros delimitadores alrededor de los elementos de texto específicos que el motor ha detectado en una imagen. Este proceso superpone distintos resaltes en las ubicaciones exactas de caracteres individuales, palabras, líneas o párrafos, proporcionando un mapa claro del contenido reconocido.

Esta información visual es crucial para depurar y validar la precisión de los resultados del OCR, mostrando lo que el software ha identificado y dónde ha cometido errores. Al trabajar con documentos complejos o solucionar problemas de reconocimiento, el resaltado visual se convierte en una herramienta de diagnóstico esencial.

Este artículo demuestra las capacidades de diagnóstico de IronOCR con su método HighlightTextAndSaveAsImages. Esta función resalta secciones específicas del texto y las guarda como imágenes para su verificación. Ya sea para crear un sistema de procesamiento de documentos, aplicar medidas de control de calidad o validar su implementación de OCR, esta función proporciona información visual inmediata sobre lo que detecta el motor de OCR.

como-encabezado:2(Guía Rápida: Destacar Palabras en Tu PDF al Instante)

Este fragmento muestra el uso de IronOCR: carga un PDF y resalta cada palabra del documento, guardando el resultado como imágenes. Una sola línea para obtener información visual sobre los resultados del OCR.

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.

    new IronOcr.OcrInput().LoadPdf("document.pdf").HighlightTextAndSaveAsImages(new IronOcr.IronTesseract(), "highlight_page_", IronOcr.ResultHighlightType.Word);
  3. Despliegue para probar en su entorno real

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

¿Cómo resaltar texto y guardar como imágenes?

<Descripción: Captura de pantalla que muestra el proceso paso a paso -->

Resaltar texto y guardarlo como imágenes es muy sencillo con IronOCR. Cargue un PDF existente con LoadPdf y, a continuación, llame al método HighlightTextAndSaveAsImages para resaltar secciones de texto y guardarlas como imágenes. Esta técnica verifica la precisión del OCR y depura los problemas de reconocimiento de texto en los documentos.

El método toma tres parámetros: el motor IronTesseract OCR, un prefijo para el nombre del archivo de salida y un enum de ResultadoHighlightType que dicta el tipo de texto a resaltar. Este ejemplo utiliza ResultHighlightType.Paragraph para resaltar bloques de texto como párrafos.

Por favor notaEsta función utiliza el prefijo de la cadena de salida y añade un identificador de página (por ejemplo, "page_0", "page_1") al nombre del archivo de imagen de salida para cada página.

Este ejemplo utiliza un PDF con tres párrafos.

¿Qué aspecto tiene el PDF de entrada?

¿Cómo implementar el código de resaltado?

El siguiente código de ejemplo muestra la implementación básica utilizando la clase OcrInput.

:path=/static-assets/ocr/content-code-examples/how-to/highlight-texts-as-images.cs
using IronOcr;

IronTesseract ocrTesseract = new IronTesseract();

using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_page_", ResultHighlightType.Paragraph);
Imports IronOcr

Private ocrTesseract As New IronTesseract()

Private ocrInput = New OcrInput()
ocrInput.LoadPdf("document.pdf")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_page_", ResultHighlightType.Paragraph)
$vbLabelText   $csharpLabel

¿Qué muestran las imágenes de salida?

Página web con tres párrafos, el párrafo central resaltado con un borde rojo que muestra la capacidad de selección de texto

Como se muestra en la imagen anterior, los tres párrafos se han resaltado con un recuadro rojo claro. Esta representación visual ayuda a los desarrolladores a identificar rápidamente cómo el motor de OCR segmenta el documento en bloques legibles.

¿Cuáles son las diferentes opciones de ResultHighlightType?

En el ejemplo anterior se utilizó ResultHighlightType.Paragraph para resaltar bloques de texto. IronOCR proporciona opciones adicionales de resaltado a través de este enumerado. A continuación figura una lista completa de los tipos disponibles, cada uno de los cuales sirve para fines de diagnóstico diferentes.

Caracter: Dibuja un cuadro delimitador alrededor de cada carácter detectado por el motor de OCR. Resulta útil para depurar el reconocimiento de caracteres o las fuentes especializadas, sobre todo cuando se trabaja con archivos de idioma personalizados.

Palabra: Resalta cada palabra completa identificada por el motor. Ideal para validar los límites de las palabras y su correcta identificación, especialmente al implementar lectura de códigos de barras y QR junto con el reconocimiento de texto.

Línea: Resalta cada línea de texto detectada. Resulta útil para documentos con diseños complejos que requieren verificación de identificación de líneas, como cuando se procesan documentos escaneados.

Párrafo: Resalta bloques de texto enteros agrupados como párrafos. Perfecto para comprender el diseño del documento y verificar la segmentación de los bloques de texto, especialmente útil cuando se trabaja con extracción de tablas.

¿Cómo se comparan los distintos tipos de resaltado?

Este completo ejemplo muestra la generación de textos destacados para los distintos tipos en el mismo documento, lo que permite comparar los resultados:

using IronOcr;
using System;

// Initialize the OCR engine with custom configuration
IronTesseract ocrTesseract = new IronTesseract();

// Configure for better accuracy if needed
ocrTesseract.Configuration.ReadBarCodes = false; // Disable if not needed for performance
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Load the PDF document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");

// Generate highlights for each type
Console.WriteLine("Generating character-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_character_", ResultHighlightType.Character);

Console.WriteLine("Generating word-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_word_", ResultHighlightType.Word);

Console.WriteLine("Generating line-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_line_", ResultHighlightType.Line);

Console.WriteLine("Generating paragraph-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_paragraph_", ResultHighlightType.Paragraph);

Console.WriteLine("All highlight images have been generated successfully!");
using IronOcr;
using System;

// Initialize the OCR engine with custom configuration
IronTesseract ocrTesseract = new IronTesseract();

// Configure for better accuracy if needed
ocrTesseract.Configuration.ReadBarCodes = false; // Disable if not needed for performance
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Load the PDF document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");

// Generate highlights for each type
Console.WriteLine("Generating character-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_character_", ResultHighlightType.Character);

Console.WriteLine("Generating word-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_word_", ResultHighlightType.Word);

Console.WriteLine("Generating line-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_line_", ResultHighlightType.Line);

Console.WriteLine("Generating paragraph-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_paragraph_", ResultHighlightType.Paragraph);

Console.WriteLine("All highlight images have been generated successfully!");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

¿Cómo manejar documentos de varias páginas?

Al procesar archivos PDF de varias páginas o archivos TIFF de varios marcos, la función de resaltado gestiona automáticamente cada página de forma individual. Esto es especialmente útil cuando se implementan flujos de trabajo de extracción de texto PDF OCR:

using IronOcr;
using System.IO;

IronTesseract ocrTesseract = new IronTesseract();

// Load a multi-page document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("multi-page-document.pdf");

// Create output directory if it doesn't exist
string outputDir = "highlighted_pages";
Directory.CreateDirectory(outputDir);

// Generate highlights for each page
// Files will be named: highlighted_pages/page_0.png, page_1.png, etc.
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, 
    Path.Combine(outputDir, "page_"), 
    ResultHighlightType.Word);

// Count generated files for verification
int pageCount = Directory.GetFiles(outputDir, "page_*.png").Length;
Console.WriteLine($"Generated {pageCount} highlighted page images");
using IronOcr;
using System.IO;

IronTesseract ocrTesseract = new IronTesseract();

// Load a multi-page document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("multi-page-document.pdf");

// Create output directory if it doesn't exist
string outputDir = "highlighted_pages";
Directory.CreateDirectory(outputDir);

// Generate highlights for each page
// Files will be named: highlighted_pages/page_0.png, page_1.png, etc.
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, 
    Path.Combine(outputDir, "page_"), 
    ResultHighlightType.Word);

// Count generated files for verification
int pageCount = Directory.GetFiles(outputDir, "page_*.png").Length;
Console.WriteLine($"Generated {pageCount} highlighted page images");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

¿Cuáles son las mejores prácticas de rendimiento?

Cuando utilices la función de resaltado, ten en cuenta estas prácticas recomendadas:

  1. Tamaño del archivo: Las imágenes destacadas pueden ser de gran tamaño, especialmente en el caso de documentos de alta resolución. Tenga en cuenta el espacio disponible en el directorio de salida cuando procese grandes lotes. Para obtener consejos de optimización, consulte nuestra guía de configuración de OCR rápido.

  2. Rendimiento: La generación de resaltados añade sobrecarga de procesamiento. Para los sistemas de producción en los que los resaltados solo se necesitan ocasionalmente, impleméntelos como un proceso de diagnóstico independiente en lugar de como parte del flujo de trabajo principal. Considere el uso de OCR multihilo para el procesamiento por lotes.

  3. Manejo de errores: Implementa siempre un manejo de errores adecuado cuando trabajes con operaciones de archivos:
try
{
    using var ocrInput = new OcrInput();
    ocrInput.LoadPdf("document.pdf");

    // Apply image filters if needed for better recognition
    ocrInput.Deskew(); // Correct slight rotations
    ocrInput.DeNoise(); // Remove background noise

    ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_", ResultHighlightType.Word);
}
catch (Exception ex)
{
    Console.WriteLine($"Error during highlighting: {ex.Message}");
    // Log error details for debugging
}
try
{
    using var ocrInput = new OcrInput();
    ocrInput.LoadPdf("document.pdf");

    // Apply image filters if needed for better recognition
    ocrInput.Deskew(); // Correct slight rotations
    ocrInput.DeNoise(); // Remove background noise

    ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_", ResultHighlightType.Word);
}
catch (Exception ex)
{
    Console.WriteLine($"Error during highlighting: {ex.Message}");
    // Log error details for debugging
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

¿Cómo se integra el resaltado con los resultados del OCR?

La función de resaltado funciona a la perfección con objetos de resultado de IronOcr, lo que permite correlacionar los resaltes visuales con los datos de texto extraídos. Esto es especialmente útil cuando se necesita hacer un seguimiento del progreso del OCR o validar secciones específicas del texto reconocido. La clase OcrResult proporciona información detallada sobre cada elemento detectado, que se corresponde directamente con los resaltados visuales generados por este método.

¿Y si surgen problemas?

Si experimenta problemas con la función de resaltado, consulte la guía general de solución de problemas para encontrar soluciones comunes. Para problemas específicos relacionados con el resaltado:

  • Imágenes de salida en blanco: Asegúrese de que el documento de entrada contiene texto legible y de que el motor de OCR está correctamente configurado para su tipo de documento. Puede que sea necesario aplicar filtros de optimización de imagen o fijar la orientación de la imagen para mejorar el reconocimiento.
  • Lo más destacado: Algunos tipos de documentos pueden requerir un preprocesamiento específico. Intenta aplicar filtros de imagen o corregir la orientación de la imagen para mejorar el reconocimiento.
  • Cuestiones de rendimiento: Para documentos de gran tamaño, considere la posibilidad de implementar multithreading para mejorar la velocidad de procesamiento. Además, revisa nuestra guía sobre cómo corregir escaneos de baja calidad si trabajas con entradas de baja calidad.

¿Cómo puedo utilizar esto para la depuración de producción?

La función de resaltado sirve como una excelente herramienta de depuración de la producción. Cuando se integra con tomas de aborto para operaciones de larga duración y tiempos de espera, se puede crear un sistema de diagnóstico robusto. Considere la posibilidad de implementar un modo de depuración en su aplicación:

public class OcrDebugger
{
    private readonly IronTesseract _tesseract;
    private readonly bool _debugMode;

    public OcrDebugger(bool enableDebugMode = false)
    {
        _tesseract = new IronTesseract();
        _debugMode = enableDebugMode;
    }

    public OcrResult ProcessDocument(string filePath)
    {
        using var input = new OcrInput();
        input.LoadPdf(filePath);

        // Apply preprocessing
        input.Deskew();
        input.DeNoise();

        // Generate debug highlights if in debug mode
        if (_debugMode)
        {
            string debugPath = $"debug_{Path.GetFileNameWithoutExtension(filePath)}_";
            input.HighlightTextAndSaveAsImages(_tesseract, debugPath, ResultHighlightType.Word);
        }

        // Perform actual OCR
        return _tesseract.Read(input);
    }
}
public class OcrDebugger
{
    private readonly IronTesseract _tesseract;
    private readonly bool _debugMode;

    public OcrDebugger(bool enableDebugMode = false)
    {
        _tesseract = new IronTesseract();
        _debugMode = enableDebugMode;
    }

    public OcrResult ProcessDocument(string filePath)
    {
        using var input = new OcrInput();
        input.LoadPdf(filePath);

        // Apply preprocessing
        input.Deskew();
        input.DeNoise();

        // Generate debug highlights if in debug mode
        if (_debugMode)
        {
            string debugPath = $"debug_{Path.GetFileNameWithoutExtension(filePath)}_";
            input.HighlightTextAndSaveAsImages(_tesseract, debugPath, ResultHighlightType.Word);
        }

        // Perform actual OCR
        return _tesseract.Read(input);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

¿Dónde debo ir ahora?

<Descripción: Diagrama o captura de pantalla que ilustre el concepto de código -->

Ahora que ya sabes cómo utilizar la función de resaltado, explora:

Para el uso en producción, recuerde obtener una licencia para eliminar las marcas de agua y acceder a la funcionalidad completa.

Preguntas Frecuentes

¿Cómo puedo visualizar los resultados del OCR en mi aplicación de C#?

IronOCR proporciona el método HighlightTextAndSaveAsImages que visualiza los resultados del OCR dibujando cuadros delimitadores alrededor de los elementos de texto detectados (caracteres, palabras, líneas o párrafos) y los guarda como imágenes de diagnóstico. Esta función ayuda a los desarrolladores a validar la precisión del OCR y a depurar problemas de reconocimiento.

¿Cuál es la forma más sencilla de resaltar palabras en un documento PDF?

Con IronOCR, puede resaltar palabras en un PDF con sólo una línea de código: new IronOcr.OcrInput().LoadPdf("document.pdf").HighlightTextAndSaveAsImages(new IronOcr.IronTesseract(), "highlight_page_", IronOcr.ResultHighlightType.Word). Esto carga el PDF y crea imágenes con las palabras resaltadas.

¿Qué parámetros requiere el método HighlightTextAndSaveAsImages?

El método HighlightTextAndSaveAsImages de IronOCR requiere tres parámetros: la instancia del motor de OCR IronTesseract, una cadena de prefijo para el nombre del archivo de salida y un valor enum ResultHighlightType que especifica qué elementos de texto resaltar (carácter, palabra, línea o párrafo).

¿Cómo se nombran las imágenes de salida cuando se utiliza el resaltado de texto?

IronOCR nombra automáticamente las imágenes de salida combinando el prefijo especificado con un identificador de página. Por ejemplo, si utiliza "highlight_page_" como prefijo, el método genera archivos denominados "highlight_page_0", "highlight_page_1", etc., para cada página del documento.

¿Por qué es importante el resaltado visual para el desarrollo de OCR?

El resaltado visual en IronOCR proporciona información de diagnóstico crucial al mostrar exactamente qué texto ha detectado el motor de OCR y dónde se producen los errores potenciales. Este mapa visual ayuda a los desarrolladores a depurar problemas de reconocimiento, validar la precisión del OCR y solucionar problemas en documentos complejos.

¿Puedo resaltar distintos tipos de elementos de texto además de palabras?

Sí, el enum ResultHighlightType de IronOCR le permite resaltar varios elementos de texto incluyendo Caracteres individuales, Palabras, Líneas o Párrafos enteros. Simplemente especifique el tipo deseado cuando llame al método HighlightTextAndSaveAsImages para visualizar diferentes niveles de detección de texto.

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
¿Listo para empezar?
Nuget Descargas 5,246,844 | Versión: 2025.12 recién lanzado