Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
En este tutorial, aprenderemos sobre el reconocimiento programático de matrículas. Tomaremos algunas imágenes de matrículas de muestra y extraeremos el número de matrícula. Desarrollaremos un programa en C# y .NET para realizar el reconocimiento automático de matrículas. Este tutorial es simple y fácil por lo que es perfecto incluso para un programador principiante de C#.
Hay muchas bibliotecas disponibles para realizar OCR. Algunas son de pago, otras son difíciles de usar y otras no son eficaces ni precisas. Puede resultar muy difícil encontrar una biblioteca que sea gratuita, eficaz, fácil de usar y proporcione resultados precisos. Encontré y utilicé IronOCR; es gratuito para el desarrollo, ofrece un mes de prueba gratuita para uso comercial, es fácil de usar, es eficiente, proporciona multi-threading, soporta más de 150 idiomas, y además de todo esto también proporciona una mayor precisión. Realizará todas las tareas, desde la detección de matrículas hasta la obtención de números de matrícula.
IronOCR es una librería desarrollada y mantenida por Iron Software que ayuda a los Ingenieros de Software C# a realizar OCR, Escaneo de Códigos de Barras y Extracción de Texto en proyectos .NET.
Deskew
, Denoise
, Binarize
, Enhance Resolution
, Dilate
, y muchos más.Exportación de PDF con función de búsquedaHTML y texto de contenido de imágenes.
Vamos a desarrollar una aplicación de demostración para leer números de matrícula.
El primer paso es crear un proyecto de Visual Studio.
Abre Visual Studio. Haga clic en "Crear nuevo proyecto" y seleccione Plantilla de proyecto. (He seleccionado la plantilla Aplicación de consola para esta aplicación de demostración, pero puede seleccionar cualquiera según sus necesidades o preferencias). Haga clic en el botón "Siguiente" y asigne un nombre al proyecto (Yo lo he llamado "License plate OCR", pero puedes ponerle cualquier nombre). Haga clic en el botón "Siguiente" y seleccione su .NET Framework de destino. Por último, haga clic en el botón "Crear" para crear el proyecto. El proyecto se creará como se muestra a continuación.
**Creación de un proyecto de Visual Studio para nuestro proyecto de reconocimiento óptico de matrículas. Ahora, necesitamos instalar la librería IronOCR para usarla en nuestro proyecto. La forma más sencilla es instalarlo a través del gestor de paquetes NuGet.
Haga clic en Herramientas en la barra de menú superior y seleccione Administrador de paquetes NuGet > Administrar paquetes NuGet para la solución, como se muestra a continuación.
Localización de la interfaz de usuario del gestor de paquetes NuGet en Visual Studio
Aparecerá la siguiente ventana.
La interfaz de usuario del gestor de paquetes NuGet en Visual Studio.
Haga clic en Examinar y busque IronOCR. Seleccione el paquete IronOCR y haga clic en el botón Instalar, como se muestra a continuación.
Instale la biblioteca IronOCR en la interfaz de usuario del gestor de paquetes NuGet.
La librería IronOCR estará instalada y lista para su uso.
Escribamos un programa para leer la matrícula. IronOCR es un motor OCR de Tesseract que se utiliza para extraer texto de una imagen, por lo que si necesitamos implementar visión por ordenador para detectar vehículos, es posible que tengamos que utilizar algunas otras bibliotecas de aprendizaje automático. IronOCR es compatible con OpenCV, un modelo de detección de código abierto líder en el mercado. IronOCR puede utilizarse con OpenCV para realizar la detección de objetos, como la detección de coches o de matrículas.
Leeremos la siguiente matrícula:
Imagen de una matrícula con los números de matrícula claramente visibles
Ahora, escribiremos el código.
Añade el siguiente espacio de nombres:
using IronOcr;
using IronOcr;
Imports IronOcr
A continuación, añada el siguiente código:
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
input.DeNoise(); // fixes digital noise and poor scanning
input.ToGrayScale();
var result = ocr.Read(Input);
Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
input.DeNoise(); // fixes digital noise and poor scanning
input.ToGrayScale();
var result = ocr.Read(Input);
Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\Liscence Plate\plate3.jpg")
input.DeNoise() ' fixes digital noise and poor scanning
input.ToGrayScale()
Dim result = ocr.Read(Input)
Console.WriteLine(result.Text)
End Using
Esto realiza lo siguiente:
IronTesseract
con la configuración predeterminada.OcrInput
rellenado con un archivo de imagen de entrada.DeNoise
que elimina el ruido digital. Este filtro sólo debe utilizarse cuando se espera ruido; en nuestro caso, los vídeos o imágenes de CCTV suelen estar llenos de ruido.OcrInput
mediante el método Read
, que devuelve un objeto OcrResult
objeto. OcrInput
es el tipo de entrada preferido porque permite OCR de documentos de varias páginasy permite mejorar las imágenes antes de leerlas para obtener resultados más rápidos y precisos.`resultado.Texto devuelve todo el contenido extraído de la matrícula.
Podemos ver que se extrae el número de matrícula correcto de la matrícula detectada.
**IronOCR detecta y extrae correctamente los números de la imagen de la matrícula.
Supongamos que no tenemos matrículas separadas, sino una foto del coche completo. Ahora, tenemos que escanear el área de la matrícula y realizar el reconocimiento de texto.
Podemos utilizar un System.Drawing.Rectangle
para especificar una región en la que leeremos una matrícula. La unidad de medida es siempre el píxel.
Utilizaremos el siguiente archivo de imagen de ejemplo.
**Imagen completa de un coche con la matrícula visible.
Veremos que esto proporciona mejoras en la velocidad, además de evitar la lectura de texto innecesario.
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// a 41% improvement on speed
var contentArea = new CropRectangle(x: 365, y: 240, height: 80, width: 29);
input.AddImage(@"D:\Liscence Plate\plate1.jpg", contentArea);
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// a 41% improvement on speed
var contentArea = new CropRectangle(x: 365, y: 240, height: 80, width: 29);
input.AddImage(@"D:\Liscence Plate\plate1.jpg", contentArea);
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput()
' a 41% improvement on speed
Dim contentArea = New CropRectangle(x:= 365, y:= 240, height:= 80, width:= 29)
input.AddImage("D:\Liscence Plate\plate1.jpg", contentArea)
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Esto supone un aumento de la velocidad del 41%** y nos permite ser específicos. Especificamos las coordenadas iniciales de la región (x e y) y la anchura y altura de la región de detección.
Áreas de contenido (Recorte OCR) también es compatible con la lectura de archivos PDF.
IronOCR utiliza OpenCV para utilizar la visión por ordenador para detectar las áreas donde existe texto en una imagen. Realiza técnicas de procesamiento de imágenes y utiliza un modelo de detección para detectar matrículas. El uso de la visión por ordenador en IronOCR determinará dónde existen regiones de texto y, a continuación, utilizará Tesseract para intentar leer esas regiones.
Necesitamos instalar IronOcr.ComputerVision.Windows
para utilizar el modelo de detección de matrículas.
Utilice el siguiente comando en Package Manager Console.
PM> Install-Package IronOcr.ComputerVision.Windows
Esto proporcionará los ensamblajes necesarios para utilizar IronOCR Computer Vision con nuestro archivo de modelo.
El siguiente código de ejemplo detectará automáticamente la matrícula del coche.
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate1.jpg"))
{
input.FindTextRegion();
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate1.jpg"))
{
input.FindTextRegion();
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\Liscence Plate\plate1.jpg")
input.FindTextRegion()
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Uso de BuscarRegiónDeTexto utilizará Computer Vision para detectar regiones que contengan matrículas en cada imagen de un objeto OcrInput
.
En este tutorial, hemos aprendido a utilizar IronOCR y hemos desarrollado un sencillo programa para leer la matrícula de un coche. Hemos visto que IronOCR nos permite leer texto a partir de imágenes borrosas o de baja resolución, es eficaz, proporciona una gran precisión, admite más de 127 idiomas con total exactitud, es gratuito para el desarrollo y no tiene restricciones para la producción.
En resumen, IronOCR proporciona:
Compatible con .NET 6, 5, Core, Standard, Framework
IronOCR forma parte del Iron Suite. Esta suite contiene otras bibliotecas muy útiles como IronPDF para leer y escribir PDF, IronXL para manipular archivos Excel, y IronWebScrapper para extraer datos de sitios web. Puede comprar Iron Suite por el precio de dos bibliotecas licencias.
9 productos API .NET para sus documentos de oficina