Una publicación sobre un script que descarga videos de YouTube y reconoce el texto que contiene. Decidí comenzar de inmediato con la implementación práctica. "Vdudictionary" - Recopilador de guiones de la colección de citas de héroes "Vdud" en Python. Yuri Dud y su proyecto "Vdud" no necesitan ser presentados. Las mejores entrevistas que son interesantes de ver. Yuri Alexandrovich sabe cómo hacer un espectáculo interesante, independientemente de si conoces al héroe de un tema en particular, si es su fan o si escuchas este nombre por primera vez.
¿Cuántos cm tienes? ¿Qué le dices a Putin? ¿Estás escuchando OXY?
Estas y muchas otras preguntas ahora están asociadas con Dudem. Cuando el entrevistado pronuncia una frase llena de sabiduría, los editores cuidadosos la muestran cuidadosamente en la pantalla de nuestros monitores para transmitirnos todo el asunto. Mi objetivo era cristalizar esta sabiduría de generaciones y crear el diccionario "Vdudexicon" o "Vdudictionary".
Naturalmente, una persona, incluso si no tiene la carga de un fondo de TI específico, no tiene que recopilar estos dichos con sus manos. Para esto, dibujé un script de Python.

En primer lugar, necesitamos un archivo que procesaremos. Para descargar videos de Youtube, utilicé el módulo pytube.
pip install pytube
Un ejemplo de descarga de un archivo de youtube
from pytube import YouTube a=YouTube('https://www.youtube.com/watch?v=RNbXm8WKmow') a.streams.first().download()
El archivo ha sido descargado. Ahora comenzaremos a determinar metódicamente marcos con un significado concentrado, con la sabiduría de los contemporáneos, con los dichos de los héroes de nuestro tiempo.

No había una placa rectangular en versiones anteriores, por lo que podemos buscar texto en la parte inferior de la pantalla. En las nuevas versiones, puede usar el mismo viejo OpenCV para buscar un rectángulo, lo que le permitirá obtener un marco de un video.
a,contours,h = cv2.findContours(gray3, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) for i in contours: cv2.drawContours(gray3,[i],0,(0,0,255),1)
Para instalar cv2 para python3 en raspberry3 tuve que instalar muchos paquetes debido a las dependencias. Quizás algunos paquetes sean redundantes, esto se debe a mi inexperiencia, así es como comenzó todo.
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get -y install libopencv-dev sudo apt-get -y install build-essential checkinstall cmake pkg-config yasm sudo apt-get -y install libtiff4-dev libjpeg-dev libjasper-dev sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev sudo apt-get -y install python-dev python-numpy sudo apt-get -y install libtbb-dev sudo apt-get -y install libqt4-dev libgtk2.0-dev sudo apt-get -y install libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev pip install opencv-python
Ponemos tesseract: este es un motor de OCR necesario para el reconocimiento óptico de texto.
sudo apt-get install tesseract-ocr sudo pip3 install pytesseract sudo pip3 install tesseract
Los lanzamientos usan auriculares muy específicos, lo que dificulta su reconocimiento. En general, instalamos un
diccionario para el alfabeto cirílico. Descargue y transfiera a / usr / share / tesseract-ocr / tessdata.

