Como ler placas de veículos em C# OCR

Como ler placas de veículos em C# com IronOCR

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

O método ReadLicensePlate do IronOCR extrai automaticamente os números de placa de imagens de veículos usando tecnologia avançada de OCR. Essa chamada de método único pode processar placas de veículos com alta precisão, retornando tanto o texto da placa quanto a pontuação de confiança para sistemas automatizados de gerenciamento de veículos.

Ao lidar com um grande volume de imagens de veículos, a leitura manual de placas é demorada e propensa a erros humanos. Automatizar esse processo com uma ferramenta como o IronOCR oferece uma solução mais eficiente e precisa. O método ReadLicensePlate do IronOCR pode extrair programaticamente os números de placa de imagens, economizando tempo considerável enquanto melhora a precisão dos dados.

Neste guia, demonstraremos como usar o IronOCR para reconhecimento de placas de veículos, apresentando exemplos e configurações personalizáveis ​​que tornam o processo simples e eficiente. Ao aproveitar esses métodos, os desenvolvedores podem automatizar a leitura de placas de veículos, tornando tarefas como gerenciamento de estacionamento, cobrança de pedágio ou vigilância de segurança mais eficientes.

Para usar esta função, você deve também instalar o pacote IronOcr.Extension.AdvancedScan.

Início Rápido: Extraia a Placa do Veículo Instantaneamente

Com uma única chamada de método usando ReadLicensePlate do IronOCR, você pode extrair programaticamente o texto da placa de qualquer imagem. Está pronto para usar — ​​basta carregar uma imagem, chamar o método e obter imediatamente o número da placa e o nível de confiança.

  1. Instale IronOCR com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronOcr
  2. Copie e execute este trecho de código.

    OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg"));
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita

    arrow pointer

Como faço para ler uma placa de carro em C#?

Para ler uma placa de veículo no IronOCR, seguimos os seguintes passos:

  • Utilizamos o método ReadLicensePlate, que leva um OcrInput como parâmetro para a entrada. Este método é mais otimizado para placas do que o equivalente padrão Read da biblioteca. Opcionalmente, podemos configurar o IronOCR para incluir na lista de permissões caracteres específicos que podem existir em uma placa de veículo, para acelerar o processamento do número da placa.

Observe

  • Atualmente, o método funciona apenas para os alfabetos inglês, chinês, japonês, coreano e latino.
  • O uso da verificação avançada no .NET Framework exige que o projeto seja executado em arquitetura x64.
    )}]

Qual é a aparência da placa de veículo inserida?

Placa da Califórnia mostrando '8TRS777' - exemplo para demonstração de leitura de placa

Como configuro o OCR para placas de veículos?

:path=/static-assets/ocr/content-code-examples/how-to/read-license-plate-read-license-plate.cs
using IronOcr;
using System;

var ocr = new IronTesseract();
ocr.Configuration.WhiteListCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";

using var inputLicensePlate = new OcrInput();
inputLicensePlate.LoadImage("plate.jpeg");

// Read license plate
OcrLicensePlateResult result = ocr.ReadLicensePlate(inputLicensePlate);

// Retrieve license plate number and confidence value
string output = $"{result.Text}\nResult Confidence: {result.Confidence}";

Console.WriteLine(output);
$vbLabelText   $csharpLabel

Que resultados posso esperar?

Console de depuração mostrando resultados de OCR da placa: estado da Califórnia, placa 8TRS777, confiança 95,87%

O código demonstra como importar uma imagem como um OcrInput e usá-la com o método ReadLicensePlate para extrair o texto da placa. O resultado mostra o texto extraído que corresponde à placa do veículo exibida na imagem de entrada, juntamente com um nível de confiança que indica a precisão do OCR.

Texto : O texto extraído da entrada OCR.

Confiança: Uma propriedade double que indica a confiança estatística de precisão de uma média de cada caractere, sendo um o mais alto e 0 o mais baixo.

Para um controle mais preciso sobre o processo de OCR, você pode explorar as opções de configuração avançadas para ajustar as configurações de reconhecimento de caracteres.


Como posso extrair placas de veículos a partir de imagens de carros?

O método também funciona bem com imagens que contenham um carro com placa. O código é o mesmo que o anterior, apenas com a imagem de entrada alterada. Você também pode extrair as coordenadas de pixel da área onde a placa do veículo está localizada na imagem.

Que tipo de imagens de carros funcionam melhor?

Carro Skoda cinza escuro mostrando placa de Maharashtra MH 20 EE 7602 estacionado em pavimento de tijolos

Para obter os melhores resultados, certifique-se de que as imagens do seu carro tenham:

  • Visibilidade clara da placa do veículo
  • Boas condições de iluminação (evitar reflexos ou sombras)
  • Distorção angular mínima
  • Resolução adequada (considere ajustar as configurações de DPI para imagens de baixa resolução)

