Skript zum Sammeln von Zitaten und Erkennen von Text aus Videos in Python

Ein Beitrag ĂŒber ein Skript, das Videos von YouTube herunterlĂ€dt und darin enthaltenen Text erkennt. Ich beschloss, sofort mit der praktischen Umsetzung zu beginnen. "Vdudictionary" - Skriptsammler der Sammlung von Zitaten der Helden "Vdud" in Python. Yuri Dud und sein Projekt „Vdud“ brauchen keine EinfĂŒhrung. Die heißesten Interviews, die interessant zu sehen sind. Juri Alexandrowitsch weiß, wie man eine interessante Show macht, unabhĂ€ngig davon, ob Sie den Helden eines bestimmten Themas kennen, sein Fan sind oder diesen Namen zum ersten Mal hören.

Wie viele cm hast du? Was sagst du zu Putin? Hörst du OXY?


Diese und viele andere Fragen sind jetzt mit Dudem verbunden. Wenn der Befragte einen Satz voller Weisheit ausspricht, zeigen die fĂŒrsorglichen Redakteure ihn sorgfĂ€ltig auf dem Bildschirm unserer Monitore an, um uns den ganzen Punkt zu vermitteln. Mein Ziel war es, diese Weisheit der Generationen zu kristallisieren und das Wörterbuch „Vdudexicon“ oder „Vdudictionary“ zu erstellen.

NatĂŒrlich muss eine Person, auch wenn sie nicht mit einem bestimmten IT-Hintergrund belastet ist, diese SprĂŒche nicht mit den HĂ€nden sammeln. DafĂŒr habe ich ein Python-Skript entworfen.



ZunÀchst benötigen wir eine Datei, die wir verarbeiten werden. Um Videos von Youtube herunterzuladen, habe ich das Pytube-Modul verwendet.

pip install pytube 

Ein Beispiel fĂŒr das Herunterladen einer Datei von YouTube

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

Die Datei wurde heruntergeladen. Jetzt werden wir beginnen, Rahmen mit einer konzentrierten Bedeutung, mit der Weisheit der Zeitgenossen, mit den SprĂŒchen der Helden unserer Zeit methodisch zu bestimmen.



In Àlteren Versionen gab es keine rechteckige Platte, sodass wir am unteren Bildschirmrand nach Text suchen können. In neuen Versionen können Sie mit demselben guten alten OpenCV nach einem Rechteck suchen, mit dem Sie einen Frame aus einem Video abrufen können.

 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) 

Um cv2 fĂŒr python3 auf raspberry3 zu installieren, mussten aufgrund von AbhĂ€ngigkeiten viele Pakete installiert werden. Vielleicht sind einige Pakete redundant, das liegt an meiner Unerfahrenheit, so hat alles angefangen.

 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 

Wir setzen tesseract - dies ist eine OCR-Engine, die fĂŒr die optische Texterkennung erforderlich ist.

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

Die Releases verwenden ein sehr spezifisches Headset, was die Erkennung erschwert. Im Allgemeinen installieren wir ein Wörterbuch fĂŒr das kyrillische Alphabet. Laden Sie es herunter und ĂŒbertragen Sie es nach / usr / share / tesseract-ocr / tessdata.



Das Skript am Eingang erhĂ€lt die Adresse des Videos auf youtube. Es lĂ€dt eine Datei herunter und beginnt in 5 Sekunden mit der Verarbeitung eines Frames. Wenn sich im Rahmen ein Quadrat befindet, schneiden Sie es aus, verfĂ€rben Sie es, erhöhen Sie den Kontrast und erkennen Sie es. Wenn die Zeichenfolge weniger als 15 Zeichen enthĂ€lt, berĂŒcksichtigen Sie sie nicht. Sie können natĂŒrlich eine Zeichenfolge mit weniger als 15 Zeichen verwenden, aber wie eine der Heldinnen des Programms sagte:
-Ich weiß nicht, Jungs, wie du mit kleinen Linien lebst.

