Como usar imagens de entrada para processamento OCR em C#

Como ler imagens em C# com IronOCR

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

IronOCR extrai texto de imagens nos formatos JPG, PNG, GIF, TIFF, e BMP usando tecnologia de reconhecimento óptico de caracteres. A extração básica de texto requer apenas uma linha de código após a instalação do pacote NuGet.

A tecnologia OCR (Reconhecimento Óptico de Caracteres) reconhece e extrai texto de imagens. Ele digitaliza documentos impressos extraindo o conteúdo textual de páginas digitalizadas, fotografias ou outros arquivos de imagem. O IronOCR utiliza algoritmos avançados de aprendizado de máquina do Tesseract 5 , combinados com pré-processamento de imagem proprietário, para oferecer precisão líder no setor.

A biblioteca suporta os formatos jpg, png, gif, tiff, e bmp. Os filtros de imagem melhoram a capacidade de leitura através da correção automática de problemas comuns de qualidade. O IronOCR combina o Tesseract 5 com pré-processamento avançado para fornecer resultados precisos em diferentes qualidades e formatos de imagem, desde digitalizações de alta resolução até imagens compactadas da web.

Início rápido: Leia um arquivo de imagem com o IronOCR

Extraia o texto de uma imagem com uma única linha de código. Este exemplo carrega uma imagem e lê seu texto usando o método Read em IronTesseract. A biblioteca realiza automaticamente o pré-processamento de imagens e a extração de texto.

  1. Instale IronOCR com o Gerenciador de Pacotes NuGet

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

    var result = new IronTesseract().Read(new OcrImageInput("Potter.png"));
  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 faço para ler imagens com o IronOCR?

Comece instanciando a classe IronTesseract. Use a declaração 'using' para criar um objeto OcrImageInput com o caminho do arquivo de imagem. Isso garante o descarte adequado dos recursos. O IronOCR suporta os formatos jpg, png, gif, tiff e bmp. Execute OCR com o método Read. A biblioteca detecta automaticamente o formato da imagem e aplica o pré-processamento apropriado.

Para novos usuários, consulte o guia de instalação para Windows ou explore as opções de pacotes NuGet . Para desenvolvimento multiplataforma, consulte a configuração do Linux ou a instalação do macOS .

Observe
A partir da versão 2025.6:

  • O carregamento de imagens TIFF agora oferece um desempenho consistentemente mais rápido.
  • A leitura de imagens TIFF apresenta melhorias de desempenho que dependem da GPU da máquina. Alguns usuários podem experimentar um aumento de velocidade de até duas vezes, enquanto outros podem observar um desempenho semelhante ao das versões anteriores.
    )}]
/* :path=/static-assets/ocr/content-code-examples/how-to/input-images-read.cs */
using IronOcr;

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

// Add image
using var imageInput = new OcrImageInput("Potter.png");

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

// Display the extracted text
Console.WriteLine(ocrResult.Text);

// Get confidence level
double confidence = ocrResult.Confidence;
Console.WriteLine($"Confidence: {confidence}%");
/* :path=/static-assets/ocr/content-code-examples/how-to/input-images-read.cs */
using IronOcr;

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

// Add image
using var imageInput = new OcrImageInput("Potter.png");

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

// Display the extracted text
Console.WriteLine(ocrResult.Text);

// Get confidence level
double confidence = ocrResult.Confidence;
Console.WriteLine($"Confidence: {confidence}%");
$vbLabelText   $csharpLabel
Demonstração de extração de texto com IronOCR: imagem da página de Harry Potter convertida em texto simples no editor de código.

Visite o artigo Como ler GIFs e TIFFs com vários quadros/páginas para aprender a ler imagens TIFF e GIF. Para várias páginas, consulte o exemplo de processamento TIFF de várias páginas .

Por que o nível de confiança é importante?

O nível de confiança indica a certeza do IronOCR sobre a precisão do texto extraído. Valores acima de 85% geralmente indicam resultados confiáveis. Pontuações mais baixas podem exigir pré-processamento de imagem ou revisão manual. Use índices de confiança para sinalizar automaticamente documentos para verificação humana ou acionar filtros adicionais de otimização de imagem .

Quando devo usar formatos de imagem diferentes?

Os formatos PNG e TIFF oferecem os melhores resultados de OCR devido à compressão sem perdas. Use PNG para documentos de página única e TIFF para digitalizações de várias páginas. O formato JPEG funciona bem para fotografias, mas pode introduzir artefatos de compressão. O formato BMP oferece qualidade sem compressão, mas com tamanhos de arquivo maiores. O formato GIF é adequado para gráficos simples com cores limitadas. Saiba mais sobre otimização específica de formato .

