Como Converter Imagem em Texto de Placas de Veículos com IronOCR em C
O método ReadLicensePlate do IronOCR extrai automaticamente os números de placa de imagens de veículos usando reconhecimento óptico de caracteres avançado. Essa chamada de método único pode converter imagem em texto de placas 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.
-
Instale IronOCR com o Gerenciador de Pacotes NuGet
PM > Install-Package IronOcr -
Copie e execute este trecho de código.
OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg")); -
Implante para testar em seu ambiente de produção.
Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita
- Baixe a biblioteca C# para leitura de placas de veículos.
- Importe a imagem da placa para processamento.
- Certifique-se de que o documento contenha apenas a imagem da placa do veículo, sem cabeçalhos ou rodapés.
- Utilize o método `ReadLicensePlate` para extrair dados da imagem.
- Acesse a propriedade **`OcrLicensePlateResult`** para visualizar e manipular os dados da placa extraídos.
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 umOcrInputcomo parâmetro para a entrada. Este método é mais otimizado para placas do que o equivalente padrãoReadda 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.
- 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?

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);
Imports Microsoft.VisualBasic
Imports IronOcr
Imports System
Private ocr = New IronTesseract()
ocr.Configuration.WhiteListCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"
Dim inputLicensePlate = New OcrInput()
inputLicensePlate.LoadImage("plate.jpeg")
' Read license plate
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(inputLicensePlate)
' Retrieve license plate number and confidence value
Dim output As String = $"{result.Text}" & vbLf & "Result Confidence: {result.Confidence}"
Console.WriteLine(output)
Que resultados posso esperar?

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?

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);
Imports Microsoft.VisualBasic
Imports IronOcr
Imports IronSoftware.Drawing
Imports System
Private ocr = New IronTesseract()
Private inputLicensePlate = New OcrInput()
inputLicensePlate.LoadImage("car_license.jpg")
' Read license plate
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(inputLicensePlate)
' Retrieve license plate coordinates
Dim rectangle As RectangleF = result.Licenseplate
' Write license plate value and coordinates in a string
Dim output As String = $"License Plate Number:" & vbLf & "{result.Text}" & vbLf & vbLf & $"License Plate Area_" & vbLf & $"Starting X: {rectangle.X}" & vbLf & $"Starting Y: {rectangle.Y}" & vbLf & $"Width: {rectangle.Width}" & vbLf & $"Height: {rectangle.Height}"
Console.WriteLine(output)
Que informações o resultado inclui?

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})");
}
}
Imports IronOcr
Imports System.IO
Imports System.Threading.Tasks
Public Async Function ProcessMultipleLicensePlates(imagePaths As String()) As Task
Dim ocr As New IronTesseract()
' Configure for optimal performance
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock
Dim tasks = imagePaths.Select(Async Function(path)
Using input As New OcrInput()
input.LoadImage(path)
Dim result = Await Task.Run(Function() ocr.ReadLicensePlate(input))
Return New With {
.FilePath = path,
.PlateNumber = result.Text,
.Confidence = result.Confidence
}
End Using
End Function)
Dim results = Await Task.WhenAll(tasks)
' Process results
For Each result In results
Console.WriteLine($"File: {result.FilePath}")
Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Confidence:P})")
Next
End Function
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);
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As 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
Dim result = ocr.ReadLicensePlate(input)
End Using
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);
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As 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
Dim result = ocr.ReadLicensePlate(input)
End Using
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);
Imports IronOcr
Dim ocr As New IronTesseract()
' Subscribe to progress events
AddHandler ocr.OcrProgress, Sub(sender, e)
Console.WriteLine($"Processing: {e.ProgressPercent}% complete")
End Sub
Using input As New OcrInput()
input.LoadImage("large_parking_lot.jpg")
Dim result = ocr.ReadLicensePlate(input)
End Using
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
- Processamento de cheques MICR para aplicações bancárias
- Digitalização geral de documentos para projetos de digitalização
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.