El script en la entrada recibe la dirección del video en youtube. Descarga un archivo, comienza a procesar un cuadro en 5 segundos. Si hay un cuadrado en el marco, recórtelo, descolórelo, aumente el contraste y reconozca. Si la cadena tiene menos de 15 caracteres, no la tenga en cuenta. Por supuesto, puede usar una cadena de menos de 15 caracteres, pero como dijo una de las heroínas del programa:
-No sé, muchachos, cómo viven con líneas pequeñas.Ponemos en el archivo de registro el texto, la hora y un enlace al momento en youtube. Nos saltamos 5 segundos (no pregunte por qué esta cifra vino a mi mente por primera vez, la comprobación no encontró la superposición de dos citas dentro de este tiempo). Puede eliminar el archivo de video y continuar con la próxima versión.
Código de script completo:Script Python 3 import cv2 import pytesseract import numpy as np from pytube import YouTube import os nameofvideo="RNbXm8WKmow" a=YouTube('https://www.youtube.com/watch?v='+nameofvideo) a.streams.first().download() title=a.title title2=title.replace("/","").replace(",","").replace(".","")+".mp4" os.rename(title2, "youtubefile.mp4") print(title) f=open('/var/www/python/'+str(nameofvideo)+'.txt','w') f.write(title+"<br>") f.write('<table><tr><td></td><td></td><td></td></tr>') spisoksimvolovpodudalenie=["*","/","|","\\",")","(","}","{","+","`","~","№","",":","$","#","@","%","[","]","&","^","' "] def udaleniesimvolov(stroka): for element in spisoksimvolovpodudalenie: stroka=stroka.replace(element,"") return stroka vidcap = cv2.VideoCapture('youtubefile.mp4') vidcap.set(cv2.CAP_PROP_POS_AVI_RATIO,1) durationsec=int(vidcap.get(cv2.CAP_PROP_POS_MSEC)/1000) print("duration: "+str(durationsec)+" sec") for thissec in range(0,durationsec,5): vidcap.set(cv2.CAP_PROP_POS_MSEC,thissec*1000) success,image = vidcap.read() gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) gray2 = cv2.addWeighted( gray, 1.5, gray, 0, 0.5) gray3 = gray2[450:670,0:1280] if success: print(str(thissec)+" sec.") text = udaleniesimvolov(pytesseract.image_to_string(gray3, lang='rus')) if len(text)>15: print (text) f.write('<tr><td>'+str(thissec)+'</td><td>'+text+'</td><td><a href="https://www.youtube.com/watch?v='+nameofvideo+"&t="+str(thissec)+'"></a></td></tr>') print("----") f.write('</table>') f.close()
Ejemplo de guionTolokonnikova - bisexualidad, CARA, prisión / vDud
Tiempo c. | Cita | |
95 | “LOS ACTIVISTAS NO DEBEN ODIAR AL MENTOBE. DEBEN INTENTAR COMPRENDER QUE EL CENTO CAUSÓ SER UN CENT "
| → |
195 | PETER VERZILOV - PARTICIPANTE EN PUSSY RIOT ANTIGUA ESPERANZA DEL MARIDO TOLOKONNIKOVA
| → |
255 | Ekaterina Samutsevich | → |
570 | ¡ME ENCANTA EL KNITWEAR! | → |
595 | 'vLADMTSR sorbyPn ‚
| → |
990 | PETER VERZILOV EN JUVENTUD VIVÍA EN JAPÓN JUNTOS CON LOS PADRES. PADRE DE PEDRO - FÍSICO NUCLEAR
| → |
995 | PETER VERZILOV EN JUVENTUD VIVÍA EN JAPÓN JUNTOS CON LOS PADRES. PADRE DE PEDRO - FÍSICO NUCLEAR
| → |
1270 | 11 DE SEPTIEMBRE DE 2018 PETER vrzipov fue hospitalizado Departamento de tóxicos Hospital clínico de la ciudad
| → |
1275 | EL 15 DE SEPTIEMBRE FUE ENTREGADO POR LA AERONAVE PRIVADA A LA CLÍNICA DE BERLÍN SASTE
| → |
1280 | 18 DE SEPTIEMBRE DE 2018 DOCTORES DE BERLÍN Más bien, VERZILOV FUE ENVENENADO POR SCOPOLAMIN. SEPTIEMBRE 26 FUE DESCARGADO DE LA CLÍNICA DE BERLÍN
| → |
1285 | 18 DE SEPTIEMBRE DE 2018 DOCTORES DE BERLÍN DECLARADOS Más bien, VERZILOV FUE ENVENENADO POR SCOPOLAMIN. SEPTIEMBRE 26 FUE DESCARGADO DE LA CLÍNICA DE BERLÍN
| → |
1395 | "MEDIAZONE" - intravrnvt-eddniv sobre los tribunales, DETENCIÓN Y RUSIA. Principalmente en St. 2014 en el año ESPERANZAS tol_okonnikovoy y MARIEI Alekhinoi
| → |
1590 | "Si algo es una lista de precios de miedo? Nonsendchit, ' que DEBES DE TI MISMO
| → |
1760 | yoko ono - FIGURA PÚBLICA, VIDRIO DE JOE "... PE VICE, ARTISTA,
| → |
2040 | "SI ALGUIEN ES PADRES MADRES, ¡ESTO, más bien, LA RAZÓN DEL RESPETO! "
| → |
2330 | "MAMÁ INTERNA"
| → |
2425 | CIUDAD DE KITEGE: UNA CIUDAD FRENTE AL SOL, HABÍA SUCEDIDO, según la leyenda, EN LA SUPERFICIE PARTE DE LA REGIÓN DE NIZHNY NOVGOROD, EN LAS PLAYAS DEL LAGO SVETLOYAR
| → |
2515 | "MOSTRAMOS LOBSER y ayudamos zdvlichiny y ESCRITORES »
| → |
2550 | AHORA- EN RÍGIDA OPOSICIÓN DE RUSIA ›. '' VIVE Y TRABAJA EN LOS ESTADOS UNIDOS
| → |
2745 | TOLOKONNIKOVA PASÓ EN LA PRISIÓN 661 DÍA. . DEL 3 DE MARZO DE 2012 AL 23 DE DICIEMBRE DE 2013 En md.
| → |
2985 | VPTSN - TÉRMINOS QUE DESCRIBEN EN SLENG COMUNIDAD LGBT NIÑA COMO HOMBRE '‚ 00 INTERRUPTORES "BAJO MALYO____A"
| → |
2990 | VTsTSN - TÉRMINOS QUE DESCRIBEN EN SLENG _ COMUNIDAD LGBT NIÑA COMO HOMBRE CON UN CORTE DE PELO "BAJO EL MUCHACHO"
| → |
3280 | "TAN TIEMPO RUSO" BIEN ; B?
| → |
3290 | SHIZO - AISLADOR DE PENALIZACIÓN. DEPARTAMENTO DE LA INSTITUCIÓN CORRECTIVA, DONDE LAS CÁMARAS ESTÁN UBICADAS PARA EL CONTENIDO DEL MODO CONTINUO. HOMBRE COLOCADO EN EL AISLADOR DE PENALIZACIÓN, LIMITADO SIGNIFICATIVAMENTE EN DERECHOS ‚›, - "
| → |
3315 | "HOMBRE, que se sienta por mucho tiempo", E; RENUEVA su vida nuevamente ”; 3
| → |
3510 | DESPUÉS DE LA PROMOCIÓN EN EL TEMPLO DE CRISTO: "EL PAGADOR FUE DETENIDO Y TRES PARTICIPANTES DE RPZZU KUT CONDENADOS ESPERANZA TOLOKONNIKOVA, MARIA ALEKHIN Y YEKATERINA SAMUTSEVICH
| → |
3540 | EKATERINA SAMUTS TENGO DOS AÑOS CONDICIONALMENTE
| → |
3660 | “La JUVENTUD está tremendamente traumatizada. __ que el IVA no tiene sobregiro EXCLUSIVO "; ''
| → |
3740 | ESPERANZA TOLOKONIKOVA DOS ANUNCIARON LA CAZA DEL HAMBRE EN LA COLONIA DE MORDOVY N ° 14 SOBRE EL REQUISITO DE TRADUCCIÓN EN OTRO LUGAR DE PENALIZACIÓN
| → |
4275 | DISCURSO SOBRE RZZU RUT COMPARTE MEDICINALISTA ENTRA AL JUEGO »_ EN LA FINAL DEL MUNDO FIFA 2018 EN MOSCÚ
| → |
4495 | ‹‹ '' "COMBINACIÓN DE JUEGO Y POSICIÓN"
| → |
4735 | "SI TENGO UN RIMO MALO Y BUENO, ELEGIRÉ MALO
| → |
4755 | "HISTORIA DEL ZOO"
| → |
4800 | BERNIE SANDERS - CANDIDATO PARA NOMBRE_PRESIDENTE DE ESTADOS UNIDOS EN LAS ELECCIONES 2016_ODA. PRIMERIZADO PERDIDO DEMO HIPPARI CLINTON - | → |
4820 | . EQUIVOCADO EN REALIDAD _umvdiv hablar nd RAznBіkh lingüística
| → |
4865 | "Zdorny trotando"
| → |
5055 | »" " "REP es una comprensión de la realidad"
| → |
El script obviamente tiene algunos problemas para reconocer la fuente WOOD "específica". Veo una solución a este problema al finalizar el archivo de diccionario para OCR y al procesar el texto a través de PyEnchant.
Con un poco de refinamiento, este script se puede usar para buscar subtítulos incrustados, reconocerlos y traducirlos automáticamente a otro idioma.
Si puede alentar a Yuri a aprender sobre este experimento, hágalo sin demora. #habr #vdudictionary
VK ,
FB .
Gracias por su atencion! El guión y la publicación surgieron como resultado de un vuelo de fantasía mientras estudiaba OpenCV para mi proyecto de
robot de recolección de pelotas de golf .