Quais são os erros mais comuns na leitura de imagens?

Erros comuns incluem baixa resolução de imagem (abaixo de 200 DPI), texto distorcido, baixo contraste ou idiomas não suportados. O IronOCR oferece correção automática para muitos problemas, mas problemas graves podem exigir pré-processamento manual. Consulte nosso guia de solução de problemas para obter soluções.

Como posso importar imagens como bytes?

A classe OcrImageInput aceita imagens como caminhos de arquivo, bytes, AnyBitmap, Stream ou objetos de Imagem. AnyBitmap é um objeto bitmap de IronSoftware.Drawing.AnyBitmap. Essa flexibilidade permite uma integração perfeita com diversas fontes de dados, incluindo bancos de dados, APIs da web e armazenamento em nuvem.

Essa flexibilidade é útil ao trabalhar com imagens provenientes de bancos de dados, serviços web ou fluxos de memória. Para processamento avançado de fluxos, consulte OCR com fluxos de entrada . O guia de integração do System.Drawing fornece exemplos adicionais para compatibilidade com código legado.

:path=/static-assets/ocr/content-code-examples/how-to/input-images-import-byte.cs
using IronOcr;
using System.IO;

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

// Read byte from file
byte[] data = File.ReadAllBytes("Potter.tiff");

// Import image byte
using var imageInput = new OcrImageInput(data);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
$vbLabelText   $csharpLabel

Quando devo usar arrays de bytes em vez de caminhos de arquivos?

Os arrays de bytes funcionam melhor quando as imagens vêm de bancos de dados, serviços da web ou fontes criptografadas. Elas oferecem maior segurança, pois os arquivos não precisam de armazenamento temporário em disco. Utilize arrays de bytes para aplicações em nuvem, microsserviços ou no processamento de documentos confidenciais. Os caminhos de arquivo continuam sendo mais eficientes para o processamento em lote local de grandes coleções de imagens.

using IronOcr;
using IronSoftware.Drawing;
using System.IO;

// Method 1: From URL
var imageFromUrl = AnyBitmap.FromUri("https://example.com/document.jpg");
using var urlInput = new OcrImageInput(imageFromUrl);

// Method 2: From Stream
using var fileStream = File.OpenRead("document.png");
using var streamInput = new OcrImageInput(fileStream);

// Method 3: From System.Drawing (with IronSoftware.Drawing)
var bitmap = AnyBitmap.FromFile("scan.bmp");
using var bitmapInput = new OcrImageInput(bitmap);

// Process any of these inputs
IronTesseract ocr = new IronTesseract();
OcrResult result = ocr.Read(bitmapInput);
using IronOcr;
using IronSoftware.Drawing;
using System.IO;

// Method 1: From URL
var imageFromUrl = AnyBitmap.FromUri("https://example.com/document.jpg");
using var urlInput = new OcrImageInput(imageFromUrl);

// Method 2: From Stream
using var fileStream = File.OpenRead("document.png");
using var streamInput = new OcrImageInput(fileStream);

// Method 3: From System.Drawing (with IronSoftware.Drawing)
var bitmap = AnyBitmap.FromFile("scan.bmp");
using var bitmapInput = new OcrImageInput(bitmap);

// Process any of these inputs
IronTesseract ocr = new IronTesseract();
OcrResult result = ocr.Read(bitmapInput);
$vbLabelText   $csharpLabel

Por que o gerenciamento de memória é importante para bytes de imagem?

Imagens grandes consomem muita memória, especialmente ao processar vários documentos simultaneamente. O uso de instruções 'using' garante o descarte adequado de recursos. Para processamento em lote, considere implementar um sistema de filas com um número limitado de operações simultâneas. O guia de multithreading demonstra técnicas eficientes de gerenciamento de memória.

Quais são as implicações de desempenho dos diferentes tipos de entrada?

Os caminhos de arquivo oferecem o desempenho mais rápido para arquivos locais, pois o IronOCR lê os dados diretamente. Os arrays de bytes exigem o carregamento de imagens inteiras na memória, mas oferecem flexibilidade. Os fluxos equilibram o uso de memória e o desempenho lendo os dados de forma incremental. Para obter o melhor desempenho com grandes lotes, consulte nosso guia de ajuste de desempenho .

Como faço para especificar uma região de varredura?

Passe um CropRectangle ao instanciar OcrImageInput para especificar qual região da imagem processar. Limitar a área de varredura melhora significativamente o desempenho. O exemplo abaixo exibe apenas o número e o título do capítulo. Essa técnica reduz o tempo de processamento em até 90% ao direcionar áreas específicas do documento.

