
Como realizar OCR em placas de veículos em C# (Tutorial)
O reconhecimento de placas de veículos tornou-se uma ferramenta essencial em muitos setores, desde o gerenciamento de tráfego e sistemas de estacionamento até a aplicação da lei e soluções de pedágio. Aproveitando a tecnologia de Reconhecimento Óptico de Caracteres (OCR), os desenvolvedores podem extrair texto de imagens de forma eficiente, automatizando o processo de identificação de placas de veículos. Neste tutorial, iremos demonstrar como usar o IronOCR, uma poderosa biblioteca C# de OCR, para ler com precisão placas de veículos em imagens. Com a sua integração perfeita com o código-fonte do OpenCV para tarefas de visão computacional, IronOCR oferece uma solução robusta para reconhecer texto mesmo a partir de fontes de imagem complexas ou ruidosas. Quer você esteja trabalhando com uma imagem de placa de licença limpa ou uma foto de veículo completo, este guia o guiará pelas etapas para construir um sistema confiável de reconhecimento de placas de licença usando técnicas modernas de OCR.
Como Usar Reconhecimento de Placas de Licença C#
- Instalar a Biblioteca C# para usar o reconhecimento de placas de licença
- Importe a imagem da placa para uma nova instância
OcrImageInput. - Aplicar filtros de imagem para melhorar a extração de texto em C#.
- Melhorar a velocidade de reconhecimento especificando a região da placa de licença na foto.
- Imprima o texto extraído usando uma instância
OcrLicensePlateResult.
Começando com IronOCR
IronOCR é uma biblioteca de OCR em C# construída sobre o motor Tesseract OCR, projetada especificamente para trazer alta precisão e eficiência para projetos de reconhecimento de texto em aplicativos .NET. Ideal para lidar com imagens ruidosas ou de baixa qualidade, IronOCR inclui poderosas capacidades de pré-processamento de imagem, como redução automática de ruído e conversão em escala de cinza, que melhoram a clareza da extração de texto.
Algumas das características de destaque do IronOCR incluem:
- Alta Precisão de OCR: Otimizado para vários idiomas e fontes, IronOCR se destaca em precisão mesmo ao trabalhar com texto complexo ou distorcido.
- Suporte para Imagem e PDF: Pode ler texto de múltiplos formatos de imagem e arquivos PDF, tornando-o versátil para diferentes tipos de documentos.
- Integração com OpenCV: Através do suporte ao OpenCV, IronOCR pode realizar tarefas de visão computacional, como detectar regiões de texto específicas dentro de uma imagem, o que é particularmente útil para reconhecimento de placas de licença.
- Pré-processamento Avançado: Inclui filtros para conversão em escala de cinza, rotação, correção de inclinação e aprimoramento de contraste para melhorar a qualidade do reconhecimento.
- Opções de Entrada Flexíveis: Suporta documentos de múltiplas páginas e regiões ajustáveis, permitindo que os desenvolvedores foquem o processamento de OCR em áreas selecionadas para resultados mais rápidos e direcionados.
Com essas capacidades, IronOCR é uma solução poderosa para construir aplicações de OCR que exigem precisão, flexibilidade e facilidade de integração com outras ferramentas de visão computacional.
Criar um projeto do Visual Studio
Comece abrindo o Visual Studio e selecionando "Criar um Novo Projeto". Isso o levará a uma página onde você pode selecionar o tipo de projeto que deseja construir (no nosso caso, faremos uma Aplicação de Console). Selecione o tipo de aplicação desejado e clique em "Próximo".

Agora, dê um nome ao seu projeto e escolha o local onde será salvo.

Finalmente, selecione o seu framework .NET alvo e clique no botão "Criar". Isso criará o projeto, como mostrado abaixo.

O próximo passo é instalar a biblioteca IronOCR para que possamos começar a processar placas de licença.
Instalando o IronOCR
Para começar com IronOCR em seu projeto C#, você precisará instalar o pacote IronOCR do NuGet. IronOCR é compatível com .NET Framework e .NET Core, tornando fácil de integrar em várias aplicações .NET.
Passo 1: Abra o Console do Gerenciador de Pacotes
No Visual Studio, navegue até Ferramentas > Gerenciador de Pacotes NuGet > Console do Gerenciador de Pacotes.
Passo 2: Instale o Pacote IronOCR
Digite o seguinte comando no Console do Gerenciador de Pacotes:
Este comando instala a biblioteca IronOCR, incluindo todas as dependências necessárias para executar funções de OCR em seu projeto. Como nossa aplicação requer recursos avançados, como detecção de placas de licença usando visão computacional, você também pode instalar o pacote opcional IronOcr.ComputerVision.Windows desta forma:
Certifique-se de ter a extensão IronOcr.Extensions.AdvancedScan instalada para que você possa utilizar seu poderoso método ReadLicensePlate:
Alternativamente, você pode instalar os pacotes usando Ferramentas > Gerenciador de Pacotes NuGet > Gerenciar Pacotes NuGet para a Solução e buscar os pacotes de que precisa:

