Destacar Textos como Imagens em C# com IronOCR

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

O método HighlightTextAndSaveAsImages do IronOCR visualiza os resultados do OCR desenhando caixas delimitadoras ao redor do texto detectado (caracteres, palavras, linhas ou parágrafos) e os salva como imagens de diagnóstico, permitindo que os desenvolvedores validem a precisão do OCR e depurem problemas de reconhecimento.

Visualizar resultados de OCR envolve renderizar caixas de delimitação ao redor de elementos específicos de texto que o mecanismo detectou dentro de uma imagem. Esse processo sobrepõe destaques distintos nas localizações exatas de caracteres individuais, palavras, linhas ou parágrafos, fornecendo um mapa claro do conteúdo reconhecido.

Esse feedback visual é crucial para a depuração e validação da precisão do resultado do OCR, mostrando o que o software identificou e onde cometeu erros. Ao trabalhar com documentos complexos ou solucionar problemas de reconhecimento, o destaque visual se torna uma ferramenta de diagnóstico essencial.

Este artigo demonstra as capacidades de diagnóstico do IronOCR com seu método HighlightTextAndSaveAsImages. Esta função destaca seções específicas de texto e as salva como imagens para verificação. Seja construindo um sistema de processamento de documentos, implementando medidas de controle de qualidade ou validando sua implementação de OCR, este recurso fornece feedback visual imediato sobre o que o mecanismo de OCR detecta.

--AH2BG--@@Início Rápido: Destacar Palavras em Seu PDF Instantaneamente@@--AH2EG--@@

Esta amostra demonstra o uso do IronOCR: carregue um PDF e destaque cada palavra no documento, salvando o resultado como imagens. Apenas uma linha para obter feedback visual sobre seus resultados de OCR.

  1. Instale IronOCR com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronOcr
  2. Copie e execute este trecho de código.

    new IronOcr.OcrInput().LoadPdf("document.pdf").HighlightTextAndSaveAsImages(new IronOcr.IronTesseract(), "highlight_page_", IronOcr.ResultHighlightType.Word);
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita

    arrow pointer

Como Destacar Texto e Salvar como Imagens?

Destacar texto e salvá-lo como imagens é simples com o IronOCR. Carregue um PDF existente com LoadPdf e, em seguida, chame o método HighlightTextAndSaveAsImages para destacar seções de texto e salvá-las como imagens. Essa técnica verifica a precisão do OCR e depura questões de reconhecimento de texto em seus documentos.

O método aceita três parâmetros: o motor OCR IronTesseract, um prefixo para o nome do arquivo de saída e um enum de ResultHighlightType que dita o tipo de texto a destacar. Este exemplo usa ResultHighlightType.Paragraph para destacar blocos de texto como parágrafos.

--PS0BG--@@Esta função usa o prefixo da string de saída e adiciona um identificador de página (por exemplo, 'page_0', 'page_1') ao nome do arquivo de imagem de saída para cada página.

Este exemplo usa um PDF com três parágrafos.

Qual é a aparência do PDF de entrada?

Como Implemento o Código de Destaque?

O código de exemplo abaixo demonstra a implementação básica usando a classe 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);
$vbLabelText   $csharpLabel

O que Mostram as Imagens de Saída?

Página da web com três parágrafos, parágrafo do meio destacado com borda vermelha mostrando capacidade de seleção de texto

Conforme mostrado na imagem de saída acima, todos os três parágrafos foram destacados com uma caixa vermelha clara. Esta representação visual ajuda os desenvolvedores a identificar rapidamente como o mecanismo de OCR segmenta o documento em blocos legíveis.

Quais São as Diferentes Opções de ResultHighlightType?

O exemplo acima usou ResultHighlightType.Paragraph para destacar blocos de texto. O IronOCR oferece opções adicionais de destaque através deste enum. Abaixo está uma lista completa dos tipos disponíveis, cada um servindo a diferentes propósitos de diagnóstico.

Caractere: Desenha uma caixa de delimitação ao redor de cada caractere detectado pelo mecanismo de OCR. Útil para depurar reconhecimento de caracteres ou fontes especializadas, particularmente ao trabalhar com arquivos de idioma personalizados.

Palavra: Destaca cada palavra completa identificada pelo mecanismo. Ideal para validar limites de palavras e identificação correta das palavras, especialmente ao implementar leitura de códigos de barras e QR junto com o reconhecimento de texto.

Linha: Destaca cada linha de texto detectada. Útil para documentos com layouts complexos que exigem verificação da identificação de linha, como ao processar documentos escaneados.

Parágrafo: Destaca blocos de texto inteiros agrupados como parágrafos. Perfeito para entender o layout do documento e verificar a segmentação de blocos de texto, particularmente útil ao trabalhar com extração de tabelas.

Como Comparo Diferentes Tipos de Destaque?

Este exemplo abrangente demonstra a geração de destaques para todos os diferentes tipos no mesmo documento, permitindo que você compare os 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!");
$vbLabelText   $csharpLabel

Como Lidio com Documentos de Múltiplas Páginas?

Ao processar PDFs de várias páginas ou arquivos TIFF de múltiplos quadros, o recurso de destaque lida automaticamente com cada página individualmente. Isso é especialmente útil ao implementar fluxos de trabalho de extração 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");
$vbLabelText   $csharpLabel

