Ir para o conteúdo do rodapé
UTILIZANDO O IRONOCR

Como implementar OCR em projetos C# do GitHub com IronOCR

Procurar soluções OCR no GitHub muitas vezes resulta em documentação fragmentada, configurações complexas do Tesseract e projetos que não foram atualizados há anos. Para desenvolvedores C# que precisam de extração de texto confiável de imagens e PDFs, navegar no ecossistema de repositórios pode consumir horas que seriam melhor gastas codificando. Muitos projetos de reconhecimento óptico de caracteres de código aberto exigem gerenciamento manual de binários, download de arquivos tessdata e solução de problemas específica de plataforma.

Este tutorial demonstra como implementar funcionalidade OCR em projetos C# usando IronOCR, uma biblioteca gerenciada que elimina a sobrecarga de configuração comum com envoltórios Tesseract em bruto. Quer você esteja construindo pipelines de processamento de documentos ou adicionando reconhecimento de texto a aplicativos existentes, este guia fornece exemplos de código funcionais prontos para qualquer projeto OCR C# do GitHub.

Como começar com IronOCR?

O IronOCR fornece uma biblioteca .NET gerenciada distribuída via NuGet, tornando a integração simples em qualquer repositório GitHub. Ao contrário dos envoltórios OCR Tesseract de código aberto que exigem gerenciamento manual de binários e configuração tessdata, o IronOCR lida com essas dependências internamente e funciona imediatamente no Windows, Linux e macOS.

A biblioteca mantém repositórios de exemplos oficiais no GitHub que os desenvolvedores podem clonar e usar como referência. Esses exemplos demonstram implementações do mundo real, incluindo conversão de imagem para texto, suporte para múltiplos idiomas e processamento de PDF. Os colaboradores podem testar recursos imediatamente após o clone sem qualquer configuração adicional.

Para começar no Visual Studio, instale o IronOCR por meio do Gerenciador de Pacotes NuGet:

Install-Package IronOcr
Install-Package IronOcr
SHELL

OCR C# GitHub: Implementar Reconhecimento de Texto com IronOCR: Imagem 1 - Instalação

Uma vez instalado, este pacote único inclui tudo o que é necessário para operações de OCR. A biblioteca suporta .NET Framework 4.6.2+, .NET Core, e .NET 5 a 10 para máxima compatibilidade entre tipos de projetos.

Como extrair texto de formatos de imagem em C#?

O exemplo a seguir demonstra a extração básica de texto usando a classe IronTesseract do IronOCR. Este motor OCR lê vários formatos de imagem, incluindo PNG, JPG, JPEG, BMP, GIF e TIFF:

using IronOcr;

// Initialize the OCR engine
var ocr = new IronTesseract();

// Load and process an image
using var input = new OcrInput("document-scan.png");

// Perform OCR and retrieve results
var result = ocr.Read(input);

