Script pour collecter des citations et reconnaßtre le texte d'une vidéo en Python

Un article sur un script qui tĂ©lĂ©charge des vidĂ©os Ă  partir de YouTube et reconnaĂźt le texte qu'il contient. J'ai dĂ©cidĂ© de commencer tout de suite par une mise en Ɠuvre pratique. "Vdudictionary" - Script collector de la collection de citations de hĂ©ros "Vdud" en Python. Yuri Dud et son projet «Vdud» n'ont pas besoin d'ĂȘtre prĂ©sentĂ©s. Les interviews les plus chaudes qui sont intĂ©ressantes Ă  regarder. Yuri Alexandrovich sait comment faire une Ă©mission intĂ©ressante, que vous connaissiez le hĂ©ros d'un problĂšme particulier, que vous soyez son fan ou que vous entendiez ce nom pour la premiĂšre fois.

Combien de cm avez-vous? Que dites-vous à Poutine? Écoutez-vous OXY?


Ces questions et bien d'autres sont désormais associées à Dudem. Lorsque la personne interrogée prononce une phrase pleine de sagesse, des rédacteurs attentionnés la montrent avec soin sur l'écran de nos moniteurs avec vous pour nous transmettre tout le point. Mon objectif était de cristalliser cette sagesse des générations et de créer le dictionnaire «Vdudexicon» ou «Vdudictionary».

Naturellement, une personne, mĂȘme si elle n'est pas accablĂ©e par une formation informatique spĂ©cifique, n'a pas Ă  collecter ces paroles avec ses mains. Pour cela, j'ai esquissĂ© un script python.



Tout d'abord, nous avons besoin d'un fichier que nous allons traiter. Pour télécharger la vidéo de Youtube, j'ai utilisé le module pytube.

pip install pytube 

Un exemple de téléchargement d'un fichier depuis YouTube

 from pytube import YouTube a=YouTube('https://www.youtube.com/watch?v=RNbXm8WKmow') a.streams.first().download() 

Le fichier a été téléchargé. Nous allons maintenant commencer à déterminer méthodiquement des cadres avec un sens concentré, avec la sagesse des contemporains, avec les paroles des héros de notre temps.



Il n'y avait pas de plaque rectangulaire dans les anciennes versions, nous pouvons donc rechercher du texte en bas de l'Ă©cran. Dans les nouvelles versions, vous pouvez utiliser le mĂȘme bon vieux OpenCV pour rechercher un rectangle, ce qui vous permettra d'obtenir un cadre Ă  partir d'une vidĂ©o.

 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) 

Pour installer cv2 pour python3 sur raspberry3, il fallait installer de nombreux packages en raison de dĂ©pendances. Peut-ĂȘtre que certains packages sont redondants, cela est dĂ» Ă  mon inexpĂ©rience, c'est ainsi que tout a commencĂ©.

 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 

Nous mettons tesseract - c'est un moteur OCR nécessaire pour la reconnaissance optique de texte.

 sudo apt-get install tesseract-ocr sudo pip3 install pytesseract sudo pip3 install tesseract 

Les versions utilisent un casque trÚs spécifique, ce qui le rend difficile à reconnaßtre. En général, nous installons un dictionnaire pour l'alphabet cyrillique. Téléchargez et transférez vers / usr / share / tesseract-ocr / tessdata.



Le script à l'entrée reçoit l'adresse de la vidéo sur youtube. Il télécharge un fichier, commence à traiter une image en 5 secondes. S'il y a un carré dans le cadre, découpez-le, décolorez-le, augmentez le contraste et reconnaissez-le. Si la chaßne contient moins de 15 caractÚres, ne la considérez pas. Vous pouvez bien sûr utiliser une chaßne de moins de 15 caractÚres, mais comme l'a dit l'une des héroïnes du programme:
-Je ne sais pas, les garçons, comment vous vivez avec les petites lignes.

Nous mettons dans le fichier journal le texte, l'heure et un lien vers l'instant sur youtube. Nous sautons 5 secondes (ne demandez pas pourquoi ce chiffre est venu à l'esprit, la vérification n'a pas trouvé le chevauchement de deux citations dans ce délai). Vous pouvez supprimer le fichier vidéo et passer à la prochaine version.

Code de script complet:

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() 