Para layouts complexos ou múltiplas regiões, consulte Região OCR de uma imagem . O guia de áreas de conteúdo explica técnicas avançadas de seleção de regiões.

:path=/static-assets/ocr/content-code-examples/how-to/input-images-read-specific-region.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

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

// Specify crop region
Rectangle scanRegion = new Rectangle(800, 200, 900, 400);

// Add image
using var imageInput = new OcrImageInput("Potter.tiff", ContentArea: scanRegion);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

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

Por que especificar regiões melhora o desempenho?

Processar apenas as áreas relevantes da imagem reduz a sobrecarga computacional em 60 a 90%. Os mecanismos de OCR analisam cada pixel na área de entrada, portanto, regiões menores significam processamento mais rápido. Essa abordagem também melhora a precisão, eliminando possíveis interferências de cabeçalhos, rodapés ou elementos decorativos fora da área de texto alvo.

Demonstração da região de digitalização OCR com retângulos vermelhos destacando o título do Capítulo Oito, tanto na imagem original quanto na saída de depuração.

Quando devo usar várias regiões de varredura?

Utilize várias regiões para documentos com áreas de texto distintas, como formulários, faturas ou layouts com várias colunas. Processe cada região separadamente para manter o fluxo lógico do texto. Essa abordagem funciona bem para extrair dados de tabelas ou ler campos específicos de documentos estruturados.

Quais são as convenções do sistema de coordenadas?

O IronOCR usa coordenadas de pixel padrão com origem (0,0) no canto superior esquerdo. X aumenta para a direita, Y aumenta para baixo. Os parâmetros do retângulo são (X, Y, Largura, Altura). Para selecionar regiões com precisão, utilize ferramentas de edição de imagem para identificar as coordenadas dos pixels ou implemente um seletor visual de regiões em sua aplicação.

Como posso aplicar o processamento avançado de imagens?

O IronOCR oferece recursos abrangentes de pré-processamento de imagens para melhorar a precisão do OCR. Aplique filtros ao lidar com imagens de baixa qualidade, documentos digitalizados ou condições desafiadoras. O Assistente de Filtros ajuda a determinar as combinações de filtros ideais para suas imagens específicas.

using IronOcr;

IronTesseract ocr = new IronTesseract();

using var input = new OcrImageInput("low-quality-scan.jpg");

// Apply image enhancement filters
input.Deskew();  // Correct image rotation
input.DeNoise(); // Remove background noise
input.Binarize(); // Convert to black and white
input.EnhanceResolution(300); // Adjust DPI for better accuracy

// Configure for better accuracy
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
ocr.Configuration.Language = OcrLanguage.English;

OcrResult result = ocr.Read(input);
using IronOcr;

IronTesseract ocr = new IronTesseract();

using var input = new OcrImageInput("low-quality-scan.jpg");

// Apply image enhancement filters
input.Deskew();  // Correct image rotation
input.DeNoise(); // Remove background noise
input.Binarize(); // Convert to black and white
input.EnhanceResolution(300); // Adjust DPI for better accuracy

// Configure for better accuracy
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
ocr.Configuration.Language = OcrLanguage.English;

OcrResult result = ocr.Read(input);
$vbLabelText   $csharpLabel

Aprenda sobre filtros de otimização de imagem e como corrigir digitalizações de baixa qualidade . Para correções de cor, consulte o guia de correção de cores de imagem .

Quando devo aplicar filtros de pré-processamento de imagem?

Aplique filtros ao lidar com documentos digitalizados, fotografias de texto ou imagens com problemas de qualidade. Os cenários mais comuns incluem corrigir páginas desalinhadas, remover ruído de fundo de fotocópias ou melhorar a qualidade de textos desbotados. O guia de configurações de DPI ajuda a otimizar problemas relacionados à resolução.

Por que a ordem dos filtros é importante?

A sequência de filtros impacta significativamente os resultados. Aplique primeiro a correção de rotação (Deskew), seguida pela remoção de ruído e, em seguida, o aumento de contraste. A binarização geralmente deve ser feita por último. A ordem incorreta pode amplificar os problemas – por exemplo, aplicar nitidez antes da redução de ruído aumenta a visibilidade do ruído. Teste diferentes sequências para obter resultados ótimos.

Quais são os erros comuns de pré-processamento?

O processamento excessivo é o erro mais comum. O excesso de nitidez cria artefatos, a redução agressiva de ruído remove detalhes finos do texto e limites de binarização inadequados causam perda de informações. Comece com o mínimo de pré-processamento e adicione filtros somente quando necessário. O guia de correção da qualidade da imagem fornece as melhores práticas detalhadas.

