Destacar Resultados de Leitura de Texto como Imagens em C# com IronOCR
O método HighlightTextAndSaveAsImages do IronOCR visualiza os resultados ao converter imagem em texto, 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 da leitura de texto 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.
-
Instale IronOCR com o Gerenciador de Pacotes NuGet
PM > Install-Package IronOcr -
Copie e execute este trecho de código.
new IronOcr.OcrInput().LoadPdf("document.pdf").HighlightTextAndSaveAsImages(new IronOcr.IronTesseract(), "highlight_page_", IronOcr.ResultHighlightType.Word); -
Implante para testar em seu ambiente de produção.
Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita
- Baixe uma biblioteca C# para detectar a rotação de páginas.
- Instanciar mecanismo de OCR
- Carregar o documento PDF com `LoadPdf`
- Usando `HighlightTextAndSaveAsImages` destaque a seção de texto e salve-as como imagens
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);
Imports IronOcr
Private ocrTesseract As New IronTesseract()
Private ocrInput = New OcrInput()
ocrInput.LoadPdf("document.pdf")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_page_", ResultHighlightType.Paragraph)
O que Mostram as Imagens de Saída?
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!");
Imports IronOcr
Imports System
' Initialize the OCR engine with custom configuration
Dim ocrTesseract As 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 ocrInput As 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)
End Using
Console.WriteLine("All highlight images have been generated successfully!")
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");
Imports IronOcr
Imports System.IO
Dim ocrTesseract As New IronTesseract()
' Load a multi-page document
Using ocrInput As New OcrInput()
ocrInput.LoadPdf("multi-page-document.pdf")
' Create output directory if it doesn't exist
Dim outputDir As String = "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
Dim pageCount As Integer = Directory.GetFiles(outputDir, "page_*.png").Length
Console.WriteLine($"Generated {pageCount} highlighted page images")
End Using
Quais são as melhores práticas de desempenho?
Ao usar o recurso de destaque, considere estas melhores práticas:
-
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.
-
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.
- 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
}
Imports System
Try
Using ocrInput As 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)
End Using
Catch ex As Exception
Console.WriteLine($"Error during highlighting: {ex.Message}")
' Log error details for debugging
End Try
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 orientationpara melhorar o reconhecimento. - Destaques ausentes: Alguns tipos de documentos podem exigir pré-processamento específico. Experimente aplicar filtros de imagem ou
fixing image orientationpara melhorar o reconhecimento. - Problemas de desempenho: Para documentos grandes, considere implementar
multithreadingpara 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);
}
}
Imports System.IO
Public Class OcrDebugger
Private ReadOnly _tesseract As IronTesseract
Private ReadOnly _debugMode As Boolean
Public Sub New(Optional enableDebugMode As Boolean = False)
_tesseract = New IronTesseract()
_debugMode = enableDebugMode
End Sub
Public Function ProcessDocument(filePath As String) As OcrResult
Using input As New OcrInput()
input.LoadPdf(filePath)
' Apply preprocessing
input.Deskew()
input.DeNoise()
' Generate debug highlights if in debug mode
If _debugMode Then
Dim debugPath As String = $"debug_{Path.GetFileNameWithoutExtension(filePath)}_"
input.HighlightTextAndSaveAsImages(_tesseract, debugPath, ResultHighlightType.Word)
End If
' Perform actual OCR
Return _tesseract.Read(input)
End Using
End Function
End Class
Para onde devo ir a seguir?
Agora que você entende como usar o recurso de destaque, explore:
- Criar PDFs pesquisáveis a partir de seus resultados de OCR
- Ler tipos de documentos específicos como passaportes ou licenças
- Configurar o IronOCR em seu ambiente de desenvolvimento com nossos guias de introdução
- Implementar suporte a 125 idiomas internacionais para aplicações globais
- Usar o Filter Wizard para otimizar o processamento de imagens
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.

