OCR português em C#e .Net

Outras versões deste documento:

IronOCR é um componente de software C#que permite aos codificadores .NET lerem textos de imagens e documentos PDF em 126 idiomas, incluindo português.

É um fork avançado do Tesseract, construído exclusivamente para os desenvolvedores .NET e regularmente supera outros engines do Tesseract em velocidade e precisão.

Conteúdo de IronOcr.Languages.Portuguese

Este pacote contém 55 idiomas OCR para .NET:

  • Português
  • Melhor português
  • PortugueseFast

Baixar

Pacote de Língua Portuguesa [português]
Fecho eclair
https://www.nuget.org/packages/IronOcr.Languages.Portuguese/'> NuGet

Instalação

A primeira coisa que temos que fazer é instalar nosso pacote OCR em português no seu projeto .NET.

PM> Install-Package IronOCR.Languages.Portuguese

Exemplo de Código

Este exemplo de código C#lê texto em português de uma imagem ou documento PDF.

```cs //PM> Install-Package IronOcr.Languages.Portuguese using IronOcr; var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.Portuguese; using (var Input = new OcrInput(@"images\Portuguese.png")) { var Result = Ocr.Read(Input); Var AllText = Result.Text } ```

Por que escolher o IronOCR?

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

Escolha IronOCR para atingir 99,8% + precisão de OCR sem usar nenhum serviço externo da web, taxas contínuas ou envio de documentos confidenciais pela Internet.

Por que os desenvolvedores C#escolhem IronOCR em vez de Vanilla Tesseract:

  • Instale como uma única DLL ou Nuget
  • Inclui para Tesseract 5, 4 e 3 motores fora da caixa.
  • A precisão de 99,8% supera significativamente o Tesseract normal.
  • Velocidade incrível e MultiThreading
  • Compatível com MVC, WebApp, Desktop, Console e Aplicativo de Servidor
  • Nenhum código Exes ou C ++ para trabalhar
  • Suporte completo para PDF OCR
  • Para realizar OCR em quase qualquer arquivo de imagem ou PDF
  • Suporte completo para .Net Core, Standard e FrameWork
  • Implante no Windows, Mac, Linux, Azure, Docker, Lambda, AWS
  • Leia códigos de barras e códigos QR
  • Exportar OCR para XHTML
  • Exportar OCR para documentos PDF pesquisáveis
  • Suporte multithreading
  • 126 idiomas internacionais, todos gerenciados por meio de arquivos Nuget ou OcrData
  • Extraia imagens, coordenadas, estatísticas e fontes. Não apenas texto.
  • Pode ser usado para redistribuir Tesseract OCR dentro de aplicativos comerciais e proprietários.

O OCR de ferro brilha ao trabalhar com imagens do mundo real e documentos imperfeitos, como fotografias ou digitalizações de baixa resolução que podem apresentar ruídos digitais ou imperfeições.

Outras bibliotecas OCR gratuitas para a plataforma .NET, como outras APIs .net tesseract e serviços da Web, não funcionam tão bem nesses casos de uso do mundo real.

OCR com Tesseract 5 - Comece a codificação em C #

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

OneLiner

```cs string Text = new IronTesseract().Read(@"img\Screenshot.png").Text; ```

Hello World configurável

```cs // PM> Install-Package IronOCR.Languages.Portuguese using IronOcr; var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.Portuguese; using (var Input = new OcrInput()){ Input.AddImage("images/sample.jpeg") //... você pode adicionar qualquer número de imagens var Result = Ocr.Read(Input); Console.WriteLine(Result.Text); } ```

C#PDF OCR

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

```cs var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.Portuguese; using (var input = new OcrInput()) { input.AddPdf("example.pdf", "password"); // Também podemos selecionar números específicos de páginas PDF para OCR var Result = Ocr.Read(input); Console.WriteLine(Result.Text); Console.WriteLine($"{Result.Pages.Count()} Pages"); // 1 página para cada página do PDF } ```

OCR para TIFFs MultiPage

