Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
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 motor de Reconocimiento Óptico de Caracteres (OCR) eficiente que pueda procesar el video 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
IronOCR es una biblioteca desarrollada y mantenida por Iron Software que ayuda a los ingenieros de software en 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 de Aplicación de consola.
Haz clic en el botón Siguiente, y nombra el proyecto (lo he nombrado "OCR Subtitles", puedes nombrarlo según tu elección).
Haga clic en el botón Siguiente y seleccione su Framework de destino. Finalmente, haz 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 la solución, como se muestra a continuación.
Instalación de IronOCR en Visual Studio
Aparecerá la siguiente ventana.
Interfaz de usuario del administrador de paquetes NuGet de Visual Studio
Haga clic en Examinar y busque IronOCR. Seleccione el paquete de IronOCR y haga clic en el botón Instalar, como se muestra a continuación.
Buscando IronOCR en la interfaz de usuario del Administrador 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 video de muestra de la cual se extraerá texto
Añade el siguiente espacio de nombres:
using IronOcr;
using 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);
}
El código anterior funciona de la siguiente manera:
Inicializar el objeto IronTesseract
. Creará una instancia predeterminada de IronTessearct
.
Cree un nuevo objeto OcrInput
poblado 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 múltiples 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á subtítulos de la captura de pantalla proporcionada.
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 solo fotograma de un video más largo que contiene regiones de texto para el título del video y los subtítulos del video
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 siempre es 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);
}
Esto produce un aumento de 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 el ancho 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");
}
result.SaveAsTextFile
tomará la ruta de salida como argumento y guardará el archivo en la ruta indicada.
Un solo fotograma de un video más largo que contiene regiones de texto para el título del video y los subtítulos del video
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 podemos especificar la región de la cual queremos extraer el texto.
IronOCR proporciona las funciones de OpenCV para visión por computadora. 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 es parte de la suite de bibliotecas de Iron Software, útiles para leer y escribir PDFs, manipular archivos de Excel, leer texto de imágenes, y extraer contenido de sitios web. Compra el Iron Suite completo por el precio de dos bibliotecas individuales.