Como posso otimizar o desempenho?

Considere estas otimizações ao processar várias imagens ou grandes lotes:

  1. Reutilize a Instância IronTesseract: Crie uma instância para múltiplas operações
  2. Especificar regiões de digitalização : Limitar o OCR às áreas relevantes da imagem para obter ganhos de 60 a 90%.
  3. Utilize formatos de imagem apropriados : PNG e TIFF oferecem melhores resultados do que JPEG.
  4. Aplique o pré-processamento seletivamente : use filtros somente quando necessário.
  5. Implementar Processamento Paralelo : Utilizar CPUs multi-core para operações em lote.

Para cenários de alto desempenho, consulte o guia de multithreading e a configuração rápida de OCR . O recurso de acompanhamento do progresso ajuda a monitorar operações de longa duração.

Por que a reutilização de instâncias melhora o desempenho?

A inicialização IronTesseract carrega dados de idioma e configura o motor OCR, levando 200-500ms. Reutilizar instâncias elimina essa sobrecarga para operações subsequentes. Crie uma instância única para aplicações web ou uma instância compartilhada para processamento em lote para maximizar a eficiência.

Quando devo usar o processamento paralelo?

O processamento paralelo beneficia cenários com múltiplas imagens independentes. Processe diferentes páginas ou documentos simultaneamente, mas evite paralelizar operações na mesma imagem. As CPUs modernas lidam com 4 a 8 operações OCR simultâneas de forma eficaz. Monitore o uso de memória, pois cada operação requer de 100 a 500 MB, dependendo do tamanho da imagem.

Quais são as considerações relativas ao uso de memória?

As operações de OCR normalmente exigem de 10 a 20 vezes o tamanho do arquivo de imagem na memória RAM. Uma imagem de 5 MB pode utilizar de 50 a 100 MB durante o processamento. Para lotes grandes, implemente um padrão produtor-consumidor com operações simultâneas limitadas. O exemplo de token de aborto demonstra o cancelamento de operações que consomem muita memória.

Quais são os próximos passos?

Extraia texto de cenários mais complexos com estes recursos:

Perguntas frequentes

Quais formatos de imagem podem ser lidos para extração de texto em C#?

O IronOCR suporta a leitura de texto em formatos de imagem JPG, PNG, GIF, TIFF e BMP. A biblioteca detecta automaticamente o formato da imagem e aplica o pré-processamento adequado para obter resultados de extração de texto otimizados.

Como posso extrair texto de um arquivo de imagem com apenas uma linha de código?

Você pode extrair texto com uma única linha usando o IronOCR: `var result = new IronTesseract().Read(new OcrImageInput("image.png"));`. Isso lida automaticamente com o pré-processamento da imagem e a extração de texto usando a tecnologia OCR do Tesseract 5.

Qual tecnologia OCR é usada para ler imagens?

O IronOCR combina os algoritmos avançados de aprendizado de máquina do Tesseract 5 com o pré-processamento de imagens proprietário. Essa combinação oferece precisão líder do setor em diferentes qualidades e formatos de imagem, desde digitalizações de alta resolução até imagens compactadas da web.

Como gerenciar corretamente os recursos ao ler imagens?

Use a instrução 'using' ao criar um objeto OcrImageInput para garantir o descarte adequado de recursos. Esse padrão gerencia automaticamente a memória e os descritores de arquivo: `using var ocrInput = new OcrImageInput("image.jpg");`

Posso ler regiões específicas de uma imagem em vez do arquivo inteiro?

Sim, o IronOCR permite especificar regiões de recorte para definir áreas de leitura específicas dentro de uma imagem. Esse recurso ajuda a concentrar o processamento de OCR em partes relevantes da imagem para melhor desempenho e precisão.

Que tipo de pré-processamento é aplicado automaticamente às imagens?

O IronOCR aplica automaticamente filtros de imagem que melhoram a capacidade de leitura, corrigindo problemas comuns de qualidade. A biblioteca realiza a detecção de formato e o pré-processamento sem exigir configuração manual para casos de uso básicos.

Existem melhorias de desempenho para o processamento de imagens TIFF?

A partir da versão 2025.6 do IronOCR, o carregamento de imagens TIFF oferece um desempenho consistentemente mais rápido. A leitura de imagens TIFF apresenta melhorias que dependem da GPU da máquina, com alguns usuários experimentando até o dobro da velocidade em comparação com as versões anteriores.

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.