Como corrigir as cores da imagem para leitura em C# | IronOCR

Como Corrigir Cores de Imagem para Leitura em C#

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

Corrija cores de imagem em C# usando os métodos de binarização, escala de cinza, inversão e substituição de cores do IronOCR para melhorar a legibilidade do texto e a precisão do OCR. Leia cores de texto específicas para extração direcionada.

Início Rápido: Isole Cores de Texto Específicas

Use o método SelectTextColor do IronOCR para focar a OCR em cores de texto específicas—não é necessária manipulação complexa de imagens. Carregue uma imagem, escolha a cor do texto e a tolerância, e extraia apenas esse texto para resultados de OCR precisos.

  1. Instale IronOCR com o Gerenciador de Pacotes NuGet

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

    new IronTesseract().Read(new IronOcr.OcrImageInput("sample.jpg").SelectTextColor(new IronSoftware.Drawing.Color("#DB645C"), 60));
  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 Posso Binarizar uma Imagem para Melhorar o OCR?

A binarização converte imagens em formato de duas cores, tipicamente preto e branco. Isso separa o texto do fundo e reduz o ruído, tornando o texto mais distinto e fácil de ler.

Por Que a Binarização Melhora a Precisão do OCR?

Aplique binarização usando o método Binarize. O OCR funciona melhor com imagens de alto contraste com texto preto em fundos brancos. Este método cria uma distinção clara entre fundo e caracteres.

A binarização é excelente com documentos digitalizados que apresentam iluminação irregular ou ruído de fundo. O algoritmo analisa as imagens e determina os limiares ideais para separar o texto do primeiro plano do fundo. Para técnicas avançadas de pré-processamento, veja o guia de Filtros de Otimização de Imagem de OCR.

Qual É a Implementação de Código para Binarização?

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-binarize-image.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Apply binarize affect
imageInput.Binarize();

// Export the modified image
imageInput.SaveAsImages("binarize.jpg");
$vbLabelText   $csharpLabel

Para processamento em lote, combine binarização com outros filtros. Use o Assistente de Filtros para determinar a melhor combinação de filtros para suas imagens.

Como Posso Exportar e Comparar Resultados?

Exporte imagens modificadas usando o método SaveAsImages. Compare as imagens antes e depois da binarização abaixo.

Sample image with red and black text on blue-gray background showing OCR challenges before binarization
Binarized version showing clear black text on pure white background for optimal OCR processing

Como Posso Converter Imagens para Escala de Cinza para Melhor Leitura?

Converter imagens para escala de cinza reduz a desordem visual e melhora a legibilidade. Isso ajuda quando as cores originais distraem do conteúdo.

Quando Devo Usar Escala de Cinza Em Vez de Outros Métodos?

Aplique escala de cinza usando o método ToGrayScale. O processo faz a média dos valores R, G e B.

A escala de cinza funciona bem com fundos coloridos ou marcas d'água que interferem no reconhecimento de texto. Ao contrário da binarização, a escala de cinza preserva detalhes em imagens com variações sutis. Use-a para fotografias com texto embutido ou layouts complexos. Para digitalizações de baixa qualidade, veja Corrigindo Digitalizações e Imagens de Baixa Qualidade.

Qual é o código simples para conversão em escala de cinza?

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-grayscale-image.cs
// Apply grayscale affect
imageInput.ToGrayScale();
$vbLabelText   $csharpLabel

Para qualidades de imagem variadas, combine escala de cinza com outras etapas de pré-processamento. A documentação da Classe OcrInput explica a encadeação de múltiplos filtros.

Como a escala de cinza se compara ao original?

Sample text with red headers and black body text showing multiple colors before grayscale conversion
Grayscale document with clear text about tech executives, demonstrating improved readability after conversion

Quando devo inverter as cores da imagem?

Inverter cores melhora o contraste. Converter texto branco em fundos pretos para texto preto em fundos brancos melhora a legibilidade.

Como implemento a inversão de cores?

Use o método Invert para inverter as cores. Passe um valor booleano para remover canais de cor e retornar em escala de cinza.

A inversão de cores lida com imagens negativas ou capturas de tela de temas escuros. Aplicativos modernos usam interfaces em modo escuro que desafiam o OCR tradicional. Inverter essas imagens garante o reconhecimento ótimo. Para vários tipos de imagem, veja o guia de Configuração Rápida de OCR.

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-invert-image.cs
// Apply invert affect
imageInput.Invert();
$vbLabelText   $csharpLabel