Exemple de script
Tolokonnikova - bisexualité, FACE, prison / vDud
Heure c.Devis
95«LES ACTIVISTES NE DEVRAIENT PAS DÉTESTER LE MENTOBE.
ILS DOIVENT TENTER DE COMPRENDRE,
QUE LE CENT A CESSÉ D'ÊTRE UN CENT "
→
195PETER VERZILOV - PARTICIPANT À PUSSY RIOT
ANCIEN MARI ESPOIR TOLOKONNIKOVA
→
255Ekaterina Samutsevich→
570J'AIME LA MAILLE!→
595«vLADMTSR sorbyPn
‚
→
990PETER VERZILOV CHEZ DES JEUNES VIVENT AU JAPON ENSEMBLE AVEC DES PARENTS.
PÈRE DE PETER - MÉDECIN NUCLÉAIRE
→
995PETER VERZILOV CHEZ DES JEUNES VIVENT AU JAPON ENSEMBLE AVEC DES PARENTS.
PÈRE DE PETER - MÉDECIN NUCLÉAIRE
→
127011 SEPTEMBRE 2018 PETER vrzipov a été hospitalisé
Département Toxique
HĂŽpital clinique de la ville
→
1275LE 15 SEPTEMBRE A ÉTÉ LIVRÉ PAR AVION PRIVÉ
À LA SASIN CLINIC DE BERLIN
→
128018 SEPTEMBRE 2018 MÉDECINS DE BERLIN
Au contraire, VERZILOV A ETE EMPOISONNÉ PAR LA SCOPOLAMINE.
LE 26 SEPTEMBRE A ÉTÉ DÉCHARGÉ DE LA CLINIQUE DE BERLIN
→
1285DÉCLARATION DES MÉDECINS DE BERLIN LE 18 SEPTEMBRE 2018
Au contraire, VERZILOV A ETE EMPOISONNÉ PAR LA SCOPOLAMINE.
LE 26 SEPTEMBRE A ÉTÉ DÉCHARGÉ DE LA CLINIQUE DE BERLIN
→
1395"MEDIAZONE" - intravrnvt-eddniv sur les tribunaux,
ARRESTATION ET RUSSIE. Surtout à St. 2014 dans l'année
ESPOIR tol_okonnikovoy et MARIEI Alekhinoi
→
1590«Si quelque chose est une liste de prix effrayante? Nonsendchit, '
que vous DEVEZ vous-mĂȘme
→
1760yoko ono - FIGURE PUBLIQUE, VEUVE DE JOE "...
PE
VICE, ARTISTE,
→
2040"SI QUELQU'UN EST DES PARENTS MAD,
C'EST plutĂŽt LA RAISON DU RESPECT! "
→
2330"MAMAN INTERNE"
→
2425VILLE DE KITEGE - UNE VILLE EN PLEIN SOLEIL, _HAVE HAPPENED ‚selon la lĂ©gende,
DANS LA SUPERFICIE DE LA RÉGION DE NIZHNY NOVGOROD,
SUR LES PLAGES DU LAC SVETLOYAR
→
2515«NOUS MONTRONS LOBSER et aidons
zdvlichiny et ÉCRIVAINS »
→
2550MAINTENANT - DANS UNE OPPOSITION RIGIDE DE LA RUSSIE â€ș. ''
VIT ET TRAVAILLE AUX USA
→
2745TOLOKONNIKOVA PASSÉ EN PRISON 661 JOUR.
. DU 3 MARS 2012 AU 23 DÉCEMBRE 2013
Chez md.
→
2985VPTSN - TERMES DÉCRIVANT SUR SLENG
FILLE D'HOMME COMMUNAUTAIRE LGBT '‚
00 COMMUTATEURS «SOUS MALYO____A»
→
2990VTsTSN - TERMES DÉCRIVANT SUR SLENG _
FILLE D'HOMME COMMUNAUTAIRE LGBT
AVEC UNE COUPE DE CHEVEUX «SOUS LE GARÇON»
→
3280PUITS "UN TEL TEMPS RUSSE"
; B?
→
3290ISOLATEUR DE PÉNALITÉ SHIZO. DÉPARTEMENT DE L'INSTITUTION CORRECTIVE,
OERE LES CAMÉRAS SONT SITUÉES POUR LE CONTENU DU MODE CONTINU.
HOMME PLACÉ DANS L'ISOLATEUR DE PÉNALITÉ,
LIMITE SIGNIFICATIVE EN DROITS
‚â€ș, - "
→
3315"HOMME, qui est assis depuis longtemps", E;
RENOUVELLE sa vie »; 3
→
3510APRÈS LA PROMOTION DANS LE TEMPLE DU CHRIST - '‚LE PAYEUR A ÉTÉ DÉTENU ET
TROIS PARTICIPANTS DE RPZZU KUT CONDAMNÉS
HOPE TOLOKONNIKOVA, MARIA ALEKHIN ET YEKATERINA SAMUTSEVICH
→
3540EKATERINA SAMUTS
OBTENU DEUX ANS CONDITIONNELLEMENT
→
3660«LES JEUNES sont extrĂȘmement traumatisĂ©s. __
que la TVA n'a pas de découvert EXCLUSIF »; ''
→
3740ESPOIR TOLOKONIKOVA DEUX ANNONCE LA CHASSE DE LA FAIM
À MORDOVY COLONY N ° 14 SUR L'EXIGENCE DE TRADUCTION
DANS UN AUTRE LIEU DE PÉNALITÉ
→
4275DISCOURS SUR RZZU RUT SHARES MEDICINALIST ENTRE DANS LE JEU »_
EN FINALE DU WORLD WARE 2018 À MOSCOU
→
4495â€č
''
«COMBINAISON DE JEU ET DE POSITION»
→
4735"SI J'AI UN MAUVAIS RHYME ET BON,
JE CHOISIRAI MAUVAIS
→
4755"HISTOIRE DU ZOO"
→
4800BERNIE SANDERS - CANDIDAT POUR NOUS NAME_PRESIDENT
DANS LES ÉLECTIONS 2016_ODA. PRIMÉRISER PERDU
HIPPARI CLINTON DEMO
-
→
4820. FAUX AVEC IN
RÉALITÉ
_umvdiv parle la linguistique de RAznBіkh
→
4865"Le jogging Zdorny"
→
5055»" "
«REP est une compréhension de la réalité»
→


Le script a évidemment quelques problÚmes avec la reconnaissance de la police WOOD "spécifique". Je vois une solution à ce problÚme dans la finalisation du fichier de dictionnaire pour l'OCR et dans le texte de post-traitement via PyEnchant.

Avec un peu de raffinement, ce script peut ĂȘtre utilisĂ© pour rechercher des sous-titres intĂ©grĂ©s, les reconnaĂźtre et traduire automatiquement dans une autre langue.

Si vous pouvez encourager Yuri à découvrir cette expérience, faites-le sans tarder. #habr #vdudictionary VK , FB .

Merci de votre attention! Le script et la publication sont le résultat d'un vol fantastique alors que j'étudiais OpenCV pour mon projet de robot de cueillette de balles de golf .

Source: https://habr.com/ru/post/fr428147/


All Articles