Ir para o conteúdo do rodapé
UTILIZANDO O IRONOCR
Como realizar OCR em placas de veículos em C#

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

  1. Instalar a Biblioteca C# para usar o reconhecimento de placas de licença
  2. Importe a imagem da placa para uma nova instância de OcrImageInput.
  3. Aplicar filtros de imagem para melhorar a extração de texto em C#.
  4. Melhorar a velocidade de reconhecimento especificando a região da placa de licença na foto.
  5. Imprima o texto extraído usando uma instância de 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".

Tipo de Projeto do Visual Studio

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

Nome e Localização do Projeto

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

Projeto Criado

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:

Install-Package IronOcr

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:

Install-Package IronOcr.ComputerVision.Windows

Certifique-se de ter a extensão IronOcr.Extensions.AdvancedScan instalada para que você possa utilizar seu poderoso método ReadLicensePlate:

Install-Package IronOcr.Extensions.AdvancedScan

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:

Gerenciador de Pacotes do NuGet

Configurando o Código

Finalmente, devemos adicionar os imports necessários e declarações de using no topo do nosso código:

using IronOcr;
using IronOcr;
$vbLabelText   $csharpLabel

Lendo 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 Placa

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);
}
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);
}
$vbLabelText   $csharpLabel

Saída do OCR

Análise do código:

  • Inicialização: var ocr = new IronTesseract(); cria uma nova instância da classe IronTesseract, que fornece métodos para Reconhecimento Óptico de Caracteres (OCR).

  • Entrada de Imagem: A declaração using cria um novo objeto OcrImageInput com 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 mecanismo de 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 Placa: A linha OcrLicensePlateResult result = ocr.ReadLicensePlate(input); usa o método ReadLicensePlate para analisar a imagem processada e extrair qualquer informação de placa que detectar, armazenando os resultados em um objeto OcrLicensePlateResult.

  • Armazenamento de Saída: O texto da placa é armazenado na variável string output acessando result.Text, que contém o texto reconhecido da placa.

  • Saída no Console: Finalmente, Console.WriteLine(output); imprime o texto da placa extraído 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:

Carro com Placa

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);
}
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);
}
$vbLabelText   $csharpLabel

Saída Focada do OCR

Análise do código:

  • Inicialização: var ocr = new IronTesseract(); cria uma nova instância da classe IronTesseract, que é responsável por executar as operações de OCR.
  • Entrada de OCR: A declaração using (var input = new OcrInput()) cria um novo objeto OcrInput, 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 foca no retângulo definido (contentArea) para limitar o processamento de OCR a essa região específica.
  • Lendo a Placa: OcrLicensePlateResult result = ocr.ReadLicensePlate(input); invoca o método ReadLicensePlate, que analisa a imagem de entrada em busca de caracteres de placa e retorna um objeto OcrLicensePlateResult contendo 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);
}
var ocr = new IronTesseract();

using (var input = new OcrImageInput("CarPlate.jpeg"))
{
    input.FindTextRegion();
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
$vbLabelText   $csharpLabel

Saída Automática do OCR

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 mecanismo 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 de OCR e está incluído em uma declaração using para garantir o gerenciamento adequado de recursos.
  • Detecção de Região de Texto: O método FindTextRegion() é chamado no objeto input. 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 Placa: 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 objeto OcrLicensePlateResult, 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

IronOCR License

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

Perguntas frequentes

Como posso usar OCR para identificar números de placas de veículos em C#?

Você pode usar o IronOCR para identificar placas de veículos em C# utilizando a classe IronTesseract para criar uma instância de OCR, carregar a imagem contendo a placa, aplicar filtros de pré-processamento como redução de ruído e extrair o texto usando o método ReadLicensePlate .

Quais são os benefícios de usar OCR para reconhecimento de placas de veículos?

O uso de OCR para reconhecimento de placas de veículos automatiza o processo de extração de texto, oferecendo alta precisão e eficiência. O IronOCR aprimora isso ao fornecer suporte a múltiplos formatos de imagem e integração com visão computacional, tornando-o ideal para aplicações como gerenciamento de tráfego e aplicação da lei.

Como posso lidar com imagens ruidosas ou de baixa qualidade no processamento OCR?

O IronOCR oferece recursos avançados de pré-processamento de imagens, como redução automática de ruído e conversão para escala de cinza, que melhoram a precisão da extração de texto mesmo ao lidar com imagens ruidosas ou de baixa qualidade.

É possível concentrar o processamento OCR em regiões específicas de uma imagem?

Sim, o IronOCR permite especificar regiões retangulares de interesse dentro de uma imagem para concentrar o processamento OCR, melhorando tanto a velocidade quanto a precisão da extração de texto de áreas como placas de veículos.

Como posso começar a usar OCR em um projeto do Visual Studio?

Para começar a usar OCR em um projeto do Visual Studio, crie um novo Aplicativo de Console, instale o pacote IronOCR via NuGet e implemente a lógica de OCR usando as classes e métodos do IronOCR. Essa configuração permite que você execute tarefas de OCR facilmente em seu aplicativo.

Quais recursos o IronOCR oferece para reconhecimento de placas de veículos?

O IronOCR oferece alta precisão de OCR, integração com OpenCV para tarefas aprimoradas de visão computacional, filtros de pré-processamento avançados e suporte para múltiplos formatos de imagem e PDF, tornando-se uma ferramenta versátil para reconhecimento de placas de veículos.

Como o IronOCR se integra às tarefas de visão computacional?

O IronOCR integra-se com o OpenCV para executar diversas tarefas de visão computacional, como a detecção automática de regiões de texto, aprimorando o processo de OCR para aplicações como o reconhecimento de placas de veículos.

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

O IronOCR oferece um período de avaliação gratuito, além de diversas opções de licenciamento, a partir de uma licença Lite. Complementos adicionais e o pacote Iron Suite estão disponíveis para usuários que buscam funcionalidades expandidas em diferentes aplicações.

A tecnologia OCR pode ser aplicada a imagens completas de veículos?

Sim, o IronOCR pode ser usado com imagens de veículos inteiros. Ao especificar a região da placa, você pode concentrar o processamento de OCR na área desejada, evitando a extração desnecessária de texto e melhorando a eficiência do processamento.

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