Get Started with OCR in C# and VB.NET

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

IronOCR é uma biblioteca de software C# que permite aos desenvolvedores de software da plataforma .NET reconhecer e ler texto em imagens e documentos PDF. Trata-se de uma biblioteca OCR .NET pura que utiliza o mecanismo Tesseract mais avançado disponível no mercado.

Instalação

Instale com o Gerenciador de Pacotes NuGet

Instale o IronOcr no Visual Studio ou pela linha de comando usando o Gerenciador de Pacotes NuGet. No Visual Studio, navegue até o console com o seguinte comando:

  • Ferramentas ->
  • Gerenciador de Pacotes NuGet ->
  • Console do Gerenciador de Pacotes
Install-Package IronOcr

E confira o IronOcr no NuGet para mais informações sobre atualizações de versão e instalação.

Existem outros pacotes NuGet do IronOCR disponíveis para diferentes plataformas:

IronOcr.Extensions.AdvancedScan para Linux e macOS

Este pacote destina-se a usuários que utilizam Linux e Mac e desejam também os recursos avançados do IronOCR.

Solução de problemas

Com a nova atualização deste pacote, o IronOCR combina as dependências do OpenCV dentro do próprio pacote para simplificá-lo. Portanto, se os desenvolvedores que atualmente importam as dependências do OpenCV receberem o seguinte erro:

The type of namespace name `OpenCvSharp` could not be found(are you missing a using directive or an assembly reference)

Você pode remover os namespaces do OpenCV sem problemas, e o problema será resolvido.

Baixe o arquivo .ZIP do IronOCR.

Você também pode optar por baixar o IronOCR através de um arquivo .ZIP. Clique para baixar o arquivo DLL diretamente . Após baixar o arquivo .zip:

Instruções para instalação do .NET Framework 4.0 ou superior:

  • Inclua o arquivo IronOcr.dll da pasta net40 em seu projeto.
  • E então adicione referências de Assembly para:

    • Configuração do sistema
    • Sistema.Desenho
    • Sistema.Web

Instruções for .NET Standard, .NET Core 2.0+ e .NET 5

  • Inclua o arquivo IronOcr.dll da pasta netstandard2.0 em seu projeto. Em seguida, adicione uma referência ao pacote NuGet:

    • Sistema.Desenho.Common 4.7 ou superior

Baixe o instalador do IronOCR (somente para Windows)

Outra opção é baixar nosso instalador do IronOCR, que instalará todos os recursos necessários para que o IronOCR funcione imediatamente. Lembre-se que esta opção é exclusiva para sistemas Windows. Para baixar o instalador, clique aqui . Após baixar o arquivo .zip:

Instruções para instalação do .NET Framework 4.0 ou superior:

  • Inclua o arquivo IronOcr.dll da pasta net40 em seu projeto.
  • E então adicione referências de Assembly para:

    • Configuração do sistema
    • Sistema.Desenho
    • Sistema.Web

Instruções for .NET Standard, .NET Core 2.0+ e .NET 5

  • Inclua o arquivo IronOcr.dll da pasta netstandard2.0 em seu projeto. Em seguida, adicione uma referência ao pacote NuGet:

    • Sistema.Desenho.Common 4.7 ou superior

Por que escolher o IronOCR?

IronOCR é uma biblioteca de software .NET fácil de instalar, completa e bem documentada.

Escolha o IronOCR para obter uma precisão de OCR superior a 99,8% sem usar serviços web externos, taxas recorrentes ou enviar documentos confidenciais pela internet.