Quais são as melhores práticas de desempenho?

Ao usar o recurso de destaque, considere estas melhores práticas:

  1. Tamanho do Arquivo: Imagens destacadas podem ser grandes, especialmente para documentos de alta resolução. Considere o espaço disponível no diretório de saída ao processar lotes grandes. Para dicas de otimização, veja nosso guia de configuração rápida de OCR.

  2. Desempenho: Gerar destaques adiciona sobrecarga de processamento. Para sistemas de produção onde os destaques são necessários apenas ocasionalmente, implemente-os como um processo de diagnóstico separado, em vez de parte do fluxo de trabalho principal. Considere usar OCR multithread para processamento em lotes.

  3. Tratamento de Erros: Sempre implemente o tratamento adequado de erros ao trabalhar com operações de arquivos:
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
}
$vbLabelText   $csharpLabel

Como o destaque se integra aos resultados do OCR?

O recurso de destaque funciona perfeitamente com os objetos de resultados do IronOCR, permitindo correlacionar os destaques visuais com os dados de texto extraídos. Isso é particularmente útil quando você precisa track OCR progress ou validar seções específicas de texto reconhecido. A classe OcrResult fornece informações detalhadas sobre cada elemento detectado, o que corresponde diretamente aos destaques visuais gerados por este método.

E se eu encontrar problemas?

Se estiver enfrentando problemas com o recurso de destaque, consulte o guia geral de solução de problemas para soluções comuns. Para problemas específicos relacionados ao destaque:

  • Imagens de saída em branco: Certifique-se de que o documento de entrada contenha texto legível e que o mecanismo OCR esteja configurado corretamente para o tipo de documento. Você pode precisar aplicar filtros de otimização de imagem ou fixing image orientation para melhorar o reconhecimento.
  • Destaques ausentes: Alguns tipos de documentos podem exigir pré-processamento específico. Experimente aplicar filtros de imagem ou fixing image orientation para melhorar o reconhecimento.
  • Problemas de desempenho: Para documentos grandes, considere implementar multithreading para melhorar a velocidade de processamento. Além disso, reveja nosso guia sobre corrigir digitalizações de baixa qualidade se estiver trabalhando com entradas de baixa qualidade.

Como posso usar isso para depuração em produção?

O recurso de destaque serve como uma excelente ferramenta de depuração em produção. Quando integrado com tokens de abortar para operações de longa duração e timeouts, você pode criar um sistema de diagnóstico robusto. Considere implementar um modo de depuração em seu aplicativo:

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

Para onde devo ir a seguir?

Agora que você entende como usar o recurso de destaque, explore:

Para uso em produção, lembre-se de obter uma licença para remover marcas d'água e acessar a funcionalidade completa.

Perguntas frequentes

Como posso visualizar os resultados do OCR no meu aplicativo C#?

O IronOCR oferece o método HighlightTextAndSaveAsImages, que visualiza os resultados do OCR desenhando caixas delimitadoras em torno dos elementos de texto detectados (caracteres, palavras, linhas ou parágrafos) e os salva como imagens de diagnóstico. Esse recurso ajuda os desenvolvedores a validar a precisão do OCR e a depurar problemas de reconhecimento.

Qual é a maneira mais simples de destacar palavras em um documento PDF?

Com o IronOCR, você pode destacar palavras em um PDF com apenas uma linha de código: `new IronOcr.OcrInput().LoadPdf("document.pdf").HighlightTextAndSaveAsImages(new IronOcr.IronTesseract(), "highlight_page_", IronOcr.ResultHighlightType.Word).` Isso carrega o PDF e cria imagens com as palavras destacadas.

Quais parâmetros o método HighlightTextAndSaveAsImages requer?

O método HighlightTextAndSaveAsImages do IronOCR requer três parâmetros: a instância do mecanismo OCR IronTesseract, uma string de prefixo para o nome do arquivo de saída e um valor de enumeração ResultHighlightType que especifica quais elementos de texto devem ser destacados (Caractere, Palavra, Linha ou Parágrafo).

Como as imagens de saída são nomeadas quando se utiliza o realce de texto?

O IronOCR nomeia automaticamente as imagens de saída combinando o prefixo especificado com um identificador de página. Por exemplo, se você usar "highlight_page_" como prefixo, o método gera arquivos chamados "highlight_page_0", "highlight_page_1", etc., para cada página do seu documento.

Por que o destaque visual é importante para o desenvolvimento de OCR?

O destaque visual no IronOCR fornece feedback diagnóstico crucial, mostrando exatamente qual texto o mecanismo de OCR detectou e onde ocorrem possíveis erros. Esse mapa visual ajuda os desenvolvedores a depurar problemas de reconhecimento, validar a precisão do OCR e solucionar problemas em documentos complexos.

Posso destacar diferentes tipos de elementos de texto além de palavras?

Sim, a enumeração `ResultHighlightType` do IronOCR permite destacar vários elementos de texto, incluindo caracteres individuais, palavras, linhas ou parágrafos inteiros. Basta especificar o tipo desejado ao chamar o método `HighlightTextAndSaveAsImages` para visualizar diferentes níveis de detecção de texto.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 5,525,971 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronOcr
executar um exemplo Veja sua imagem se transformar em texto pesquisável.