Como construir um serviço OCR no Azure usando IronOCR

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

A Iron Software criou uma biblioteca OCR (Reconhecimento Óptico de Caracteres) que elimina os problemas de interoperabilidade na integração de OCR com Azure. Trabalhar com bibliotecas OCR no Azure sempre foi um pouco doloroso para os desenvolvedores. A solução para este e muitos outros problemas de OCR é IronOCR.

Recursos do IronOCR para Microsoft Azure

IronOCR inclui os seguintes recursos para criar um serviço OCR na Microsoft Azure:

  • Transforma PDFs em documentos pesquisáveis para facilitar a extração de texto
  • Transforma imagens em documentos pesquisáveis extraindo texto das imagens
  • Lê códigos de barras assim como códigos QR
  • Precisão excepcional
  • Funciona localmente e não requer SaaS (Software como Serviço), que é um modelo de distribuição de software onde um provedor de nuvem, como Microsoft Azure, hospeda diversos aplicativos e torna esses aplicativos disponíveis para usuários finais.
  • Velocidade extremamente rápida

Vamos ver como o melhor motor OCR, IronOCR da Iron Software, facilita para os desenvolvedores a extração de texto de qualquer documento de entrada.

Vamos começar com nosso serviço OCR no Azure

Para começar com o exemplo, precisamos instalar o IronOCR primeiro.

  1. Crie um novo aplicativo de Console com C#.
  2. Instale o IronOCR pelo NuGet, digitando: Install-Package IronOcr ou selecionando Gerenciar pacotes NuGet e pesquisando por IronOCR. Isto é mostrado abaixo.
  3. Edite seu arquivo Program.cs para se parecer com o seguinte:

    • Importamos o namespace IronOcr para utilizar suas capacidades de OCR para ler e extrair o conteúdo do arquivo PDF.
    • Criamos um novo objeto IronTesseract para que possamos extrair texto de uma imagem.
using IronOcr;
using System;

namespace IronOCR_Ex
{
    class Program
    {
        static void Main(string[] args)
        {
            var ocr = new IronTesseract();
            using (var Input = new OcrInput("..\\Images\\Purgatory.PNG"))
            {
                var result = ocr.Read(Input); // Read PNG image File
                Console.WriteLine(result.Text); // Output extracted text to console
                Console.ReadLine();
            }
        }
    }
}
using IronOcr;
using System;

namespace IronOCR_Ex
{
    class Program
    {
        static void Main(string[] args)
        {
            var ocr = new IronTesseract();
            using (var Input = new OcrInput("..\\Images\\Purgatory.PNG"))
            {
                var result = ocr.Read(Input); // Read PNG image File
                Console.WriteLine(result.Text); // Output extracted text to console
                Console.ReadLine();
            }
        }
    }
}
$vbLabelText   $csharpLabel
  1. Em seguida, abrimos uma imagem chamada Purgatory.PNG. Esta imagem faz parte da Divina Comédia de Dante - um dos meus livros favoritos. A imagem se parece com a próxima imagem.

O texto a ser extraído com as capacidades de leitura de caracteres óticos do IronOCR

Figura 2 - O texto a ser extraído com as capacidades de leitura óptica de caracteres do IronOCR

  1. A saída após o texto acima ter sido extraído do texto da imagem de entrada acima.

Texto extraído

Figura 3 - Texto extraído

  1. Vamos fazer o mesmo com um documento PDF. O documento PDF contém o mesmo texto para extrair que a Figura 2.

A única diferença é que vamos usar um documento PDF em vez de uma imagem. Digite o seguinte código:

var OCR = new IronTesseract();
using (var input = new OcrInput())
{
    input.Title = "Divine Comedy - Purgatory"; // Give title to input document 
    // Supply optional password and name of document
    input.AddPdf("..\\Documents\\Purgatorio.pdf", "dante");
    var result = OCR.Read(input); // Read the input file

    result.SaveAsSearchablePdf("SearchablePDFDocument.pdf"); 
}
var OCR = new IronTesseract();
using (var input = new OcrInput())
{
    input.Title = "Divine Comedy - Purgatory"; // Give title to input document 
    // Supply optional password and name of document
    input.AddPdf("..\\Documents\\Purgatorio.pdf", "dante");
    var result = OCR.Read(input); // Read the input file

    result.SaveAsSearchablePdf("SearchablePDFDocument.pdf"); 
}
$vbLabelText   $csharpLabel