Por que os desenvolvedores C# escolhem o IronOCR em vez do Tesseract padrão:

  • Instalar como um único arquivo DLL ou NuGet
  • Inclui os motores Tesseract 5, 4 e 3.
  • A precisão de 99,8% supera significativamente o Tesseract padrão.
  • Velocidade incrível e multithreading
  • Compatível com MVC, WebApp, Desktop, Console e Server Application
  • Não há arquivos executáveis ​​(.exe) ou código C++ para trabalhar.
  • Suporte completo para OCR em PDF
  • Realize OCR em praticamente qualquer arquivo de imagem ou PDF.
  • Suporte completo for .NET Core, Standard e Framework
  • Implantação em Windows, Mac, Linux, Azure, Docker, Lambda e AWS
  • Ler códigos de barras e códigos QR
  • Exportar resultados de OCR como XHTML
  • Exportar OCR para documentos PDF pesquisáveis
  • Suporte a multithreading
  • 125 idiomas internacionais, todos gerenciados via arquivos NuGet ou OcrData.
  • Extrair imagens, coordenadas, estatísticas e fontes. Não apenas texto.
  • Pode ser usado para redistribuir o Tesseract OCR em aplicações comerciais e proprietárias.

O IronOCR se destaca ao trabalhar com imagens do mundo real e documentos imperfeitos, como fotografias ou digitalizações de baixa resolução que podem apresentar ruído digital ou imperfeições.

Outras bibliotecas OCR gratuitas para a plataforma .NET, como outras APIs do Tesseract for .NET e serviços web, não apresentam um desempenho tão bom nesses casos de uso do mundo real.

OCR with Tesseract 5 - Start Coding in C

O exemplo de código abaixo mostra como é fácil ler texto de uma imagem usando C# ou VB .NET.

Uma linha

:path=/static-assets/ocr/content-code-examples/get-started/get-started-1.cs
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
$vbLabelText   $csharpLabel

Olá Mundo Configurável

:path=/static-assets/ocr/content-code-examples/get-started/get-started-2.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();

// Add multiple images
input.LoadImage("images/sample.jpeg");

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

OCR de PDF em C

A mesma abordagem pode ser usada para extrair texto de qualquer documento PDF.

:path=/static-assets/ocr/content-code-examples/get-started/get-started-3.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();

// We can also select specific PDF page numbers to OCR
input.LoadPdf("example.pdf", Password: "password");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);

// 1 page for every page of the PDF
Console.WriteLine($"{result.Pages.Length} Pages");
$vbLabelText   $csharpLabel

OCR para TIFFs de várias páginas

:path=/static-assets/ocr/content-code-examples/get-started/get-started-4.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("multi-frame.tiff", pageindices);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Códigos de barras e QR Code

Uma característica única do IronOCR é a capacidade de ler códigos de barras e códigos QR de documentos enquanto realiza a digitalização de texto. Instâncias da classe OcrResult.OcrBarcode fornecem ao desenvolvedor informações detalhadas sobre cada código de barras escaneado.

:path=/static-assets/ocr/content-code-examples/get-started/get-started-5.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;

using OcrInput input = new OcrInput();
input.LoadImage("img/Barcode.png");

OcrResult Result = ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
    // type and location properties also exposed
    Console.WriteLine(Barcode.Value);
}
$vbLabelText   $csharpLabel

OCR em áreas específicas de imagens

Todos os métodos de digitalização e leitura do IronOCR oferecem a possibilidade de especificar exatamente de qual parte de uma página ou páginas desejamos ler o texto. Isso é muito útil quando estamos analisando formulários padronizados, podendo economizar muito tempo e aumentar a eficiência.

Para usar regiões de cultivo, precisaremos adicionar uma referência de sistema a System.Drawing para que possamos usar o objeto System.Drawing.Rectangle.

:path=/static-assets/ocr/content-code-examples/get-started/get-started-6.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();

// Dimensions are in pixel
var contentArea = new System.Drawing.Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };

input.LoadImage("document.png", contentArea);

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

OCR para digitalizações de baixa qualidade

A classe IronOCR OcrInput pode corrigir digitalizações que o Tesseract normal não consegue ler.

:path=/static-assets/ocr/content-code-examples/get-started/get-started-7.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);

// fixes digital noise and poor scanning
input.DeNoise();

// fixes rotation and perspective
input.Deskew();

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

Exporte os resultados do OCR como um PDF pesquisável.

