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
- Crie um novo projeto C# e nomeie o projeto no Visual Studio.
- Instale a biblioteca .NET IronOCR e inclua-a na pasta do projeto.
- Utilize o Tesseract IronOCR para ler texto de imagens.
- Use os recursos avançados do IronOCR para ler o texto em imagens.
- 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
- Visual Studio: Certifique-se de ter instalado o Visual Studio ou qualquer outro ambiente de desenvolvimento C#.
- 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.

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

Selecione a versão .NET necessária 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.

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

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.

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);
}
}
Imports IronOcr
Public Class Program
Public Shared Sub Main(ByVal args() As String)
Dim ocrTesseract = New IronTesseract()
Dim ocrInput As New OcrInput()
ocrInput.LoadImage("sample1.png")
Dim ocrResult = ocrTesseract.Read(ocrInput)
Console.WriteLine(ocrResult.Text)
End Sub
End Class
Explicação do código
- Instância do IronTesseract: Começamos criando uma instância do IronTesseract para realizar operações de OCR.
- Carregando Imagem: Carregamos a imagem de exemplo no objeto OcrInput.
- Lendo Texto: O texto na imagem é lido, e o resultado é impresso no console.
Saída

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;
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
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;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
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;
ocr.Configuration.TesseractVariables("tessedit_parallelize") = False
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 = "`ë|^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ocr.Configuration.BlackListCharacters = "`ë|^"
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)
ocr.Configuration.TesseractVariables("classify_num_cp_levels") = 3
ocr.Configuration.TesseractVariables("textord_debug_tabfind") = 0
' ... (more variables)
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
}
}
Imports IronOcr
Public Class Program
Public Shared Sub Main()
Console.WriteLine("Decoding using advanced features")
Dim ocrTesseract = New IronTesseract() With {
.Language = OcrLanguage.EnglishBest,
.Configuration = New TesseractConfiguration() With {
.ReadBarCodes = False,
.BlackListCharacters = "`ë|^",
.WhiteListCharacters = Nothing,
.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
.TesseractVariables = Nothing
},
.MultiThreaded = False
}
Dim ocrInput As New OcrInput() ' Create a disposible ocr input object
ocrInput.AddImage("sample1.png") ' Load the sample image
Dim ocrResult = ocrTesseract.Read(ocrInput) ' Read the text from the image
Console.WriteLine(ocrResult.Text) ' Output the text
End Sub
End Class
Explicação do código
-
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.
- Entrada OCR e Carregamento de Imagem: Um bloco
usingcria um objeto descartávelocrInputdo tipo OcrInput. A imagem "sample1.png" é adicionada aoocrInput. - Extração de Texto: O método
Readé chamado emocrTesseract, passandoocrInput. O resultado é armazenado na variávelocrResult. - Saída: O texto extraído é impresso no console usando
Console.WriteLine(ocrResult.Text).
Saída

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.
-
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.
-
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.
-
Escalonar:
O filtro Escalonar escala proporcionalmente as páginas de entrada do OCR.
-
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.
-
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.
-
Inverter:
O filtro Inverter reverte as cores—branco torna-se preto, e preto torna-se branco.
-
Substituir Cor:
O filtro Substituir Cor substitui uma cor específica dentro de uma imagem por outra cor, considerando um certo limite.
-
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.
-
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.
-
Afiar:
O filtro Afiar afia documentos de OCR desfocados e achata canais alfa para branco.
-
Reduzir Ruído:
O filtro Reduzir Ruído remove ruído digital. Use-o onde ruído é esperado.
-
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.
-
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);
Dim ocr = New IronTesseract()
Dim input = New OcrInput()
input.LoadImage("sample.png")
input.Deskew()
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
Aplicações Comuns de OCR
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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

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";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01"
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>
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");
Dim result As Boolean = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01")
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.