// Output the extracted text to console
Console.WriteLine($"Extracted Text:\n{result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;

// Initialize the OCR engine
var ocr = new IronTesseract();

// Load and process an image
using var input = new OcrInput("document-scan.png");

// Perform OCR and retrieve results
var result = ocr.Read(input);

// Output the extracted text to console
Console.WriteLine($"Extracted Text:\n{result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
$vbLabelText   $csharpLabel

A classe IronTesseract serve como o motor OCR primário, baseada numa implementação otimizada do Tesseract 5. Depois de criar uma instância, o objeto OcrInput carrega a imagem alvo do disco, de uma URL ou de um array de bytes. O método Read processa a entrada e retorna um OcrResult contendo o texto extraído e uma porcentagem de confiança que indica a precisão do reconhecimento. Valores de confiança mais altos (acima de 90%) normalmente indicam documentos-fonte limpos e bem formatados.

O objeto OcrResult fornece acesso estruturado ao conteúdo reconhecido. Além do texto simples, os desenvolvedores podem acessar palavras, linhas, parágrafos e caracteres individuais, junto com suas posições e pontuações de confiança. Cada Word inclui coordenadas de retângulo delimitador, tornando-o valioso para aplicações que requerem dados precisos de localização de texto, como anotação de documentos ou extração de campos de formulário.

Entrada

OCR C# GitHub: Implementar Reconhecimento de Texto com IronOCR: Imagem 2 - Entrada Exemplo

Saída

OCR C# GitHub: Implementar Reconhecimento de Texto com IronOCR: Imagem 3 - Saída do Console

IronOCR também suporta o carregamento de imagens de streams e arrays de bytes, o que é particularmente útil em aplicativos web que recebem uploads de arquivos. Isso significa que o processamento OCR pode ocorrer inteiramente na memória sem escrever arquivos temporários no disco, reduzindo a sobrecarga de entrada e saída em ambientes de alta taxa de transferência.

OCR C# GitHub: Implementar Reconhecimento de Texto com IronOCR: Imagem 4 - Funcionalidades

Como o pré-processamento de imagens melhora a precisão do reconhecimento óptico de caracteres?

Documentos digitalizados frequentemente chegam enviesados, com ruído ou em resoluções subótimas. O IronOCR inclui filtros de pré-processamento embutidos que corrigem esses problemas antes que o motor OCR processe a imagem:

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput("skewed-receipt.jpg");

// Apply preprocessing filters to enhance scan quality
input.Deskew();                    // Straighten rotated images
input.DeNoise();                   // Remove digital artifacts
input.EnhanceResolution(225);      // Optimize DPI for OCR

var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput("skewed-receipt.jpg");

// Apply preprocessing filters to enhance scan quality
input.Deskew();                    // Straighten rotated images
input.DeNoise();                   // Remove digital artifacts
input.EnhanceResolution(225);      // Optimize DPI for OCR

var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

O método Deskew detecta e corrige automaticamente a rotação da imagem até 15 graus, lidando com o caso comum de páginas ligeiramente desalinhadas em um scanner. O filtro DeNoise remove manchas e artefatos comuns em documentos fotografados ou digitalizações mais antigas. EnhanceResolution aumenta a resolução de imagens de baixa DPI para a faixa de 200-300 DPI, ideal para a precisão do reconhecimento óptico de caracteres.

Esses filtros podem ser encadeados e executados inteiramente na memória sem exigir arquivos temporários. Em muitos casos, aplicar várias passagens de pré-processamento pode substancialmente melhorar os resultados de reconhecimento de texto em documentos com problemas sérios de qualidade, como tinta desbotada, ruído de fundo ou distorção de câmera. A melhoria é mais perceptível em documentos digitalizados abaixo de 150 DPI ou fotografias tiradas sob condições de iluminação desigual.

Como o corte da região de interesse auxilia o desempenho?

Para documentos onde apenas uma parte da imagem contém texto relevante, definir uma região de corte reduz tanto o tempo de processamento quanto potenciais falsos positivos do ruído de fundo:

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput("invoice.png");

// Define crop region (x, y, width, height in pixels)
var cropArea = new CropRectangle(50, 100, 600, 300);
input.AddRegion(cropArea);

var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput("invoice.png");

// Define crop region (x, y, width, height in pixels)
var cropArea = new CropRectangle(50, 100, 600, 300);
input.AddRegion(cropArea);

var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Direcionar uma região específica é particularmente valioso ao processar documentos estruturados como faturas ou formulários, onde os campos de texto ocupam posições conhecidas. Essa abordagem pode reduzir o tempo de processamento OCR em 40-70% em comparação com a análise de imagem completa, dependendo de quanto da imagem é irrelevante.

É possível extrair códigos de barras e códigos QR junto com o texto?

IronOCR pode reconhecer texto e escanear códigos de barras simultaneamente dentro do mesmo documento. Essa funcionalidade dupla é valiosa para processar faturas, etiquetas de envio e documentos de inventário:

using IronOcr;

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;  // Enable barcode detection

using var input = new OcrInput("shipping-label.png");
var result = ocr.Read(input);

// Access extracted text
Console.WriteLine($"Text: {result.Text}");

// Access any barcodes found in the image
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}");
}
using IronOcr;

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;  // Enable barcode detection

using var input = new OcrInput("shipping-label.png");
var result = ocr.Read(input);

// Access extracted text
Console.WriteLine($"Text: {result.Text}");

// Access any barcodes found in the image
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}");
}
$vbLabelText   $csharpLabel

Quando ReadBarCodes é configurado para true, a detecção de código de barras é ativada sem impactar significativamente o tempo de processamento. A coleção Barcodes no resultado contém o valor e o tipo de formato de cada código de barras detectado. Os formatos suportados incluem QR codes, Code 128, EAN-13, UPC, Data Matrix e PDF417. Essa capacidade dupla elimina a necessidade de bibliotecas separadas de digitalização de códigos de barras ao processar documentos que contêm tanto texto legível por humanos quanto códigos legíveis por máquinas.