:path=/static-assets/ocr/content-code-examples/get-started/get-started-8.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Quarterly Report";
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", pageindices);

OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
$vbLabelText   $csharpLabel

Conversão de TIFF para PDF pesquisável

:path=/static-assets/ocr/content-code-examples/get-started/get-started-9.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);
ocr.Read(input).SaveAsSearchablePdf("searchable.pdf");
$vbLabelText   $csharpLabel

Exportar resultados de OCR como HTML

:path=/static-assets/ocr/content-code-examples/get-started/get-started-10.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Html Title";
input.LoadImage("image1.jpeg");

OcrResult Result = ocr.Read(input);
Result.SaveAsHocrFile("results.html");
$vbLabelText   $csharpLabel

Filtros de aprimoramento de imagem OCR

O IronOCR fornece filtros exclusivos para objetos OcrInput para melhorar o desempenho do OCR.

Exemplo de código para aprimoramento de imagem

:path=/static-assets/ocr/content-code-examples/get-started/get-started-11.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.LoadImage("LowQuality.jpeg");

// fixes digital noise and poor scanning
input.DeNoise();

// fixes rotation and perspective
input.Deskew();

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

Lista de filtros de imagem OCR

Os filtros de entrada integrados ao IronOCR para melhorar o desempenho do OCR incluem:

  • OcrInput.Rotate(double degrees) - Rotaciona imagens em um determinado número de graus no sentido horário. Para rotação no sentido anti-horário, use números negativos.
  • OcrInput.Binarize() - Este filtro converte cada pixel em preto ou branco, sem meio-termo, melhorando potencialmente o desempenho do OCR em imagens de baixíssimo contraste.
  • OcrInput.ToGrayScale() - Converte cada pixel em um tom de cinza. Pode não melhorar a precisão, mas pode melhorar a velocidade.
  • OcrInput.Contrast() - Aumenta automaticamente o contraste, muitas vezes melhorando a velocidade e a precisão em digitalizações de baixo contraste.
  • OcrInput.DeNoise() - Remove ruído digital, recomendado apenas quando houver previsão de ruído.
  • OcrInput.Invert() - Inverte todas as cores (o branco torna-se preto e vice-versa).
  • OcrInput.Dilate() - Avança a morfologia, adiciona pixels aos limites do objeto, oposto de Erosão.
  • OcrInput.Erode() - Avança a morfologia, remove pixels dos limites do objeto, oposto de Dilatar.
  • OcrInput.Deskew() - Rotaciona uma imagem para orientá-la corretamente. Útil porque a tolerância à distorção do Tesseract é limitada.
  • OcrInput.EnhanceResolution - Melhora a resolução de imagens de baixa qualidade. Essa configuração geralmente é usada para gerenciar automaticamente a entrada de baixa DPI.
  • EnhanceResolution detecta imagens de baixa resolução (abaixo de 275 dpi), aumenta a escala e aprimora o texto para melhores resultados de OCR. Embora demorado, esse processo geralmente reduz o tempo total de operação do OCR.
  • Language - Suporta seleção de 22 pacotes de idiomas internacionais.
  • Strategy - Permite selecionar entre estratégias rápidas e menos precisas ou avançadas (usando IA para precisão) com base na relação estatística das palavras.
  • ColorSpace - Escolha realizar o OCR em escala de cinza ou em cores; Em geral, a escala de cinza é a opção ideal, embora a cor possa ser melhor em certos cenários de contraste.
  • DetectWhiteTextOnDarkBackgrounds - Ajusta-se a imagens negativas, detectando e lendo automaticamente texto branco em fundos escuros.
  • InputImageType - Orienta a biblioteca OCR, especificando se ela está trabalhando em um documento completo ou em um trecho.
  • RotateAndStraighten - Permite que o IronOCR processe corretamente documentos que estejam rotacionados ou afetados por distorções de perspectiva.
  • ReadBarcodes - Lê automaticamente códigos de barras e códigos QR simultaneamente com a leitura de texto, sem aumentar significativamente o tempo de leitura.
  • ColorDepth - Determina os bits por pixel para a profundidade de cor no processo de OCR. Uma maior profundidade pode aumentar a qualidade, mas também o tempo de processamento.