Para processamento em lote com tipos de documentos mistos, implemente a detecção automática de fundo escuro. Recursos de Visão Computacional no IronOCR identificam quando a inversão é necessária.

Qual é a diferença entre as opções de inversão?

Compare o método Invert com e sem escala de cinza:

Color-inverted document maintaining original color channels with reversed values
Business text with inverted colors showing white text on dark background demonstrating color inversion effect

Como posso substituir cores específicas em uma imagem?

Substitua cores específicas para destacar ou desvalorizar elementos. Use isso para melhorar a proeminência do texto ou corrigir contrastes problemáticos.

Por que a tolerância é importante na substituição de cores?

O método ReplaceColor requer a cor atual, nova cor e valor de tolerância. Maior tolerância lida melhor com imagens borradas.

A tolerância determina quão próximos os pixels devem corresponder à sua cor alvo. Valores baixos (0-50) são adequados para cores uniformes. Valores mais altos (100-200) lidam com texto anti-aliased ou artefatos de compressão. Isso ajuda com documentos digitalizados onde o sangramento de tinta ou textura do papel cria variações.

Como implemento a substituição de cores?

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-replace-color.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
IronSoftware.Drawing.Color currentColor = new IronSoftware.Drawing.Color("#DB645C");
IronSoftware.Drawing.Color newColor = IronSoftware.Drawing.Color.DarkCyan;

// Replace color
imageInput.ReplaceColor(currentColor, newColor, 80);

// Export the modified image
imageInput.SaveAsImages("replaceColor");
$vbLabelText   $csharpLabel

Como lido com cenários avançados de substituição de cores?

Encadeie múltiplas substituições para cenários complexos:

/* :path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-multiple-replacements.cs */
// Replace multiple colors in sequence
using var imageInput = new OcrImageInput("multi-color-document.jpg");

// Replace red text with black
imageInput.ReplaceColor(IronSoftware.Drawing.Color.Red, IronSoftware.Drawing.Color.Black, 70);

// Replace blue headers with dark gray
imageInput.ReplaceColor(IronSoftware.Drawing.Color.Blue, IronSoftware.Drawing.Color.DarkGray, 60);

// Replace light yellow background with white
imageInput.ReplaceColor(new IronSoftware.Drawing.Color("#FFFACD"), IronSoftware.Drawing.Color.White, 40);

// Perform OCR on the cleaned image
var result = ocrTesseract.Read(imageInput);
/* :path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-multiple-replacements.cs */
// Replace multiple colors in sequence
using var imageInput = new OcrImageInput("multi-color-document.jpg");

// Replace red text with black
imageInput.ReplaceColor(IronSoftware.Drawing.Color.Red, IronSoftware.Drawing.Color.Black, 70);

// Replace blue headers with dark gray
imageInput.ReplaceColor(IronSoftware.Drawing.Color.Blue, IronSoftware.Drawing.Color.DarkGray, 60);

// Replace light yellow background with white
imageInput.ReplaceColor(new IronSoftware.Drawing.Color("#FFFACD"), IronSoftware.Drawing.Color.White, 40);

// Perform OCR on the cleaned image
var result = ocrTesseract.Read(imageInput);
$vbLabelText   $csharpLabel

Para substituições de cores complexas, veja Filtros de Correção de Imagem para técnicas de pré-processamento adicionais.

Quais são os resultados visuais da substituição de cores?

Text sample with orange-red colored names and content on blue background showing original colors before replacement
Document after color replacement showing dark cyan headers replacing original orange-red text

Como leio apenas cores de texto específicas?

Leia cores de texto específicas usando o método SelectTextColor. Especifique a cor alvo e a tolerância (0-255). A tolerância representa as diferenças permitidas entre o pixel e a cor selecionada para valores R, G e B.

Como a tolerância de cor afeta os resultados?

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-select-text-color.cs
using IronOcr;
using System;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Text color to focus on
IronSoftware.Drawing.Color focusColor = new IronSoftware.Drawing.Color("#DB645C");

// Specify which text color to read
imageInput.SelectTextColor(focusColor, 60);

// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Output result to console
Console.WriteLine(ocrResult.Text);
$vbLabelText   $csharpLabel

Use a leitura seletiva de cor para formulários com seções codificadas por cores, extraindo texto destacado ou lendo mensagens de aviso específicas. Para extração de dados estruturados, veja Classe OcrResult para processamento avançado.

Qual saída posso esperar da seleção de cores?

O resultado do OCR lê apenas texto em cor laranja:

Console de depuração mostrando texto laranja extraído pelo OCR: MASAYOSHI SON e YASUMITSU SHIGETA de documento empresarial

Como salvo PDFs modificados com filtros aplicados?

IronOCR salva PDFs modificados com ou sem filtros. O segundo parâmetro do método SaveAsSearchablePdf especifica se deve salvar com os filtros aplicados.

Qual é a implementação para PDFs pesquisáveis?

:path=/static-assets/ocr/content-code-examples/how-to/image-quality-correction-searchable-pdf.cs
using IronOcr;

var ocr = new IronTesseract();
var ocrInput = new OcrInput();

// Load a PDF file
ocrInput.LoadPdf("invoice.pdf");

// Apply gray scale filter
ocrInput.ToGrayScale();
OcrResult result = ocr.Read(ocrInput);

// Save the result as a searchable PDF with filters applied
result.SaveAsSearchablePdf("outputGrayscale.pdf", true);
$vbLabelText   $csharpLabel

Quando devo aplicar filtros ao PDF salvo?

Aplique filtros ao criar documentos mais limpos e legíveis. Isso ajuda para fins de arquivamento ou compartilhamento de documentos em diferentes dispositivos. Veja Criar PDFs Pesquisa por OCR para mais informações.

Para documentos complexos com tabelas, explore Ler Tabela no Documento para extração especializada. Para processamento de alto volume, veja OCR Tesseract Multithreading para otimizar a aplicação do filtro em vários documentos.

Perguntas frequentes

Como posso corrigir cores de imagem ruins que afetam a precisão do OCR?

O IronOCR oferece diversos métodos de correção de cores, incluindo binarização, conversão para tons de cinza, inversão e substituição de cores. Esses filtros ajudam a melhorar a legibilidade do texto, aumentando o contraste entre o texto e o fundo, facilitando a extração precisa do texto em imagens com baixa qualidade de cor pelo mecanismo de OCR.

O que é binarização e quando devo usá-la para OCR?

A binarização converte imagens para um formato de duas cores (normalmente preto e branco) usando o método Binarize do IronOCR. É particularmente eficaz para documentos digitalizados com iluminação irregular ou ruído de fundo, pois cria uma distinção clara entre texto e fundo, analisando a imagem e determinando os limites ideais para a separação.

Como faço para extrair apenas um texto de cor específica de uma imagem?

O método SelectTextColor do IronOCR permite que você concentre o OCR em cores de texto específicas sem manipulação complexa de imagens. Basta especificar a cor de destino e o nível de tolerância - por exemplo, SelectTextColor(new IronSoftware.Drawing.Color("#DB645C"), 60) - para extrair apenas o texto nessa faixa de cores.

Quando devo converter imagens para escala de cinza em vez de usar a binarização?

Use o método ToGrayScale do IronOCR ao lidar com fundos coloridos ou marcas d'água que interferem no reconhecimento de texto. Ao contrário da binarização, a escala de cinza preserva detalhes em imagens com variações sutis, sendo ideal quando você precisa manter a qualidade da imagem e, ao mesmo tempo, reduzir a poluição visual.

Posso exportar as imagens corrigidas para visualizar os resultados dos filtros de cor?

Sim, o IronOCR oferece o método SaveAsImages para exportar imagens modificadas após a aplicação de correções de cor. Isso permite comparar os resultados antes e depois, ajudando você a determinar quais métodos de correção de cor funcionam melhor para suas imagens específicas.

Como posso determinar o melhor filtro de correção de cores para minhas imagens?

O IronOCR inclui uma ferramenta Assistente de Filtros que ajuda a determinar a combinação ideal de filtros para suas imagens. Para processamento em lote, você pode combinar vários filtros, como binarização, com outras técnicas de pré-processamento para obter os melhores resultados de OCR para o seu tipo de documento.

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
Analisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente de Programa Principal - Equipe da Comunidade .NET
Jeff também é Gerente de Programa Principal das equipes do .NET e do Visual Studio. Ele é o produtor executivo da série de conferências virtuais .NET Conf e apresenta o "Fritz and Friends", uma transmissão ao vivo para desenvolvedores que vai ao ar duas vezes por semana, onde ele conversa sobre tecnologia e escreve código junto com os espectadores. Jeff cria workshops, apresentações e planeja conteúdo para os maiores eventos de desenvolvedores da Microsoft, incluindo o Microsoft Build, o Microsoft Ignite, a .NET Conf e o Microsoft MVP Summit.
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.