Get Started with OCR in C# and VB.NET
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.
- Linux : NuGet
- macOS: https://www.nuget.org/packages/IronOcr.Extensions.AdvancedScan.MacOs
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;
Dim Text As String = (New IronTesseract()).Read("img\Screenshot.png").Text
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);
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
' Add multiple images
input.LoadImage("images/sample.jpeg")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
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");
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
' We can also select specific PDF page numbers to OCR
input.LoadPdf("example.pdf", Password:= "password")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
' 1 page for every page of the PDF
Console.WriteLine($"{result.Pages.Length} Pages")
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);
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("multi-frame.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
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);
}
Imports IronOcr
Private ocr As New IronTesseract()
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
input.LoadImage("img/Barcode.png")
Dim Result As OcrResult = ocr.Read(input)
For Each Barcode In Result.Barcodes
' type and location properties also exposed
Console.WriteLine(Barcode.Value)
Next Barcode
End Using
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);
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
' Dimensions are in pixel
Private contentArea = New System.Drawing.Rectangle() With {
.X = 215,
.Y = 1250,
.Height = 280,
.Width = 1335
}
input.LoadImage("document.png", contentArea)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
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);
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\Potter.tiff", pageindices)
' fixes digital noise and poor scanning
input.DeNoise()
' fixes rotation and perspective
input.Deskew()
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
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");
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Quarterly Report"
input.LoadImage("image1.jpeg")
input.LoadImage("image2.png")
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("image3.gif", pageindices)
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
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");
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageindices)
ocr.Read(input).SaveAsSearchablePdf("searchable.pdf")
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");
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Html Title"
input.LoadImage("image1.jpeg")
Dim Result As OcrResult = ocr.Read(input)
Result.SaveAsHocrFile("results.html")
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);
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.LoadImage("LowQuality.jpeg")
' fixes digital noise and poor scanning
input.DeNoise()
' fixes rotation and perspective
input.Deskew()
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
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.EnhanceResolutiondetecta 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");
' Reference to the path of the source file that demonstrates setting language packs for OCR
Imports IronOcr
' PM> Install IronOcr.Languages.Arabic
Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.Arabic
Using input As New OcrInput()
Dim pageindices = New Integer() { 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.
Dim result As OcrResult = ocr.Read(input)
' Console can't print Arabic on Windows easily.
' Let's save to disk instead.
result.SaveAsTextFile("arabic.txt")
End Using
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");
' Reference to the path of the source file that demonstrates multi-language OCR
Imports IronOcr
' PM> Install IronOcr.Languages.ChineseSimplified
Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.ChineseSimplified
' We can add any number of languages
ocr.AddSecondaryLanguage(OcrLanguage.English)
Using input As New OcrInput()
input.LoadPdf("multi-language.pdf")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsTextFile("results.txt")
End Using
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
' Reference to the path of the source file demonstrating detailed OCR result object usage
Imports IronOcr
Private ocr As New IronTesseract()
' Must be set to true to read barcode
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\sample.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
Dim pages = result.Pages
Dim words = pages(0).Words
Dim barcodes = result.Barcodes
' Explore here to find a massive, detailed API:
' - Pages, Blocks, Paraphaphs, Lines, Words, Chars
' - Image Export, Fonts Coordinates, Statistical Data, Tables
End Using
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.