Como obtenho as coordenadas de localização da placa do veículo?

:path=/static-assets/ocr/content-code-examples/how-to/read-license-plate-read-from-car.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

var ocr = new IronTesseract();
using var inputLicensePlate = new OcrInput();
inputLicensePlate.LoadImage("car_license.jpg");

// Read license plate
OcrLicensePlateResult result = ocr.ReadLicensePlate(inputLicensePlate);

// Retrieve license plate coordinates
RectangleF rectangle = result.Licenseplate;

// Write license plate value and coordinates in a string
string output = $"License Plate Number:\n{result.Text}\n\n"
              + $"License Plate Area_\n"
              + $"Starting X: {rectangle.X}\n"
              + $"Starting Y: {rectangle.Y}\n"
              + $"Width: {rectangle.Width}\n"
              + $"Height: {rectangle.Height}";

Console.WriteLine(output);
$vbLabelText   $csharpLabel

Que informações o resultado inclui?

Output de depuração do Visual Studio mostrando placa detectada MH20EE7602 com coordenadas e dimensões da caixa delimitadora

O exemplo mostra como o método ReadLicensePlate pode ser aplicado a uma imagem de um carro. O método também retornará as coordenadas retangulares de onde a placa do veículo está localizada na imagem.

Este método é otimizado para encontrar apenas placas de veículos individuais e é capaz de procurá-las em imagens de banco de imagens.

Como faço para processar várias placas de veículos?

Ao lidar com várias imagens de veículos, você pode processá-las de forma eficiente usando operações em lote:

using IronOcr;
using System.IO;
using System.Threading.Tasks;

public async Task ProcessMultipleLicensePlates(string[] imagePaths)
{
    var ocr = new IronTesseract();

    // Configure for optimal performance
    ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;

    var tasks = imagePaths.Select(async path => 
    {
        using var input = new OcrInput();
        input.LoadImage(path);

        var result = await Task.Run(() => ocr.ReadLicensePlate(input));

        return new { 
            FilePath = path, 
            PlateNumber = result.Text, 
            Confidence = result.Confidence 
        };
    });

    var results = await Task.WhenAll(tasks);

    // Process results
    foreach (var result in results)
    {
        Console.WriteLine($"File: {result.FilePath}");
        Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Confidence:P})");
    }
}
using IronOcr;
using System.IO;
using System.Threading.Tasks;

public async Task ProcessMultipleLicensePlates(string[] imagePaths)
{
    var ocr = new IronTesseract();

    // Configure for optimal performance
    ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;

    var tasks = imagePaths.Select(async path => 
    {
        using var input = new OcrInput();
        input.LoadImage(path);

        var result = await Task.Run(() => ocr.ReadLicensePlate(input));

        return new { 
            FilePath = path, 
            PlateNumber = result.Text, 
            Confidence = result.Confidence 
        };
    });

    var results = await Task.WhenAll(tasks);

    // Process results
    foreach (var result in results)
    {
        Console.WriteLine($"File: {result.FilePath}");
        Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Confidence:P})");
    }
}
$vbLabelText   $csharpLabel

Para processamento em larga escala, considere implementar recursos de multithreading para maximizar o desempenho.

Como posso melhorar a precisão do reconhecimento de placas de veículos?

Para melhorar a precisão da detecção de placas de veículos, considere estas técnicas de otimização:

Aplicar filtros de pré-processamento de imagem

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();

// Load and preprocess the image
input.LoadImage("blurry_plate.jpg");
input.Deskew();  // Correct image rotation
input.DeNoise(); // Remove background noise
input.EnhanceResolution(225); // Upscale for better clarity
input.Sharpen(); // Enhance edge definition

var result = ocr.ReadLicensePlate(input);
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();

// Load and preprocess the image
input.LoadImage("blurry_plate.jpg");
input.Deskew();  // Correct image rotation
input.DeNoise(); // Remove background noise
input.EnhanceResolution(225); // Upscale for better clarity
input.Sharpen(); // Enhance edge definition

var result = ocr.ReadLicensePlate(input);
$vbLabelText   $csharpLabel

Saiba mais sobre os filtros de imagem disponíveis e as técnicas de correção de imagem para otimizar suas imagens de entrada.

Lidar com diferentes condições de iluminação

Para situações de iluminação desafiadoras, aplique as correções apropriadas:

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();

input.LoadImage("dark_plate.jpg");
input.Contrast(1.5); // Increase contrast
input.Brightness(1.2); // Adjust brightness
input.Binarize(); // Convert to black and white for clarity

var result = ocr.ReadLicensePlate(input);
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();

