Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
En este tutorial, aprenderemos a extraer subtítulos codificados de archivos de vídeo. Tomaremos un archivo de vídeo de muestra y extraeremos los subtítulos codificados en un archivo txt. Desarrollaremos un programa C# .NET que extraerá los subtítulos codificados utilizando el proceso OCR. Voy a mantener este tutorial simple y fácil para que incluso un principiante C # programador puede entenderlo.
Necesitamos un reconocimiento óptico de caracteres eficaz(OCR) que puede procesar el vídeo y obtener archivos de subtítulos independientemente del idioma de los subtítulos.
Hay muchas bibliotecas disponibles que proporcionan resultados de OCR. Algunas son de pago, otras son difíciles de usar y otras no son eficaces ni precisas, por lo que es muy difícil encontrar una biblioteca que sea gratuita, eficaz, fácil de usar y proporcione resultados precisos.
IronOCR, que es gratuito para el desarrollo, ofrece una prueba gratuita de un mes para fines comerciales. Es compatible con más de 150 idiomas y ofrece mayor precisión que la mayoría de las bibliotecas de OCR disponibles. También es eficaz y fácil de usar. Utilizaremos esta biblioteca para nuestra demostración.
OcrInput
instanciaIronOCR 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.
Entre las características de IronOCR se incluyen:
Exportación de PDF con opción de búsqueda, exportación de hOCR / HTML y texto con contenido de imagen.
Vamos a desarrollar una aplicación de demostración para leer números de matrícula.
El primer paso es crear un nuevo proyecto.
Abre Visual Studio. Haga clic en Crear Nuevo Proyecto, y seleccione la plantilla de proyecto Aplicación de Consola.
Haga clic en el botón Siguiente y asigne un nombre al proyecto(Yo lo he llamado "OCR Subtitles", usted puede ponerle el nombre que desee.).
Haga clic en el botón Siguiente y seleccione el marco de trabajo 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 nuevo proyecto en Visual Studio
Ahora, necesitamos instalar la librería IronOCR para usarla en nuestro proyecto. La forma más sencilla es instalarlo a través de NuGet Package Manager for Solution.
Haga clic en Herramientas en la barra de menú superior y seleccione Administrador de paquetes NuGet > Administrar paquetes NuGet para solución, como se muestra a continuación.
Instalación de IronOCR en Visual Studio
Aparecerá la siguiente ventana.
Interfaz de usuario del gestor de paquetes NuGet de Visual Studio
Haga clic en Examinar y busque IronOCR. Seleccione IronOCR Package y haga clic en el botón Install, como se muestra a continuación.
Búsqueda de 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 extraer subtítulos codificados.
Vamos a utilizar la siguiente captura de pantalla para extraer subtítulos.
Captura de pantalla de vídeo de ejemplo de la que se extraerá el texto.
Añade el siguiente espacio de nombres:
using IronOcr;
using IronOcr;
Imports IronOcr
Escriba el siguiente código debajo de la declaración del espacio de nombres.
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\Liscence Plate\plate3.jpg")
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
El código anterior funciona de la siguiente manera:
InicializarIronTesseract
objeto. Creará una instancia por defecto de IronTessearct
.
Crear un nuevoOcrInput
rellenado con un archivo de imagen de entrada o un documento PDF. OcrInput
es el tipo de entrada preferido porque permite el OCR de documentos de varias páginas y permite mejorar las imágenes antes del OCR para obtener resultados más rápidos y precisos.
Lee un texto de un Objeto de Entrada OCR y devuelve un objeto Resultado OCR. ocr.Read
extraerá los subtítulos de la captura de pantalla dada.
result.Text
devolverá todo el contenido extraído de la entrada dada.
El programa de ejemplo produce la siguiente salida de consola:
Salida de consola generada al realizar la extracción de texto en la imagen de muestra utilizando IronOCR.
Supongamos que tiene un fotograma de vídeo que contiene tanto el título del vídeo como los subtítulos:
Un único fotograma de un vídeo más largo que contiene regiones de texto para el título del vídeo y los subtítulos.
Nuestro objetivo es extraer los subtítulos codificados de la región inferior de la imagen. En este caso, tenemos que especificar la región de texto en la que se muestra el subtítulo.
Podemos usar un System.Drawing.Rectangle
para especificar una región en la que leeremos un subtítulo del fotograma de Video. La unidad de medida es siempre píxeles.
Utilizaremos el siguiente código de ejemplo para especificar la región de texto.
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// a 41% improvement on speed
var contentArea = new CropRectangle(x: 189, y: 272, height: 252, width: 77);
input.AddImage(@"D:\subtitle\image.png", 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: 189, y: 272, height: 252, width: 77);
input.AddImage(@"D:\subtitle\image.png", 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:= 189, y:= 272, height:= 252, width:= 77)
input.AddImage("D:\subtitle\image.png", 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. En contentArea
, hemos especificado el punto de inicio en x e y, y luego la altura y anchura de la región de subtítulos requerida.
Vamos a guardar los subtítulos extraídos en un archivo TXT.
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
var result = ocr.Read(input);
result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
var result = ocr.Read(input);
result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\subtitle\subtitle1.png")
Dim result = ocr.Read(input)
result.SaveAsTextFile("D:\subtitle\subtitlefile.txt")
End Using
result.SaveAsTextFile
tomará la ruta de salida como argumento y guardará el archivo en la ruta dada.
Un único fotograma de un vídeo más largo que contiene regiones de texto para el título del vídeo y los subtítulos.
En este tutorial, hemos aprendido a utilizar IronOCR y desarrollar un programa muy simple para leer subtítulos de la captura de pantalla de vídeo. También podemosespecifique la región del que queremos extraer el texto.
IronOCR ofrece las siguientes funcionesOpenCV paraVisión por ordenador. Hemos visto que IronOCR nos permite leer texto a partir de imágenes borrosas o de baja resolución. Esta biblioteca es eficaz y proporciona precisión. Admite más de 127 idiomas con total precisión. 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 conjunto de bibliotecas de Iron Software útiles paraleer y escribir PDF, manipulación de archivos Excel, leer texto a partir de imágenesydesguace de contenidos de sitios web. Adquiera elIron Suite para laprecio de dos bibliotecas individuales.
9 productos API .NET para sus documentos de oficina