Este código é quase o mesmo que o código anterior que extrai texto de uma imagem.

Aqui usamos o método OcrInput para ler o documento PDF atual, neste caso: Purgatorio.pdf. Se houver metadados no arquivo PDF, como um título ou uma senha, também podemos inseri-los.

O resultado é salvo como um documento PDF pesquisável no qual podemos procurar o texto.

Observe que, se o arquivo PDF for muito grande, uma exceção pode ser lançada.

  1. Já falamos o suficiente sobre aplicativos Windows; vamos ver como podemos usar OCR com Microsoft Azure.

A beleza do IronOCR é que ele funciona muito bem com Microsoft Azure como uma Função Azure em uma arquitetura de microsserviços. Aqui está um exemplo muito rápido de como seria uma Função Microsoft Azure que trabalha com IronOCR. Esta função Microsoft Azure extrai texto de imagens.

public static class OCRFunction
{
    public static HttpClient hcClient = new HttpClient();

    [FunctionName("IronOCRFunction_EX")]
    public static async Task<IActionResult> Run([HttpTrigger] HttpRequest hrRequest, ExecutionContext ecContext)
    {
        var URI = hrRequest.Query["image"];
        var saStream = await hcClient.GetStreamAsync(URI);

        var ocr = new IronTesseract();
        using (var inputOCR = new OcrInput(saStream))
        {
            var outputOCR = ocr.Read(inputOCR);
            return new OkObjectResult(outputOCR.Text);
        }
    }
} 
public static class OCRFunction
{
    public static HttpClient hcClient = new HttpClient();

    [FunctionName("IronOCRFunction_EX")]
    public static async Task<IActionResult> Run([HttpTrigger] HttpRequest hrRequest, ExecutionContext ecContext)
    {
        var URI = hrRequest.Query["image"];
        var saStream = await hcClient.GetStreamAsync(URI);

        var ocr = new IronTesseract();
        using (var inputOCR = new OcrInput(saStream))
        {
            var outputOCR = ocr.Read(inputOCR);
            return new OkObjectResult(outputOCR.Text);
        }
    }
} 
$vbLabelText   $csharpLabel

Isso alimenta a imagem recebida pela função diretamente no motor OCR para fornecer o texto extraído.

Um rápido resumo sobre Microsoft Azure de acordo com a Microsoft:

Os Microsserviços Microsoft Azure são uma abordagem arquitetônica para criar aplicativos onde cada função principal, ou serviço, é construído e implantado de forma independente. A arquitetura de microsserviços é distribuída e fracamente acoplada, portanto, a falha de um componente não quebrará todo o aplicativo. Componentes independentes trabalham juntos e se comunicam com contratos de API bem definidos. Construa aplicativos de microsserviços para atender rapidamente às necessidades de negócios em constante mudança e trazer novas funcionalidades ao mercado mais rapidamente.

Alguns outros recursos do IronOCR com .NET ou Microsoft Azure incluem:

  • A capacidade de realizar OCR em quase qualquer arquivo, imagem ou PDF.
  • Velocidade extremamente rápida no processamento de entrada de OCR
  • Precisão excepcional
  • Lê códigos de barras e códigos QR
  • Funciona localmente, sem necessidade de SaaS
  • Pode transformar PDFs e imagens em documentos pesquisáveis
  • Excelente alternativa ao Azure OCR dos Microsoft Cognitive Services