input.LoadImage("dark_plate.jpg");
input.Contrast(1.5); // Increase contrast
input.Brightness(1.2); // Adjust brightness
input.Binarize(); // Convert to black and white for clarity

var result = ocr.ReadLicensePlate(input);
$vbLabelText   $csharpLabel

Como posso monitorar o desempenho do OCR?

Ao processar grandes lotes de placas de veículos, o acompanhamento do progresso ajuda a gerenciar os recursos do sistema:

using IronOcr;

var ocr = new IronTesseract();

// Subscribe to progress events
ocr.OcrProgress += (sender, e) => 
{
    Console.WriteLine($"Processing: {e.ProgressPercent}% complete");
};

using var input = new OcrInput();
input.LoadImage("large_parking_lot.jpg");

var result = ocr.ReadLicensePlate(input);
using IronOcr;

var ocr = new IronTesseract();

// Subscribe to progress events
ocr.OcrProgress += (sender, e) => 
{
    Console.WriteLine($"Processing: {e.ProgressPercent}% complete");
};

using var input = new OcrInput();
input.LoadImage("large_parking_lot.jpg");

var result = ocr.ReadLicensePlate(input);
$vbLabelText   $csharpLabel

Para um monitoramento de desempenho detalhado, explore os recursos de acompanhamento de progresso do IronOCR.

Como isso se compara a outros métodos de leitura de documentos?

As capacidades especializadas de leitura de documentos do IronOCR vão além das placas de veículos. A mesma tecnologia de visão computacional que permite a detecção de placas de veículos pode ser aplicada a:

Leitura de passaportes para viagens e verificação de identidade

Quais são os casos de uso mais comuns?

O reconhecimento de placas de veículos com IronOCR possibilita diversas aplicações:

  • Gestão de estacionamento : Automatize o registo de entrada/saída e o processamento de pagamentos.
  • Cobrança de pedágio : Agilizar a identificação de veículos nas cabines de pedágio
  • Vigilância de segurança : Rastreamento da movimentação de veículos em áreas restritas.
  • Gestão de Frota : Monitorar os veículos e a logística da empresa.
  • Forças da lei : Identificar rapidamente veículos de interesse

Cada caso de uso se beneficia da alta precisão do IronOCR e da capacidade de processar imagens em tempo real, tornando-o adequado tanto para processamento em lote quanto para aplicações em tempo real.

Perguntas frequentes

Como faço para ler placas de veículos a partir de imagens em C#?

Você pode ler placas de veículos em C# usando o método `ReadLicensePlate` do IronOCR. Basta criar uma instância de `IronTesseract` e chamar `ReadLicensePlate` com um `OcrInput` contendo a imagem da placa. O método retorna um `OcrLicensePlateResult` com o texto extraído da placa e o nível de confiança.

Que pacote preciso instalar para o reconhecimento de placas de veículos?

Para usar a funcionalidade de reconhecimento de placas de veículos no IronOCR, você precisa instalar tanto o pacote principal do IronOCR quanto o pacote IronOcr.Extension.AdvancedScan do NuGet. A extensão AdvancedScan fornece o método especializado ReadLicensePlate.

Posso extrair placas de veículos com apenas uma linha de código?

Sim, o IronOCR permite extrair o texto da placa do veículo com uma única linha de código: `OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg"));` Isso retorna imediatamente o número da placa e o nível de confiança.

Quais idiomas são suportados para o reconhecimento de placas de veículos?

O método ReadLicensePlate do IronOCR atualmente suporta placas de veículos com alfabetos em inglês, chinês, japonês, coreano e latino. O método é otimizado especificamente para esses conjuntos de caracteres.

Como posso melhorar a precisão da leitura de placas de veículos?

Você pode melhorar a precisão do IronOCR adicionando caracteres específicos que aparecem em placas de veículos a uma lista de permissões, garantindo que a imagem contenha apenas a placa, sem cabeçalhos ou rodapés, e usando imagens de alta qualidade. O método ReadLicensePlate já está otimizado especificamente para reconhecimento de placas de veículos.

Quais são os requisitos de sistema para reconhecimento de placas de veículos no .NET Framework?

Ao usar os recursos avançados de digitalização do IronOCR, incluindo o ReadLicensePlate no .NET Framework, seu projeto deve ser executado em arquitetura x64. Esse requisito garante o desempenho ideal para a funcionalidade de reconhecimento de placas de veículos.

Que informações o sistema de reconhecimento de placas retorna?

O método ReadLicensePlate do IronOCR retorna um objeto OcrLicensePlateResult contendo o texto da placa extraído e uma pontuação de confiança. Isso permite recuperar o número da placa e avaliar a confiabilidade do resultado do OCR.

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.