Formato de arquivo TIFF de leitura OCR, incluindo documentos de várias páginas. O TIFF também pode ser convertido diretamente em um arquivo PDF com texto pesquisável.

```cs using IronOcr; var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.Portuguese; using (var Input = new OcrInput()){ input.AddMultiFrameTiff("multi - frame.tiff"); var Result = Ocr.Read(Input); Console.WriteLine(Result.Text); } ```

Códigos de barras e QR

Uma característica única do Iron OCR é que ele pode ler códigos de barras e códigos QR de documentos enquanto digitaliza o texto. As instâncias da classe OcrResult.OcrBarcode fornecem ao desenvolvedor informações detalhadas sobre cada código de barras lido.

```cs // using IronOcr; var Ocr = new IronTesseract(); Ocr.Configuration.ReadBarCodes = true; using (var input = new OcrInput()) { input.AddImage("img/Barcode.png"); var Result = Ocr.Read(input); foreach (var Barcode in Result.Barcodes) { Console.WriteLine(Barcode.Value); // propriedades de tipo e localização também expostas } } ```

OCR em áreas específicas de imagens

Todos os métodos de leitura e digitalização do Iron OCR fornecem a capacidade de especificar exatamente de qual parte de uma página ou páginas desejamos ler o texto. Isso é muito útil quando estamos examinando formulários padronizados e pode economizar muito tempo e melhorar a eficiência.

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

```cs using IronOcr; var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.Portuguese; using (var Input = new OcrInput()) { var ContentArea = new System.Drawing.Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 }; // As dimensões estão em px Input.Add("document.png", ContentArea); var Result = Ocr.Read(Input); Console.WriteLine(Result.Text); } ```

OCR para digitalizações de baixa qualidade

A classe Iron OCR OcrInput pode corrigir varreduras que o Tesseract normal não consegue ler.

```cs using IronOcr; var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.Portuguese; using (var Input = new OcrInput(@"img\Potter.LowQuality.tiff")) { Input.DeNoise(); // corrige ruído digital e digitalização deficiente Input.Deskew(); // corrige rotação e perspectiva var Result = Ocr.Read(Input); Console.WriteLine(Result.Text); } ```

Exportar resultados de OCR como PDF pesquisável

Imagem em PDF com strings de texto copiáveis. Pode ser indexado por mecanismos de pesquisa e bancos de dados.

```cs using IronOcr; var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.Portuguese; using (var Input = new OcrInput()){ input.Title = "Quarterly Report" input.AddImage("image1.jpeg"); input.AddImage("image2.png"); input.AddImage("image3.gif"); var Result = Ocr.Read(input); Result.SaveAsSearchablePdf("searchable.pdf") } ```

Conversão de TIFF para PDF pesquisável

Converta um documento TIFF (ou qualquer grupo de arquivos de imagem) diretamente em um PDF pesquisável, que pode ser indexado por intranet, site da Web e mecanismos de pesquisa do Google.

```cs using IronOcr; var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.Portuguese; using (var Input = new OcrInput()){ input.AddMultiFrameTiff("example.tiff") var Result = Ocr.Read(input).SaveAsSearchablePdf("searchable.pdf") } ```

Exportar resultados de OCR como HTML

Imagem OCR para conversão XHTML.

```cs using IronOcr; var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.Portuguese; using (var Input = new OcrInput()){ input.Title = "Html Title" input.AddImage("image1.jpeg"); var Result = Ocr.Read(input); Result.SaveAsHocrFile("results.html"); } ```

Filtros de aprimoramento de imagem OCR

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

Exemplo de código de aprimoramento de imagem

Torna as imagens de entrada de OCR de qualidade superior para produzir resultados de OCR melhores e mais rápidos.

```cs using IronOcr; var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.Portuguese; using (var Input = new OcrInput(@"LowQuality.jpeg")) { Input.DeNoise(); // corrige ruído digital e digitalização deficiente Input.Deskew(); // corrige rotação e perspectiva var Result = Ocr.Read(Input); Console.WriteLine(Result.Text); } ```

Lista de filtros de imagem OCR