Filtros de Imagem para melhorar o desempenho do OCR

  • OcrInput.Rotate - Gira imagens em vários graus no sentido horário. Para anti-horário, use números negativos.
  • OcrInput.Binarize() - Este filtro de imagem transforma todos os pixels em preto ou branco sem meio-termo. Isto melhora o desempenho do OCR.
  • OcrInput.ToGrayScale() - Este filtro de imagem transforma todos os pixels em uma sombra de escala de cinza. Isto melhora a velocidade do OCR.
  • OcrInput.Contrast() - Aumenta automaticamente o contraste. Este filtro melhora a velocidade e a precisão do OCR em digitalizações de baixo contraste.
  • OcrInput.DeNoise() - Remove o ruído digital. Este filtro deve ser usado apenas onde o ruído é esperado em documentos de entrada.
  • OcrInput.Invert() - Inverte todas as cores.
  • OcrInput.Dilate() - A dilatação adiciona pixels às bordas de qualquer objeto em uma imagem.
  • OcrInput.Erode() - A erosão remove pixels nas bordas de objetos.
  • OcrInput.Deskew() - Gira uma imagem para que ela fique na orientação correta e ortogonal. Isto é muito útil para OCR porque a tolerância do Tesseract para digitalizações inclinadas pode ser tão baixa quanto 5 graus.
  • OcrInput.DeepCleanBackgroundNoise() - Remoção pesada de ruído de fundo.
  • OcrInput.EnhanceResolution - Melhora a resolução de uma imagem de baixa qualidade.

Desempenho de velocidade

Segue um exemplo:

var OCR = new IronTesseract();
OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";
OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;
OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly;
OCR.Language = OcrLanguage.EnglishFast;
using (var Input = new OcrInput("..\\Images\\Purgatory.PNG"))
{
    var Result = OCR.Read(Input);
    Console.WriteLine(Result.Text);
}
var OCR = new IronTesseract();
OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";
OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;
OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly;
OCR.Language = OcrLanguage.EnglishFast;
using (var Input = new OcrInput("..\\Images\\Purgatory.PNG"))
{
    var Result = OCR.Read(Input);
    Console.WriteLine(Result.Text);
}
$vbLabelText   $csharpLabel

Opções de preços e licenciamento

Existem essencialmente três níveis de licença paga que funcionam com o princípio de compra única e licença vitalícia.

E sim, estes são gratuitos para fins de desenvolvimento.

Mais informações

Recursos do IronOCR para aplicações .NET executando OCR no Azure e outros Sistemas

  • IronOCR suporta 125 idiomas internacionais. Cada idioma está disponível nas qualidades Rápida, Padrão e Melhor. Alguns dos pacotes de idiomas disponíveis incluem:
    • Búlgaro
    • Armênio
    • Croata
    • Afrikaans
    • Dinamarquês
    • Tcheco
    • Filipino
    • Finlandês
    • Francês
    • Alemão
    • Existem muitos mais pacotes de idiomas disponíveis, para vê-los, por favor siga o próximo link. Pacotes de idiomas IronOCR
  • Funciona fora da caixa em .NET
    • Suporte para Xamarin
    • Suporte para Mono
    • Suporte para Microsoft Azure
    • Suporte para Docker no Microsoft Azure
    • Suporta documentos PDF
    • Suporta Tiffs Multiframe
    • Suporte para todos os principais formatos de imagem
  • Os seguintes .NET Frameworks são suportados:
    • .NET Framework 4.5 e superior
    • .NET Standard 2
    • .NET Core 2
    • .NET Core 3
    • .NET Core 5
  • Você não precisa ter o Tesseract (um mecanismo de OCR de código aberto que suporta Unicode e mais de 100 idiomas) instalado para que o IronOCR funcione.
    • Tem precisão melhorada em relação ao Tesseract.
    • Tem velocidade melhorada em relação ao Tesseract.
  • Corrige digitalizações de documentos ou arquivos de baixa qualidade.
  • Corrige digitalizações inclinadas de documentos ou arquivos de baixa qualidade.

O que é Reconhecimento Óptico de Caracteres (OCR)?

