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

Como criar reconhecimento de caracteres em C#

A tecnologia de Reconhecimento Óptico de Caracteres (OCR) permite a conversão de texto em formatos digitais legíveis por máquinas. Quando um documento é digitalizado (como uma fatura ou recibo), ele é salvo pelo seu computador como um arquivo de imagem. No entanto, o texto dentro da imagem digitalizada não pode ser editado, pesquisado ou contado usando um editor de texto comum.

OCR pode processar a imagem, extrair texto e transformá-lo em um formato de texto que pode ser lido por computadores. Isso permite a extração de texto de várias fontes, incluindo arquivos PDF e outras imagens digitalizadas. Além disso, as capacidades de OCR vão além da simples extração de texto, incluindo os principais formatos de imagem e documentos PDF, convertendo-os em dados OCR pesquisáveis.

Em C#, os desenvolvedores podem aproveitar o poder de OCR através de várias bibliotecas, sendo uma delas a poderosa biblioteca IronOCR da Iron Software. Neste tutorial, exploraremos o básico de OCR e demonstraremos como usar IronOCR para realizar Reconhecimento de Caracteres de forma eficiente em C#.

How to create Character Recognition in C#

  1. Crie um novo projeto C# e nomeie o projeto no Visual Studio.
  2. Instale a biblioteca .NET IronOCR e inclua-a na pasta do projeto.
  3. Utilize o Tesseract IronOCR para ler texto de imagens.
  4. Use os recursos avançados do IronOCR para ler o texto em imagens.
  5. Ajuste de Desempenho da Operação de Leitura do IronOCR.

Começando com IronOCR

IronOCR, uma biblioteca C# desenvolvida pela Iron Software, oferece capacidades avançadas de OCR. Ele oferece extração precisa de texto de imagens, PDFs e documentos digitalizados. Antes de mergulharmos no código, certifique-se de ter IronOCR instalado em seu projeto.

Principais características do IronOCR da Iron Software

Motor OCR Tesseract Aprimorado

IronOCR eleva as capacidades do amplamente utilizado motor Tesseract OCR ao melhorar tanto a precisão quanto a velocidade. Ele serve como uma solução robusta para extração de texto de várias fontes, incluindo imagens, PDFs e diversos formatos de documentos.

Ampla Cobertura de Idiomas

Com suporte para mais de 125 idiomas, o IronOCR é habilidoso em lidar com requisitos multilíngues, tornando-se uma escolha ideal para aplicações que demandam versatilidade linguística.

Opções de Saída Versáteis

O texto extraído pode ser convenientemente exportado como texto simples ou dados estruturados para integração perfeita em pipelines de processamento adicionais. Além disso, IronOCR facilita a criação de PDFs pesquisáveis diretamente de entradas de imagem.

Adaptabilidade Multi-Plataforma

Projetado para compatibilidade com C#, F#, e VB.NET, o IronOCR opera perfeitamente em vários ambientes .NET, incluindo versões 8, 7, 6, Core, Padrão, e Framework.

Aproveitamento do Tesseract 5

IronOCR utiliza o poder do Tesseract 5, cuidadosamente adaptado para desempenho ideal dentro do ecossistema .NET.

Capacidade OCR Baseada em Zona

Com o IronOCR, os usuários podem definir precisamente zonas específicas dentro dos documentos, permitindo o processamento OCR direcionado. Este recurso melhora a precisão e a eficiência ao focar a potência de processamento onde é mais necessária.

Ferramentas de Pré-Processamento de Imagem

A biblioteca oferece um conjunto de funcionalidades de pré-processamento de imagem, como correção de inclinação e redução de ruído. Essas ferramentas garantem resultados superiores, mesmo ao lidar com imagens de origem imperfeitas, melhorando a experiência geral de OCR.

Agora, vamos desenvolver um aplicativo de demonstração que utiliza IronOCR para ler texto de imagens.

Pré-requisitos

  1. Visual Studio: Certifique-se de ter instalado o Visual Studio ou qualquer outro ambiente de desenvolvimento C#.
  2. Gerenciador de Pacotes NuGet: Certifique-se de que o NuGet esteja presente para gerenciar pacotes em seu projeto.

Passo 1: Criar um Novo Projeto C# no Visual Studio

Para começar, vamos criar um novo aplicativo de console usando o Visual Studio, como mostrado abaixo.

Como criar Reconhecimento de Caracteres em C#: Figura 1 - Criando um novo projeto C# no Visual Studio

Forneça um nome de projeto e localização abaixo.