Filtros de entrada para melhorar o desempenho do OCR que são integrados ao IronOCR incluem:

  • OcrInput.Rotate (graus duplos) - Gira as imagens em vários graus no sentido horário. Para anti-horário, use números negativos.
  • OcrInput.Binarize () - Este filtro de imagem torna cada pixel preto ou branco, sem meio termo. Pode melhorar o desempenho do OCR em casos de contraste muito baixo do texto com o fundo.
  • OcrInput.ToGrayScale () - Este filtro de imagem transforma cada pixel em uma sombra de tons de cinza. É improvável que melhore a precisão do OCR, mas pode melhorar a velocidade
  • OcrInput.Contrast () - Aumenta o contraste automaticamente. Este filtro geralmente melhora a velocidade e precisão do OCR em digitalizações de baixo contraste.
  • OcrInput.DeNoise () - Remove o ruído digital. Este filtro deve ser usado apenas onde houver expectativa de ruído.
  • OcrInput.Invert () - Inverte todas as cores. Por exemplo, o branco torna-se preto: o preto torna-se branco.
  • OcrInput.Dilate () - Morfologia Avançada. A dilatação adiciona pixels aos limites dos objetos em uma imagem. Oposto de Erode
  • OcrInput.Erode () - Morfologia Avançada. A erosão remove pixels nos limites do objetoOpósito de dilato
  • OcrInput.Deskew () - Gira uma imagem para que fique do lado certo para cima e ortogonal. Isso é muito útil para OCR porque a tolerância do Tesseract para digitalizações distorcidas pode ser de até 5 graus.
  • OcrInput.DeepCleanBackgroundNoise () - Remoção de ruído de fundo pesado. Use esse filtro apenas no caso de ser conhecido um ruído de fundo extremo do documento, porque ele também corre o risco de reduzir a precisão do OCR de documentos limpos e é muito caro para a CPU.
  • OcrInput.EnhanceResolution - aprimora a resolução de imagens de baixa qualidade. Este filtro não é frequentemente necessário porque OcrInput.MinimumDPI e OcrInput.TargetDPI irão capturar e resolver automaticamente entradas de baixa resolução.

CleanBackgroundNoise. Esta é uma configuração que é um tanto demorada; entretanto, permite que a biblioteca limpe automaticamente o ruído digital, amassamentos de papel e outras imperfeições em uma imagem digital que, de outra forma, a tornaria incapaz de ser lida por outras bibliotecas de OCR.

EnhanceContrast é uma configuração que faz com que o Iron OCR aumente automaticamente o contraste do texto contra o fundo de uma imagem, aumentando a precisão do OCR e geralmente aumentando o desempenho e a velocidade do OCR.

EnhanceResolution é uma configuração que detecta automaticamente imagens de baixa resolução (que estão abaixo de 275 dpi) e automaticamente aprimora a imagem e então torna todo o texto mais nítido para que possa ser lido perfeitamente por uma biblioteca de OCR. Embora essa operação consuma muito tempo, geralmente reduz o tempo geral para uma operação de OCR em uma imagem.

Idioma O Iron OCR suporta 22 pacotes de idiomas internacionais e a configuração do idioma pode ser usada para selecionar um ou mais idiomas múltiplos a serem aplicados a uma operação de OCR.

Estratégia Iron OCR suporta duas estratégias. Podemos escolher ir para uma digitalização rápida e menos precisa de um documento ou usar uma estratégia avançada que usa alguns modelos de inteligência artificial para melhorar automaticamente a precisão do texto OCR, observando a relação estatística das palavras entre si em uma frase .

ColorSpace é uma configuração pela qual podemos escolher o OCR em tons de cinza ou em cores. Geralmente, a escala de cinza é a melhor opção. No entanto, às vezes, quando há textos ou planos de fundo de matiz semelhante, mas com cores muito diferentes, um espaço de cores totalmente colorido fornecerá melhores resultados.

DetectWhiteTextOnDarkBackgrounds. Geralmente, todas as bibliotecas de OCR esperam ver texto preto em fundos brancos. Essa configuração permite que o Iron OCR detecte automaticamente negativos ou páginas escuras com texto em branco e os leia.