Wir haben in die Protokolldatei Text, Zeit und einen Link zum Moment auf youtube eingefĂŒgt. Wir ĂŒberspringen 5 Sekunden (fragen Sie nicht, warum diese Zahl zum ersten Mal in den Sinn kam. Bei der ÜberprĂŒfung wurde keine Überlappung zweier AnfĂŒhrungszeichen innerhalb dieser Zeit festgestellt). Sie können die Videodatei löschen und mit der nĂ€chsten Version fortfahren.

VollstÀndiger Skriptcode:

Python 3-Skript
 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() 


Skriptbeispiel
Tolokonnikova - BisexualitÀt, GESICHT, GefÀngnis / vDud
Zeit c.Zitat
95„AKTIVISTEN SOLLTEN DAS MENTOBE NICHT HASSEN.
SIE MÜSSEN VERSUCHEN, ZU VERSTEHEN,
DASS DER CENT EIN CENT IST "
→
195PETER VERZILOV - TEILNEHMER AN PUSSY RIOT
EHEMALIGE EHEMANN HOFFNUNG TOLOKONNIKOVA
→
255Ekaterina Samutsevich→
570Ich liebe Strickwaren!→
595'vLADMTSR sorbyPn
‚
→
990PETER VERZILOV IN DER JUGEND LEBTE IN JAPAN ZUSAMMEN MIT DEN ELTERN.
PETERS VATER - NUKLEARER PHYSIKER
→
995PETER VERZILOV IN DER JUGEND LEBTE IN JAPAN ZUSAMMEN MIT DEN ELTERN.
PETERS VATER - NUKLEARER PHYSIKER
→
127011. SEPTEMBER 2018 PETER vrzipov wurde ins Krankenhaus eingeliefert
Giftabteilung
Klinisches Krankenhaus der Stadt
→
127515. September wurde von privaten Flugzeugen geliefert
AN DIE BERLIN CLINIC SASTE
→
128018. SEPTEMBER 2018 BERLIN DOKTOREN
Vielmehr wurde VERZILOV von SCOPOLAMIN vergiftet.
26. SEPTEMBER WURDE AUS DER BERLINER KLINIK ENTLADEN
→
128518. SEPTEMBER 2018 BERLIN DOKTOREN ERKLÄRT
Vielmehr wurde VERZILOV von SCOPOLAMIN vergiftet.
26. SEPTEMBER WURDE AUS DER BERLINER KLINIK ENTLADEN
→
1395"MEDIAZONE" - intravrnvt-eddniv ĂŒber die Gerichte,
Verhaftung und Russland. Meistens in St. 2014 im Jahr
HOFFNUNGEN tol_okonnikovoy und MARIEI Alekhinoi
→
1590„Wenn etwas eine beĂ€ngstigende Preisliste ist? Nonsendchit, '
dass Sie von sich selbst mĂŒssen
→
1760yoko ono - ÖFFENTLICHE FIGUR, WIDOW OF JOE "...
PE
VIZE, KÜNSTLER,
→
2040„WENN JEMAND WÜTENDE ELTERN IST,
Dies ist eher der Grund fĂŒr Respekt! - "
→
2330"INTERNE MAMMA"
→
2425CITY OF KITEGE - EINE SONNENFRONT-STADT, HABEN DER Legende nach PASSIERT,
IM OVERNY-TEIL DER NIZHNY-NOVGOROD-REGION,
AN DEN STRÄNDEN DES SVETLOYAR-SEES
→
2515„WIR ZEIGEN LOBSER und helfen
zdvlichiny und SCHREIBER »
→
2550JETZT IN RIGIDER GEGENSTAND RUSSLANDS â€ș. ''
LEBT UND ARBEITET IN DEN USA
→
2745TOLOKONNIKOVA IM GEFÄNGNIS 661 TAG ÜBERGEGANGEN.
. VOM 3. MÄRZ 2012 BIS 23. DEZEMBER 2013
Bei md.
→
2985VPTSN - BEDINGUNGEN FÜR SLENG
LGBT COMMUNITY MAN-LIKE GIRL '‚
00 SCHILDER
→
2990VTsTSN - BEDINGUNGEN FÜR SLENG _
MANNĂ€hnliches MĂ€dchen der LGBT-GEMEINSCHAFT
MIT EINEM HAARSCHNITT "UNTER DEM JUNGEN"
→
3280"SO RUSSISCHE ZEIT" GUT
; B?
→
3290SHIZO - STRAFISOLATOR. ABTEILUNG DER KORREKTURINSTITUTION,
WO DIE KAMERAS FÜR DEN INHALT DES KONTINUIERLICHEN MODUS BEFINDET SIND.
MANN IM STRAFISOLATOR,
WESENTLICH AUF RECHTE BESCHRÄNKT
‚â€ș, - "
→
3315"MANN, der lange sitzt", E;
ERNEUERT sein Leben wieder “; 3
→
3510Nach der Förderung im Tempel Christi - '' Der Zahler wurde bestimmt und
DREI TEILNEHMER VON RPZZU KUT VERURTEILT
HOFFNUNG TOLOKONNIKOVA, MARIA ALEKHIN UND YEKATERINA SAMUTSEVICH
→
3540EKATERINA SAMUTS
ZWEI JAHRE BEDINGT ERHALTEN
→
3660„Die JUGEND ist wild traumatisiert. __ __
dass die Mehrwertsteuer keine EXKLUSIVE Überziehung aufweist “; ''
→
3740HOFFNUNG TOLOKONIKOVA ZWEI ANGEKÜNDIGTE JUNGERJAGD
IN DER MORDOVY-KOLONIE Nr. 14 ÜBER DIE ÜBERSETZUNG
AN EINEM ANDEREN STRAFORT
→
4275SPRACHE ÜBER RZZU RUT TEILT MEDIZINIST GEHT IN DAS SPIEL »_
IM SCHLUSS DER WELTMEISTERSCHAFT 2018 IN MOSKAU
→
4495â€č
''
"KOMBINATION VON SPIEL UND POSITION"
→
4735„WENN ICH EINEN SCHLECHTEN REIM UND GUT HABE,
Ich werde schlecht wÀhlen
→
4755"ZOO GESCHICHTE"
→
4800BERNIE SANDERS - KANDIDAT FÜR US NAME_PRESIDENT
IN DEN WAHLEN 2016_ODA. VERLOREN PRIMERISIEREN
HIPPARI CLINTON DEMO
- -
→
4820. FALSCH MIT IN
WIRKLICHKEIT
_umvdiv speak nd RAznBіkh linguistics
→
4865"Zdorny Joggen"
→
5055»" "
"REP ist ein VerstÀndnis der RealitÀt"
→


Das Skript hat offensichtlich einige Probleme beim Erkennen der „spezifischen“ WOOD-Schriftart. Ich sehe eine Lösung fĂŒr dieses Problem darin, die Wörterbuchdatei fĂŒr OCR fertigzustellen und Text ĂŒber PyEnchant nachzubearbeiten.

Mit ein wenig Verfeinerung kann dieses Skript verwendet werden, um nach eingebetteten Untertiteln zu suchen, diese zu erkennen und automatisch in eine andere Sprache zu ĂŒbersetzen.

Wenn Sie Yuri ermutigen können, mehr ĂŒber dieses Experiment zu erfahren, tun Sie dies bitte unverzĂŒglich. #habr #vdudictionary VK , FB .

Vielen Dank fĂŒr Ihre Aufmerksamkeit! Das Drehbuch und der Beitrag sind das Ergebnis eines Fantasy-Fluges, als ich OpenCV fĂŒr mein Golfball-Picking-Roboterprojekt studierte .

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


All Articles