Como criar Reconhecimento de Caracteres em C#: Figura 2 - Forneça um nome para o projeto e o local onde deseja salvar

Selecione a versão .NET necessária para o projeto.

Como criar Reconhecimento de Caracteres em C#: Figura 3 - Selecione a versão .NET apropriada para o projeto

Clique no botão Criar para criar o novo projeto.

Passo 2: Instalar a biblioteca IronOCR e integrá-la ao seu projeto.

IronOCR pode ser encontrado no console do Gerenciador de Pacotes NuGet conforme mostrado abaixo. Use o comando fornecido para instalar o pacote.

Como criar Reconhecimento de Caracteres em C#: Figura 4 - Página de download do Gerenciador de Pacotes NuGet do IronOCR

Usando o Gerenciador de Pacotes NuGet do Visual Studio, procure por IronOCR e instale-o na pasta do seu projeto.

Como criar Reconhecimento de Caracteres em C#: Figura 5 - Pesquisando por IronOCR na aba de navegação usando o Gerenciador de Pacotes NuGet

Uma vez instalado, o aplicativo está pronto para fazer uso do IronOCR para ler texto de imagens.

Passo 3: Utilize o IronOCR Tesseract para ler texto de imagens

O IronOCR destaca-se como a exclusiva biblioteca .NET que oferece capacidades OCR do Tesseract 5. Atualmente, tem o mérito de ser a biblioteca Tesseract 5 mais sofisticada em todas as linguagens de programação. O IronOCR integra-se perfeitamente ao Tesseract 5 em vários ambientes .NET, incluindo Framework, Standard, Core, Xamarin e Mono, garantindo suporte abrangente em todo o ecossistema.

Considere o arquivo de imagem abaixo como entrada. Agora, vamos ver como ler o texto neste arquivo de imagem.

Como criar Reconhecimento de Caracteres em C#: Figura 6 - Exemplo de entrada

using IronOcr;

public class Program
{
    public static void Main(string[] args)
    {
        var ocrTesseract = new IronTesseract();
        using var ocrInput = new OcrInput();
        ocrInput.LoadImage(@"sample1.png");
        var ocrResult = ocrTesseract.Read(ocrInput);
        Console.WriteLine(ocrResult.Text);
    }
}
using IronOcr;

public class Program
{
    public static void Main(string[] args)
    {
        var ocrTesseract = new IronTesseract();
        using var ocrInput = new OcrInput();
        ocrInput.LoadImage(@"sample1.png");
        var ocrResult = ocrTesseract.Read(ocrInput);
        Console.WriteLine(ocrResult.Text);
    }
}
$vbLabelText   $csharpLabel

Explicação do código

  1. Instância do IronTesseract: Começamos criando uma instância do IronTesseract para realizar operações de OCR.
  2. Carregando Imagem: Carregamos a imagem de exemplo no objeto OcrInput.
  3. Lendo Texto: O texto na imagem é lido, e o resultado é impresso no console.

Saída

Como criar Reconhecimento de Caracteres em C#: Figura 7 - Texto extraído usando IronOCR

Passo 4: Utilize os recursos avançados do IronOCR para ler texto em imagens

O objeto IronTesseract.Configuration concede aos usuários avançados acesso à API Tesseract subjacente dentro de C#/.NET, permitindo uma configuração detalhada para ajustes e otimização. Abaixo estão algumas das configurações avançadas possíveis.

Seleção de Idioma

Você pode especificar o idioma para OCR usando a propriedade Language. Por exemplo, para definir o idioma como inglês, use:

IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
$vbLabelText   $csharpLabel

Modo de Segmentação de Página

O PageSegmentationMode determina como o Tesseract segmenta a imagem de entrada. As opções incluem AutoOsd, SingleBlock, SingleLine e mais. Por exemplo:

ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
$vbLabelText   $csharpLabel

Variáveis Personalizadas do Tesseract

Você pode ajustar o Tesseract configurando variáveis específicas. Por exemplo, para desativar a paralelização:

ocr.Configuration.TesseractVariables["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables["tessedit_parallelize"] = false;
$vbLabelText   $csharpLabel

Listagem Branca e Listagem Negativa de Caracteres

Use WhiteListCharacters e BlackListCharacters para controlar quais caracteres o Tesseract reconhece. Por exemplo:

ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë|^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë|^";
$vbLabelText   $csharpLabel

Variáveis de Configuração Adicionais

Explore outras variáveis de configuração do Tesseract para personalizar o comportamento de acordo com suas necessidades. Por exemplo:

ocr.Configuration.TesseractVariables["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables["textord_debug_tabfind"] = 0;
// ... (more variables)
ocr.Configuration.TesseractVariables["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables["textord_debug_tabfind"] = 0;
// ... (more variables)
$vbLabelText   $csharpLabel

Agora vamos tentar decodificar a mesma imagem usando configurações avançadas

using IronOcr;

public class Program
{
    public static void Main()
    {
        Console.WriteLine("Decoding using advanced features");
        var ocrTesseract = new IronTesseract() // Create instance
        {
            Language = OcrLanguage.EnglishBest, // Configure best English language
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, // Disable reading barcodes
                BlackListCharacters = "`ë|^", // Blacklisted characters
                WhiteListCharacters = null, // No whitelist, allow all
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, // No custom variables used
            },
            MultiThreaded = false,
        };

        using var ocrInput = new OcrInput(); // Create a disposible ocr input object
        ocrInput.AddImage(@"sample1.png"); // Load the sample image
        var ocrResult = ocrTesseract.Read(ocrInput); // Read the text from the image
        Console.WriteLine(ocrResult.Text); // Output the text
    }
}
using IronOcr;

public class Program
{
    public static void Main()
    {
        Console.WriteLine("Decoding using advanced features");
        var ocrTesseract = new IronTesseract() // Create instance
        {
            Language = OcrLanguage.EnglishBest, // Configure best English language
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, // Disable reading barcodes
                BlackListCharacters = "`ë|^", // Blacklisted characters
                WhiteListCharacters = null, // No whitelist, allow all
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, // No custom variables used
            },
            MultiThreaded = false,
        };

        using var ocrInput = new OcrInput(); // Create a disposible ocr input object
        ocrInput.AddImage(@"sample1.png"); // Load the sample image
        var ocrResult = ocrTesseract.Read(ocrInput); // Read the text from the image
        Console.WriteLine(ocrResult.Text); // Output the text
    }
}
$vbLabelText   $csharpLabel

Explicação do código

  1. Configuração do IronOCR: Uma instância de IronTesseract (a principal classe do IronOCR) é criada e atribuída à variável ocrTesseract.

    Configurações de configuração são aplicadas a ocrTesseract:

  • Idioma: Especifica o idioma para OCR (neste caso, inglês).
  • Configuração: Um objeto TesseractConfiguration que permite personalização adicional:
    • ReadBarCodes: Desativa a leitura de códigos de barras.
    • BlackListCharacters: Especifica caracteres a serem excluídos (caracteres a não reconhecer).
    • WhiteListCharacters: Nenhuma lista branca especificada, permitindo todos os caracteres.
    • PageSegmentationMode: Define o modo de segmentação de página para "AutoOsd".
    • TesseractVariables: Nenhuma variável personalizada foi utilizada.
      • MultiThreaded: Desativa multithreading.
  1. Entrada OCR e Carregamento de Imagem: Um bloco using cria um objeto descartável ocrInput do tipo OcrInput. A imagem "sample1.png" é adicionada ao ocrInput.
  2. Extração de Texto: O método Read é chamado em ocrTesseract, passando ocrInput. O resultado é armazenado na variável ocrResult.
  3. Saída: O texto extraído é impresso no console usando Console.WriteLine(ocrResult.Text).

Saída

Como criar Reconhecimento de Caracteres em C#: Figura 8 - Texto extraído usando IronOCR

Passo 5: Ajuste de Desempenho da Operação de Leitura do IronOCR.

Ao trabalhar com IronOCR, você tem acesso a vários filtros de imagem que podem ajudar a pré-processar imagens antes de executar OCR. Esses filtros otimizam a qualidade da imagem, melhoram a visibilidade e reduzem ruídos ou artefatos. Eles ajudam a melhorar o desempenho da operação de OCR.

  1. Girar:

    O filtro Girar permite que você gire imagens por um número especificado de graus no sentido horário. Para rotação no sentido anti-horário, use números negativos.

  2. Desinclinar:

    O filtro Desinclinar corrige a inclinação da imagem, garantindo que o texto fique na vertical e ortogonal. Isso é particularmente útil para OCR porque o Tesseract funciona melhor com digitalizações devidamente orientadas.

  3. Escalonar:

    O filtro Escalonar escala proporcionalmente as páginas de entrada do OCR.

  4. Binarizar:

    O filtro Binarizar converte cada pixel em preto ou branco, sem meio termo. Ele pode melhorar o desempenho de OCR em casos de contraste muito baixo entre texto e fundo.

  5. Para Escala de Cinza:

    O filtro Para Escala de Cinza converte cada pixel em uma tonalidade de cinza. Embora seja improvável que melhore significativamente a precisão do OCR, pode melhorar a velocidade.

  6. Inverter:

    O filtro Inverter reverte as cores—branco torna-se preto, e preto torna-se branco.

  7. Substituir Cor:

    O filtro Substituir Cor substitui uma cor específica dentro de uma imagem por outra cor, considerando um certo limite.

  8. Contraste:

    O filtro Contraste aumenta automaticamente o contraste. Muitas vezes, melhora a velocidade e a precisão do OCR em digitalizações de baixo contraste.

  9. Dilatar e Erodir:

    Esses filtros avançados de morfologia manipulam as bordas dos objetos em uma imagem.

    • Dilatar adiciona pixels às bordas dos objetos.
    • Erodir remove pixels das bordas dos objetos.
  10. Afiar:

    O filtro Afiar afia documentos de OCR desfocados e achata canais alfa para branco.

  11. Reduzir Ruído:

    O filtro Reduzir Ruído remove ruído digital. Use-o onde ruído é esperado.

  12. Limpeza Profunda de Ruído de Fundo:

    Este filtro pesado de remoção de ruído de fundo deve ser usado apenas quando um ruído extremo de fundo é conhecido. Ele pode reduzir a precisão do OCR para documentos limpos e é intensivo em CPU.

  13. Aprimorar Resolução:

    O filtro Aprimorar Resolução melhora a resolução de imagens de baixa qualidade. Não é frequentemente necessário devido ao manejo automático de resolução.

Aqui está um exemplo de como aplicar filtros usando a IronOCR em C#:

var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Aplicações Comuns de OCR

  1. Digitalização de Documentos: OCR é amplamente usado para converter documentos em papel digitalizados, como faturas, recibos, formulários e contratos, em formatos digitais. Esse processo de digitalização facilita o armazenamento, recuperação e gerenciamento de documentos, reduzindo a desordem de papel e melhorando a eficiência.
  2. Extração de Dados: OCR permite a extração de texto e dados de documentos digitalizados, imagens e PDFs. Esses dados extraídos podem ser usados para entrada de dados automatizada, análise de conteúdo, indexação e integração em bancos de dados ou sistemas empresariais.
  3. Reconhecimento de Texto em Imagens: A tecnologia OCR permite extrair texto de documentos impressos e imagens para fins de indexação e pesquisa. Essa capacidade é utilizada em várias aplicações, incluindo realidade aumentada, motores de busca baseados em imagem e serviços de tradução.
  4. Reconhecimento Automático de Placas de Veículos (ALPR): Os sistemas ALPR utilizam OCR para ler números de placas de veículos a partir de imagens ou fluxos de vídeo capturados por câmeras instaladas em vigilância de tráfego, gerenciamento de estacionamento, cobrança de pedágios e aplicações de aplicação da lei.
  5. Soluções de Acessibilidade: OCR desempenha um papel crucial na criação de conteúdo acessível para indivíduos com deficiências visuais. Ao converter texto de imagens ou documentos em fala ou braille, o OCR ajuda a tornar a informação acessível a pessoas com deficiências.
  6. Verificação de Identidade: A tecnologia OCR é empregada em processos de verificação de identidade, como digitalização e processamento de documentos de identidade, como passaportes, carteiras de motorista e IDs. Ela auxilia na verificação da autenticidade dos documentos e na extração de informações relevantes para fins de verificação de identidade.
  7. Bancos e Finanças: OCR é usado em bancos e finanças para tarefas como leitura de cheques, processamento de faturas, conversão de um documento PDF existente, extração de dados de demonstrações financeiras e automação de fluxos de trabalho baseados em documentos para aumentar a precisão e eficiência nas operações financeiras.
  8. Tradução Automatizada: A tecnologia OCR é integrada a ferramentas de tradução e aplicativos de aprendizado de idiomas para converter texto impresso de uma língua para outra. Os usuários podem capturar texto com seus dispositivos, e o OCR auxilia na tradução em tempo real para o idioma desejado.
  9. Preservação de Documentos Arquivísticos e Históricos: OCR é utilizado na digitalização de materiais arquivísticos e documentos históricos, preservando-os em formatos digitais para acesso, pesquisa e análise futura, garantindo a preservação do valioso patrimônio cultural.

Requisitos de Licença

IronOCR. Forneça os detalhes abaixo para receber a chave no seu email

Como criar Reconhecimento de Caracteres em C#: Figura 9 - Página de licença de teste do IronPDF

Assim que a chave for obtida, seja por compra ou teste gratuito, siga as etapas abaixo para usar a chave.

Configuração da Sua Chave de Licença: Configure sua chave de licença do IronOCR usando o código. Adicione a seguinte linha ao inicializar sua aplicação (antes de usar IronOCR):

IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
$vbLabelText   $csharpLabel

Chave de Aplicação Global (Web.Config ou App.Config): Para aplicar uma chave globalmente em toda a sua aplicação, use o arquivo de configuração (Web.Config ou App.Config). Adicione a seguinte chave ao seu appSettings:

<configuration>

    <appSettings>
        <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
    </appSettings>
</configuration>
<configuration>

    <appSettings>
        <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
    </appSettings>
</configuration>
XML

Usando o appsettings.json do .NET Core: Para aplicações .NET Core, crie um arquivo appsettings.json no diretório raiz do seu projeto. Substitua a chave 'IronOcr.LicenseKey' pelo valor da sua licença:

{
    "IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}

Testando Sua Chave de Licença: Verifique se sua chave foi instalada corretamente testando-a:

bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
$vbLabelText   $csharpLabel

Conclusão

Em conclusão, IronOCR, oferece uma solução robusta para OCR começando em $799. Abrace o poder do OCR com IronOCR e desbloqueie um mundo de possibilidades em seus projetos C#.

Perguntas frequentes

Como posso realizar reconhecimento de caracteres em C#?

Para realizar reconhecimento de caracteres em C#, você pode usar o IronOCR. Comece criando um novo projeto C# no Visual Studio e, em seguida, instale a biblioteca IronOCR .NET por meio do Gerenciador de Pacotes NuGet. Use as classes e os métodos do IronOCR para extrair texto de imagens, PDFs ou documentos digitalizados.

Quais são os benefícios de usar o IronOCR para extração de texto?

O IronOCR aprimora a extração de texto, melhorando a precisão e a velocidade do mecanismo OCR Tesseract. Ele oferece suporte a mais de 125 idiomas, recursos de OCR baseados em zonas e ferramentas de pré-processamento de imagem para otimizar os resultados do OCR.

Como otimizar a precisão do OCR com o IronOCR?

Para otimizar a precisão do OCR com o IronOCR, utilize ferramentas de pré-processamento de imagem, como rotação, correção de inclinação e ajuste de contraste. Você também pode refinar as configurações com a seleção de idioma, segmentação de página e inclusão ou exclusão de caracteres em listas brancas.

Quais são os usos comuns da tecnologia OCR?

A tecnologia OCR é comumente usada para digitalização de documentos, extração de dados, reconhecimento de texto em imagens, reconhecimento automático de placas de veículos e soluções de acessibilidade. Ela também desempenha um papel importante em serviços bancários, verificação de identidade e preservação de documentos de arquivo.

Quais ambientes são compatíveis com o IronOCR?

O IronOCR é compatível com vários ambientes .NET, incluindo C#, F# e VB.NET. Ele suporta as versões 8, 7, 6, Core, Standard e Framework do .NET, tornando-o versátil para inúmeras configurações de desenvolvimento.

Como faço para gerenciar o licenciamento do IronOCR?

Para gerenciar o licenciamento do IronOCR, aplique sua chave de licença usando a propriedade IronOcr.License.LicenseKey na inicialização do seu aplicativo. Como alternativa, você pode configurá-la globalmente no arquivo `Web.Config` ou `App.Config`, ou no arquivo `appsettings.json` para aplicativos .NET Core.

Quais recursos avançados o IronOCR oferece?

O IronOCR oferece recursos avançados, como seleção de idioma, modo de segmentação de página, variáveis personalizadas do Tesseract e listas de permissão ou bloqueio de caracteres. Esses recursos permitem a personalização e otimização detalhadas das operações de OCR.

Posso usar o IronOCR para OCR baseado em zonas?

Sim, o IronOCR suporta OCR baseado em zonas, o que permite especificar áreas específicas de uma imagem ou documento para extração de texto. Esse recurso é útil para extração de dados direcionada a layouts complexos.

Como posso integrar OCR ao meu projeto C#?

Para integrar o OCR ao seu projeto C#, instale a biblioteca IronOCR do NuGet e, em seguida, faça referência a ela em seu projeto. Utilize os métodos da biblioteca para implementar a funcionalidade de OCR, permitindo que seu aplicativo processe imagens e documentos digitalizados.

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