125 Pacotes de Idiomas

O IronOCR oferece suporte a 125 idiomas internacionais por meio de pacotes de idiomas distribuídos como arquivos DLL, disponíveis para download neste site ou no Gerenciador de Pacotes NuGet .

Os idiomas incluem alemão, francês, inglês, chinês, japonês, entre outros. Existem pacotes de idiomas especializados para MRZ, verificações MICR, dados financeiros, placas de veículos, etc. Além disso, podem ser usados ​​arquivos personalizados do Tesseract ".traineddata".

Exemplo de linguagem

// Reference to the path of the source file that demonstrates setting language packs for OCR
:path=/static-assets/ocr/content-code-examples/get-started/get-started-12.cs
// Reference to the path of the source file that demonstrates setting language packs for OCR
using IronOcr;

// PM> Install IronOcr.Languages.Arabic
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;

using OcrInput input = new OcrInput();

var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("img/arabic.gif", pageindices);
// Add image filters if needed
// In this case, even thought input is very low quality
// IronTesseract can read what conventional Tesseract cannot.
OcrResult result = ocr.Read(input);
// Console can't print Arabic on Windows easily.
// Let's save to disk instead.
result.SaveAsTextFile("arabic.txt");
$vbLabelText   $csharpLabel

Exemplo de vários idiomas

Também é possível realizar OCR usando vários idiomas simultaneamente. Isso pode aprimorar o OCR de metadados em inglês e URLs em documentos Unicode.

// Reference to the path of the source file that demonstrates multi-language OCR
:path=/static-assets/ocr/content-code-examples/get-started/get-started-13.cs
// Reference to the path of the source file that demonstrates multi-language OCR
using IronOcr;

// PM> Install IronOcr.Languages.ChineseSimplified
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;

// We can add any number of languages
ocr.AddSecondaryLanguage(OcrLanguage.English);

using OcrInput input = new OcrInput();
input.LoadPdf("multi-language.pdf");
OcrResult result = ocr.Read(input);
result.SaveAsTextFile("results.txt");
$vbLabelText   $csharpLabel

Objetos com resultados detalhados de OCR

O IronOCR retorna um objeto de resultado OCR para cada operação. Geralmente, os desenvolvedores acessam a propriedade Text para obter o texto digitalizado. No entanto, o objeto de resultados contém informações muito mais detalhadas.

// Reference to the path of the source file demonstrating detailed OCR result object usage
:path=/static-assets/ocr/content-code-examples/get-started/get-started-14.cs
// Reference to the path of the source file demonstrating detailed OCR result object usage
using IronOcr;

IronTesseract ocr = new IronTesseract();

// Must be set to true to read barcode
ocr.Configuration.ReadBarCodes = true;
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\sample.tiff", pageindices);

OcrResult result = ocr.Read(input);
var pages = result.Pages;
var words = pages[0].Words;
var barcodes = result.Barcodes;
// Explore here to find a massive, detailed API:
// - Pages, Blocks, Paraphaphs, Lines, Words, Chars
// - Image Export, Fonts Coordinates, Statistical Data, Tables
$vbLabelText   $csharpLabel

Desempenho

O IronOCR funciona imediatamente, sem necessidade de ajustes de desempenho ou modificação de imagem.

Velocidade impressionante: o IronOcr.2020+ é até 10 vezes mais rápido e comete mais de 250% menos erros do que as versões anteriores.

Saber mais

Para saber mais sobre OCR em C#, VB, F# ou qualquer outra linguagem .NET, leia nossos tutoriais da comunidade , que fornecem exemplos práticos de uso do IronOCR e mostram as nuances da otimização da biblioteca.

Uma referência completa da API para desenvolvedores .NET também está disponível.

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.