Configurando o Código
Finalmente, devemos adicionar os imports necessários e declarações de using no topo do nosso código:
using IronOcr;Imports IronOcrLendo Placas de Licença com Reconhecimento Óptico de Caracteres
Nesta seção, vamos criar um programa para ler placas de licença usando IronOCR, um Motor OCR Tesseract que se destaca em extrair texto de imagens. Para implementar a detecção de veículos, também podemos incorporar bibliotecas adicionais de aprendizado de máquina. Notavelmente, IronOCR se integra com OpenCV, uma biblioteca de visão computacional de código aberto líder, permitindo-nos realizar tarefas de detecção de objetos, como identificar veículos e placas de licença.
Exemplo de Imagem de Placa de Licença
Trabalharemos com a seguinte placa de licença:

Exemplo de Código para Realizar OCR em Placa de Licença
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrImageInput("licensePlate.jpeg"))
{
// Fixes digital noise and makes the image easier to read
input.DeNoise();
input.ToGrayScale();
// Reads the license plate information and stores it for further use
OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
// Saves the license plate text to a string variable
string output = result.Text;
// Outputs the license plate text to the console
Console.WriteLine(output);
}Imports IronOcr
Private ocr = New IronTesseract()
Using input = New OcrImageInput("licensePlate.jpeg")
' Fixes digital noise and makes the image easier to read
input.DeNoise()
input.ToGrayScale()
' Reads the license plate information and stores it for further use
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)
' Saves the license plate text to a string variable
Dim output As String = result.Text
' Outputs the license plate text to the console
Console.WriteLine(output)
End Using
Análise do código:
-
Inicialização:
var ocr = new IronTesseract();cria uma nova instância da classeIronTesseract, que fornece métodos para Reconhecimento Óptico de Caracteres (OCR). -
Entrada de Imagem: A declaração
usingcria um novo objetoOcrImageInputcom o arquivo de imagem especificado"licensePlate.jpeg". Este objeto é projetado para armazenar os dados da imagem para processamento OCR. -
Pré-processamento de Imagem:
input.DeNoise();aplica um filtro de redução de ruído digital para melhorar a qualidade da imagem, facilitando a leitura do texto pelo motor OCR.input.ToGrayScale();converte a imagem para tons de cinza, o que pode melhorar a precisão do reconhecimento e a velocidade de processamento.
-
Reconhecimento de Placas: A linha
OcrLicensePlateResult result = ocr.ReadLicensePlate(input);usa o métodoReadLicensePlatepara analisar a imagem processada e extrair qualquer informação de placa que detectar, armazenando os resultados em um objetoOcrLicensePlateResult. -
Armazenamento de Saída: O texto da placa é armazenado na variável de string
outputacessandoresult.Text, que contém o texto reconhecido da placa. -
Saída de Console: Finalmente,
Console.WriteLine(output);imprime o texto extraído da placa no console para verificação.
Escaneando Números de Placa de Licença de um Carro
Se tivermos uma imagem de um carro inteiro em vez de apenas a placa de licença, podemos especificar uma região retangular para focar na área da placa de licença. Podemos usar System.Drawing.Rectangle para definir esta área em pixels.
Imagem Original
Usaremos o seguinte arquivo de imagem para nosso exemplo:

Ao especificar a área de interesse, melhoramos a velocidade de processamento e evitamos extrair texto desnecessário.
Código de Implementação
using IronOcr;
using System.Drawing;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);
input.LoadImage("CarPlate.jpeg", contentArea);
OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
Console.WriteLine(result.Text);
}Imports IronOcr
Imports System.Drawing
Private ocr = New IronTesseract()
Using input = New OcrInput()
Dim contentArea = New Rectangle(x:= 252, y:= 282, width:= 148, height:= 47)
input.LoadImage("CarPlate.jpeg", contentArea)
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)
Console.WriteLine(result.Text)
End Using
Análise do código:
- Inicialização:
var ocr = new IronTesseract();cria uma nova instância da classeIronTesseract, que é responsável por executar as operações OCR. - Entrada OCR: A declaração
using (var input = new OcrInput())cria um novo objetoOcrInput, que será usado para carregar e processar a imagem para OCR. - Definindo a Área de Interesse:
var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);define uma área retangular (contentArea) dentro da imagem. Este retângulo especifica as coordenadas e dimensões (largura e altura) onde se espera que a placa de licença esteja localizada. - Carregando a Imagem:
input.LoadImage("CarPlate.jpeg", contentArea);carrega o arquivo de imagem especificado ("CarPlate.jpeg") e focaliza o retângulo definido (contentArea) para limitar o processamento OCR a essa região específica. - Lendo a Placa:
OcrLicensePlateResult result = ocr.ReadLicensePlate(input);invoca o métodoReadLicensePlate, que analisa a imagem de entrada em busca de caracteres de placa e retorna um objetoOcrLicensePlateResultcontendo o texto extraído. - Saída:
Console.WriteLine(result.Text);imprime o texto reconhecido da placa no console.
Reconhecimento Automático de Números de Placa
O IronOCR aproveita o OpenCV para identificar regiões de texto dentro de imagens, empregando várias técnicas de processamento de imagem. Esta funcionalidade permite que programas detectem placas de licença localizando áreas de texto na imagem e, em seguida, utilizando o Tesseract para ler essas regiões.
Instalação
Para habilitar o modelo de detecção de placa de licença, instale o pacote necessário via o Console do Gerenciador de Pacotes:
Exemplo usando detecção automática de regiões para placas de licença:
var ocr = new IronTesseract();
using (var input = new OcrImageInput("CarPlate.jpeg"))
{
input.FindTextRegion();
OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
Console.WriteLine(result.Text);
}Dim ocr = New IronTesseract()
Using input = New OcrImageInput("CarPlate.jpeg")
input.FindTextRegion()
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)
Console.WriteLine(result.Text)
End Using
Análise do código:
- Inicialização: Uma instância da classe
IronTesseracté criada, que será usada para reconhecimento óptico de caracteres (OCR) com o motor Tesseract. - Entrada de Imagem: Um novo objeto
OcrImageInputé instanciado com o arquivo de imagem especificado ("CarPlate.jpeg"). Este objeto servirá como entrada para o processo OCR e está encapsulado em uma declaraçãousingpara garantir o gerenciamento adequado de recursos. - Detecção de Região de Texto: O método
FindTextRegion()é chamado no objetoinput. Este método emprega técnicas de visão computacional para identificar automaticamente áreas dentro da imagem que provavelmente contêm texto, especificamente direcionando a placa de licença. - Reconhecimento de Placas: O método
ReadLicensePlateé invocado para analisar as regiões de texto detectadas e extrair o número da placa. O resultado é armazenado em um objetoOcrLicensePlateResult, que contém o texto reconhecido e quaisquer metadados associados. - Saída: O texto da placa de licença detectada é impresso no console, permitindo que o usuário veja o número da placa extraído.
Licenciamento IronOCR
Para aqueles que querem experimentar o IronOCR por conta própria, o IronOCR oferece uma versão de teste gratuita que lhe dá acesso à gama completa de ferramentas que ele tem a oferecer, permitindo que você as experimente em seus próprios projetos antes de comprar uma licença. Uma vez que seu teste gratuito termine, o licenciamento do IronOCR começa a partir de apenas $999 para a licença lite. Ele também fornece complementos opcionais por um custo adicional, como cobertura de redistribuição isenta de royalties e suporte contínuo e atualizações de produto.
Além disso, se você descobrir que precisa usar mais produtos da Iron Software além do IronOCR, como o IronPDF para suas tarefas relacionadas a PDFs ou o IronWord para trabalhar com documentos do Word, a Iron Software também oferece o Iron Suite, que é uma ótima maneira de ter acesso a toda a gama de ferramentas por um ótimo preço.
Conclusão
Neste guia, exploramos como construir um sistema confiável de reconhecimento de placa de licença em C# usando o IronOCR. Com suas poderosas capacidades de extração de texto e integração com o OpenCV, o IronOCR oferece uma solução eficiente e fácil de usar para aplicações que exigem reconhecimento preciso de texto a partir de imagens de veículos. Desde o pré-processamento da imagem até a configuração de regiões específicas de detecção, o IronOCR simplifica o processo OCR com ferramentas voltadas para imagens ruidosas ou complexas, como placas de licença em imagens de tráfego e vigilância.
Seja desenvolvendo para monitoramento de tráfego, aplicação de estacionamento, ou qualquer aplicação que exija reconhecimento automático de placa de licença, o IronOCR oferece uma biblioteca abrangente que se integra perfeitamente aos ambientes .NET. Seguindo estas etapas, você estará equipado para implantar soluções alimentadas por OCR que melhoram a eficiência e a precisão em vários cenários do mundo real. Com recursos adicionais, como seleção de regiões e redução de ruído, o IronOCR garante que suas tarefas de reconhecimento de placa de licença sejam otimizadas para os melhores resultados possíveis.

Artigos relacionados