De acordo com a Wikipedia: O reconhecimento óptico de caracteres é a conversão eletrônica ou mecânica de imagens de texto digitado, impresso em texto codificado por máquina, seja de um documento digitalizado, uma foto de um documento, uma foto de cena ou de texto de legenda sobreposto a uma imagem. OCR significa Reconhecimento Óptico de Caracteres. Há essencialmente quatro tipos de reconhecimento óptico de caracteres:

  • OCR - Reconhecimento Óptico de Caracteres, direcionado a texto datilografado de um documento de entrada, um caractere ou glifo (símbolo elementar dentro de um conjunto de símbolos acordado, por exemplo, 'a' em diferentes fontes) por vez.
  • OWR - Reconhecimento Óptico de Palavras, direcionado a texto datilografado de um documento de entrada, uma palavra por vez.
  • ICR - Reconhecimento Inteligente de Caracteres, direcionado a texto impresso como escrita manuscrita (caracteres sem vínculo com outras letras) e texto cursivo, um caractere ou glifo por vez.
  • IWR - Reconhecimento Inteligente de Palavras, direcionado a texto cursivo.

Perguntas frequentes

Como posso integrar recursos de OCR em um aplicativo C# no Azure?

Você pode integrar recursos de OCR em um aplicativo C# no Azure criando um novo aplicativo de console e instalando o IronOCR via NuGet. Use o comando Install-Package IronOcr ou pesquise por IronOCR no gerenciador de pacotes NuGet.

Quais são as vantagens de usar o IronOCR em vez do serviço OCR nativo do Azure?

O IronOCR oferece diversas vantagens em relação ao serviço OCR nativo do Azure, incluindo maior precisão, velocidades de processamento mais rápidas e a capacidade de ser executado localmente sem a necessidade de SaaS. Ele também oferece suporte a uma ampla variedade de idiomas e fornece filtros de imagem para aprimorar o desempenho do OCR.

Como faço para configurar uma Função do Microsoft Azure para extração de texto por OCR?

Para configurar uma Função do Microsoft Azure para extração de texto por OCR, você pode usar o IronOCR para criar uma função que extrai texto de imagens. Isso faz parte de uma arquitetura de microsserviços, permitindo que você integre recursos de OCR perfeitamente em seus aplicativos do Azure.

O IronOCR consegue processar vários idiomas em OCR?

Sim, o IronOCR suporta 125 idiomas internacionais, cada um disponível nas qualidades Rápida, Padrão e Melhor, tornando-o versátil para aplicações globais.

Quais opções de processamento de imagem o IronOCR oferece para melhorar a precisão do OCR?

O IronOCR oferece diversas opções de processamento de imagem, como Rotacionar, Binarizar, Converter para Escala de Cinza, Contraste, Redução de Ruído, Inverter, Dilatar, Erodir, Corrigir Inclinação, Limpar Ruído de Fundo e Aprimorar Resolução, para melhorar a precisão e a confiabilidade dos resultados de OCR.

O IronOCR é compatível com várias estruturas .NET para implantação no Azure?

Sim, o IronOCR é compatível com o .NET Framework 4.5 e versões superiores, .NET Standard 2, .NET Core 2, .NET Core 3 e .NET Core 5. Ele também oferece suporte a Xamarin e Mono, e pode ser implantado com Docker no Microsoft Azure.

Preciso de algum software adicional para executar o IronOCR no Azure?

Não é necessário nenhum software adicional para executar o IronOCR no Azure. Ele funciona de forma independente e oferece maior precisão e velocidade em comparação com o Tesseract, sem a necessidade de instalação deste.

Quais são as opções de licenciamento disponíveis para o IronOCR?

O IronOCR oferece três níveis de licenciamento pagos, baseados em um modelo de compra única com licença vitalícia. Essas licenças são gratuitas para fins de desenvolvimento, proporcionando flexibilidade para o dimensionamento do projeto.

Como posso converter imagens e PDFs em documentos pesquisáveis usando o IronOCR?

O IronOCR permite converter imagens e PDFs em documentos pesquisáveis, utilizando seus recursos de OCR para extrair e reconhecer texto, tornando-os facilmente pesquisáveis e indexáveis.

Qual é o processo de utilização do IronOCR para ler códigos de barras e códigos QR?

O IronOCR consegue ler códigos de barras e códigos QR usando seus recursos integrados para escanear e extrair dados desses códigos, facilitando sua integração em aplicativos C# no Azure.

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
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.