Entrada

OCR C# GitHub: Implementar Reconhecimento de Texto com IronOCR: Imagem 5 - Imagem Exemplo de Código de Barras

Saída

OCR C# GitHub: Implementar Reconhecimento de Texto com IronOCR: Imagem 6 - Saída de Texto do Código de Barras do Console

Para aplicações de armazenamento e logística, combinar extração de texto e código de barras em uma única passagem reduz chamadas à API e simplifica a arquitetura da aplicação. Uma única operação Read retorna todos os dados reconhecíveis do documento, sejam eles textos impressos, manuscritos ou códigos legíveis por máquina. A propriedade OcrResult.Barcodes expõe uma coleção tipada, permitindo que o código subsequente itera os resultados sem lógica de análise específica de formato.

Como Gerar PDFs Pesquisáveis a Partir de Imagens Digitalizadas?

Converter documentos digitalizados em PDFs pesquisáveis permite seleção de texto, cópia e pesquisa de texto completo dentro de sistemas de gerenciamento de documentos. Isso funciona com vários formatos de imagem como entrada:

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput("scanned-contract.tiff");
var result = ocr.Read(input);

// Export as searchable PDF with invisible text layer
result.SaveAsSearchablePdf("contract-searchable.pdf");
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput("scanned-contract.tiff");
var result = ocr.Read(input);

// Export as searchable PDF with invisible text layer
result.SaveAsSearchablePdf("contract-searchable.pdf");
$vbLabelText   $csharpLabel

O método SaveAsSearchablePdf embute uma camada de texto invisível correspondente ao conteúdo reconhecido, preservando a aparência original do documento enquanto permite operações de texto. Isso produz documentos adequados para sistemas de arquivamento e gerenciamento de documentos empresariais. IronOCR também suporta a exportação de resultados como HTML ou JSON para integração com sistemas a jusante.

Para documentos de várias páginas, IronOCR processa cada página individualmente e monta a saída em um único arquivo. Arquivos TIFF com múltiplos quadros são gerenciados automaticamente, facilitando a conversão em lote de arquivos de documentos digitalizados. O PDF resultante preserva o layout visual da digitalização original enquanto a camada de texto embutida torna cada página totalmente pesquisável em qualquer visualizador de PDF ou plataforma de gerenciamento de documentos.

Como Usar IronOCR em Aplicações Multilíngues?

IronOCR suporta 125+ idiomas, incluindo inglês, espanhol, francês, alemão, chinês, japonês, árabe, entre muitos outros. Pacotes de idiomas são instalados através do NuGet como pacotes separados, mantendo a biblioteca central leve:

using IronOcr;

// Install-Package IronOcr.Languages.French
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.French;