InputImageType. Esta configuração permite que o desenvolvedor oriente a biblioteca OCR quanto a se ela está olhando um documento completo ou um snippet, como uma captura de tela.

RotateAndStraighten é uma configuração avançada que permite ao Iron OCR a capacidade única de ler documentos que não são apenas girados, mas talvez contenham perspectiva, como fotografias de documentos de texto.

ReadBarcodes é um recurso útil que permite ao Iron OCR ler códigos de barras e códigos QR automaticamente nas páginas, pois também lê texto, sem adicionar uma grande carga de tempo adicional.

Profundidade de cor. Esta configuração determina quantos bits por pixel a biblioteca OCR usará para determinar a profundidade de uma cor. Uma profundidade de cor maior pode aumentar a qualidade do OCR, mas também aumentará o tempo necessário para a conclusão da operação de OCR.

126 Pacotes de Idiomas

O Iron OCR oferece suporte a 126 idiomas internacionais por meio de pacotes de idiomas distribuídos como DLLs, que podem ser baixados deste site ou também do Gerenciador de pacotes NuGet .

Os idiomas incluem alemão, francês, inglês, chinês, japonês e muitos mais. Existem pacotes de idiomas especializados para passaporte MRZ, cheques MICR, dados financeiros, placas de veículos e muito mais. Você também pode usar qualquer arquivo ".traineddata" do tesseract - incluindo aqueles que você mesmo cria.

Exemplo de linguagem

Usando outros idiomas de OCR.

```cs // using IronOcr; // PM> Install IronOcr.Languages.Arabic var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.Arabic; using (var input = new OcrInput()) { input.AddImage("img/arabic.gif"); // Adicione filtros de imagem se necessário // Neste caso, mesmo a entrada de pensamento é de qualidade muito baixa // IronTesseract pode ler o que o Tesseract convencional não pode. var Result = Ocr.Read(input); // O console não imprime árabe no Windows com facilidade. // Em vez disso, vamos salvar no disco. Result.SaveAsTextFile("arabic.txt"); } ```

Exemplo de vários idiomas

Também é possível fazer o OCR usando vários idiomas ao mesmo tempo. Isso pode realmente ajudar a obter metadados e urls do idioma inglês em documentos Unicode.

```cs // using IronOcr; // PM> Install IronOcr.Languages.ChineseSimplified var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.ChineseSimplified; Ocr.AddSecondaryLanguage(OcrLanguage.Portuguese); // Podemos adicionar qualquer número de idiomas using (var input = new OcrInput()) { input.Add("multi - language.pdf"); var Result = Ocr.Read(input); Result.SaveAsTextFile("results.txt"); } ```

Objetos detalhados de resultados de OCR

Iron OCR retorna um objeto de resultado de OCR para cada operação de OCR. Geralmente, os desenvolvedores usam apenas a propriedade text deste objeto para obter o texto digitalizado da imagem. No entanto, o DOM de resultados de OCR é muito mais avançado do que isso.

```cs using IronOcr; using System.Drawing; //Adicionar Referência de Montagem var Ocr = new IronTesseract(); Ocr.Language = OcrLanguage.Portuguese; Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm; Ocr.Configuration.ReadBarCodes = true; //!Importante using (var Input = new OcrInput(@"images\sample.tiff")) { OcrResult Result = Ocr.Read(Input); var Pages = Result.Pages; var Words = Pages[0].Words; var Barcodes = Result.Barcodes; // Explore aqui para encontrar uma API enorme e detalhada: // - Páginas, blocos, parafáforos, linhas, palavras, caracteres // - Exportação de imagens, coordenadas de fontes, dados estatísticos } ```

atuação

IronOCR funciona fora da caixa, sem necessidade de ajustar o desempenho ou modificar fortemente as imagens de entrada.

A velocidade é impressionante: IronOcr.2020 + é até 10 vezes mais rápido e causa 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 do mundo real de como o Iron OCR pode ser usado e podem mostrar as nuances de como obter o melhor esta biblioteca.

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