using var input = new OcrInput("french-document.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

// Install-Package IronOcr.Languages.French
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.French;

using var input = new OcrInput("french-document.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Para documentos que contêm idiomas mistos na mesma página, IronOCR suporta o carregamento simultâneo de múltiplos modelos de linguagem. Isso é relevante para aplicações internacionalizadas que processam documentos de várias regiões sem precisar ordenar previamente os arquivos por idioma. Cada pacote de idiomas é mantido ao lado da biblioteca central e suporta as mesmas capacidades de pré-processamento e saída.

Quais São as Melhores Práticas para OCR em Projetos do GitHub?

Ao manter projetos de OCR no GitHub, algumas decisões organizacionais melhoram a experiência do contribuinte e a saúde do projeto a longo prazo. Essas práticas se aplicam independentemente de você estar construindo um pequeno script utilitário ou um grande serviço de processamento de documentos empresariais.

Use Git LFS para grandes imagens de teste para evitar inchar o tamanho do repositório. Ativos binários no histórico padrão do Git aumentam os tempos de clonagem e os custos de armazenamento, particularmente quando conjuntos de dados de teste incluem digitalizações de alta resolução. Armazene chaves de licença em variáveis de ambiente ou Segredos do GitHub, nunca em código C# comprometido; consulte o guia de configuração de chaves de licença para instruções de configuração.

Inclua imagens de exemplo em uma pasta dedicada test-data para que os colaboradores possam verificar a funcionalidade OCR sem precisar de seus próprios documentos. Documente os formatos de imagem suportados e os requisitos de versão do .NET em arquivos README para reduzir perguntas de integração. Construa e execute testes em pipelines de CI usando GitHub Actions para confirmar que a biblioteca funciona corretamente nos ambientes de destino.

Para fluxos de trabalho do GitHub Actions, IronOCR roda em ambientes conteinerizados em corredores Windows e Linux. Consulte o guia de implantação do Linux para detalhes de configuração ao direcionar corredores não-Windows como Ubuntu.

Quais são os seus próximos passos?

IronOCR traz reconhecimento confiável de texto para projetos C# no GitHub através de uma biblioteca distribuída pelo NuGet que lida com configuração Tesseract, pré-processamento, detecção de código de barras e suporte multilíngue sem dependências binárias externas. Os exemplos de código neste guia cobrem os casos de uso básicos: extração de texto básico, pré-processamento de imagens, digitalização de código de barras, criação de PDFs pesquisáveis e processamento multilíngue.

Para explorar o conjunto completo de funcionalidades, comece um teste gratuito sem pressão de tempo ou exigência de cartão de crédito. Quando estiver pronto para implantação em produção, reveja as opções de licenciamento que cobrem desde desenvolvedores individuais até equipes empresariais.

Recursos relacionados para expandir seu conhecimento:

OCR C# GitHub: Implementar Reconhecimento de Texto com IronOCR: Imagem 7 - Licenciamento

Perguntas frequentes

O que é o IronOCR?

IronOCR é uma biblioteca OCR .NET para C# que extrai texto de imagens e PDFs usando um mecanismo Tesseract 5 otimizado. A instalação é feita via NuGet e o gerenciamento de dependências binárias é interno, não exigindo configuração manual do tessdata.

Como faço para instalar o IronOCR em um projeto C#?

Execute o comando `Install-Package IronOCR no Console do Gerenciador de Pacotes NuGet no Visual Studio ou use a interface do usuário do Gerenciador de Pacotes NuGet para pesquisar por IronOCR. O pacote inclui todos os binários necessários para Windows, Linux e macOS.

O IronOCR funciona no Linux para o GitHub Actions?

Sim, o IronOCR é compatível com executores Linux no GitHub Actions. Consulte o guia de implantação do Linux em https://ironsoftware.com/csharp/ocr/how-to/linux/ para obter informações sobre as dependências de pacotes necessárias no Ubuntu e em outras distribuições.

O IronOCR consegue ler códigos de barras e códigos QR?

Sim. Defina ocr.Configuration.ReadBarCodes = true antes de chamar Read(). A coleção OcrResult.Barcodes contém o valor e o tipo de formato para cada código detectado, com suporte para QR, Code 128, EAN-13, UPC, Data Matrix e PDF417.

Como faço para gerar um PDF pesquisável a partir de uma imagem digitalizada?

Após chamar ocr.Read(input), use result.SaveAsSearchablePdf("output.pdf") para criar um PDF com uma camada de texto invisível sobre a digitalização original. O resultado é adequado para sistemas de arquivamento e gerenciamento de documentos corporativos.

O IronOCR suporta outros idiomas além do inglês?

Sim. O IronOCR suporta mais de 125 idiomas através de pacotes de idiomas NuGet dedicados. Instale o pacote de idiomas (por exemplo, Install-Package IronOCR) e, em seguida, defina ocr.Language = OcrLanguage.French antes do processamento.

Como devo armazenar as chaves de licença do IronOCR em um repositório do GitHub ?

Armazene as chaves de licença em Segredos do GitHub e as insira como variáveis ​​de ambiente no seu fluxo de trabalho do GitHub Actions. Nunca inclua strings de chave de licença diretamente no código C# ou nos arquivos appsettings.

Quais formatos de imagem o IronOCR suporta?

O IronOCR suporta PNG, JPG, JPEG, BMP, GIF, TIFF (incluindo multiframe), PDF e outros formatos comuns. As imagens podem ser carregadas a partir de caminhos de arquivo, URLs, fluxos ou matrizes de bytes.

Kannaopat Udonpant
Engenheiro de Software
Antes de se tornar Engenheiro de Software, Kannapat concluiu um doutorado em Recursos Ambientais pela Universidade de Hokkaido, no Japão. Durante o doutorado, Kannapat também integrou o Laboratório de Robótica Veicular, que faz parte do Departamento de Engenharia de Bioprodução. Em 2022, ele utilizou suas habilidades ...
Leia mais

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me