Uma postagem sobre um script que baixa vĂdeos do youtube e reconhece texto nele. Decidi começar imediatamente com a implementação prĂĄtica. "Vdudictionary" - Colecionador de scripts da coleção de citaçÔes de herĂłis "Vdud" em Python. Yuri Dud e seu projeto "Vdud" nĂŁo precisam ser apresentados. As entrevistas mais quentes que sĂŁo interessantes de assistir. Yuri Alexandrovich sabe como fazer um show interessante, independentemente de vocĂȘ conhecer o herĂłi de uma questĂŁo especĂfica, ser fĂŁ dele ou ouvir pela primeira vez esse nome.
Quantos cm vocĂȘ tem? O que vocĂȘ diz a Putin? VocĂȘ estĂĄ ouvindo OXY?
Essas e muitas outras perguntas estĂŁo agora associadas ao Dudem. Quando o entrevistado pronuncia uma frase cheia de sabedoria, os editores atenciosos a exibem cuidadosamente na tela de nossos monitores com vocĂȘ para nos transmitir o ponto inteiro. Meu objetivo era cristalizar essa sabedoria de geraçÔes e criar o dicionĂĄrio "Vdudexicon" ou "Vdudictionary".
Naturalmente, uma pessoa, mesmo que nĂŁo seja sobrecarregada com um histĂłrico especĂfico de TI, nĂŁo precisa coletar essas palavras com as mĂŁos. Para isso, desenhei um script python.

Primeiro de tudo, precisamos de um arquivo que iremos processar. Para baixar vĂdeo do Youtube, usei o mĂłdulo pytube.
pip install pytube
Um exemplo de download de um arquivo do youtube
from pytube import YouTube a=YouTube('https://www.youtube.com/watch?v=RNbXm8WKmow') a.streams.first().download()
O arquivo foi baixado. Agora começaremos a determinar metodicamente molduras com um significado concentrado, com a sabedoria dos contemporùneos, com as palavras dos heróis de nosso tempo.

NĂŁo havia placa retangular em versĂ”es mais antigas, portanto, podemos procurar texto na parte inferior da tela. Em novos lançamentos, vocĂȘ pode usar o mesmo e antigo OpenCV para procurar um retĂąngulo, o que permitirĂĄ obter um quadro de um vĂdeo.
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 o cv2 para python3 no raspberry3, foi necessĂĄrio instalar muitos pacotes devido a dependĂȘncias. Talvez alguns pacotes sejam redundantes, isso se deve Ă minha inexperiĂȘncia, foi assim que tudo começou.
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
Colocamos o tesseract - este Ă© um mecanismo de OCR necessĂĄrio para o reconhecimento Ăłptico de texto.
sudo apt-get install tesseract-ocr sudo pip3 install pytesseract sudo pip3 install tesseract
Os lançamentos usam um fone de ouvido muito especĂfico, o que dificulta o reconhecimento. Em geral, instalamos um
dicionĂĄrio para o alfabeto cirĂlico. Faça o download e transfira para / usr / share / tesseract-ocr / tessdata.

O script na entrada recebe o endereço do vĂdeo no youtube. Ele baixa um arquivo, começa a processar um quadro em 5 segundos. Se houver um quadrado no quadro, corte-o, descolora-o, aumente o contraste e o reconheça. Se a cadeia tiver menos de 15 caracteres, nĂŁo a considere. VocĂȘ pode, Ă© claro, usar uma sequĂȘncia de menos de 15 caracteres, mas como uma das heroĂnas do programa disse:
-NĂŁo sei, rapazes, como vocĂȘ vive com pequenas falas.Colocamos no texto do arquivo de log, hora e um link para o momento no youtube. Ignoramos 5 segundos (nĂŁo pergunte por que esse nĂșmero veio Ă mente, a verificação nĂŁo encontrou a sobreposição de duas aspas nesse perĂodo). VocĂȘ pode excluir o arquivo de vĂdeo e prosseguir com a prĂłxima versĂŁo.
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()
Exemplo de scriptTolokonnikova - bissexualidade, FACE, prisĂŁo / vDud
Tempo c. | Citação | |
95 | âOS ATIVISTAS NĂO DEIAM O MENTOBE. ELES DEVEM TENTAR ENTENDER, QUE O CENT POSSUIA UM CENT "
| â |
195 | PETER VERZILOV - PARTICIPANTE DO RIOT DA BUCETA ESPERANĂA ANTIGA DO MARIDO TOLOKONNIKOVA
| â |
255 | Ekaterina Samutsevich | â |
570 | EU AMO MALHAS! | â |
595 | 'vLADMTSR sorbyPn â
| â |
990 | PETER VERZILOV NA JUVENTUDE VIVA NO JAPĂO JUNTO COM OS PAIS. PAI DE PETER - MĂDICO NUCLEAR
| â |
995 | PETER VERZILOV NA JUVENTUDE VIVA NO JAPĂO JUNTO COM OS PAIS. PAI DE PETER - MĂDICO NUCLEAR
| â |
1270 | 11 DE SETEMBRO DE 2018 PETER vrzipov foi hospitalizado Departamento TĂłxico Hospital clĂnico da cidade
| â |
1275 | 15 DE SETEMBRO FOI ENTREGUE POR AERONAVES PRIVADAS AO SASTE DA CLĂNICA DE BERLIM
| â |
1280 | 18 DE SETEMBRO DE 2018 DOUTORES DE BERLIM Antes, VERZILOV FOI ENVENENADO POR ESCOPOLAMINA. 26 de setembro foi dispensada da clĂnica de Berlim
| â |
1285 | 18 DE SETEMBRO DE 2018 DECLARADOS DOUTORES DE BERLIM Antes, VERZILOV FOI ENVENENADO POR ESCOPOLAMINA. 26 de setembro foi dispensada da clĂnica de Berlim
| â |
1395 | "MEDIAZONE" - intravrnvt-eddniv sobre os tribunais, PRISĂO E RĂSSIA. Principalmente em St. 2014 no ano ESPERANĂAS tol_okonnikovoy e MARIEI Alekhinoi
| â |
1590 | âSe algo Ă© uma lista de preços assustadora? Nonsendchit, ' que vocĂȘ DEVE MESMO
| â |
1760 | yoko ono - FIGURA PĂBLICA, VIĂVA DE JOE "... PE VICE, ARTISTA,
| â |
2040 | "SE ALGUĂM Ă PAI LOUCO, ESTE, pelo contrĂĄrio, A RAZĂO DO RESPEITO! - "
| â |
2330 | "MĂE INTERNA"
| â |
2425 | CIDADE DE KITEGE - UMA CIDADE DE SUNFRONT, ACONTECEU, de acordo com a lenda, NA REGIĂO DE OVERNIJA NIZHNY NOVGOROD, NAS PRAIAS DO LAGO SVETLOYAR
| â |
2515 | âMOSTRAMOS LOBSER e ajudamos zdvlichiny e ESCRITORES »
| â |
2550 | AGORA- EM OPOSIĂĂO RĂGIDA DA RĂSSIA âș. '' VIDAS E OBRAS NOS EUA
| â |
2745 | TOLOKONNIKOVA PASSOU NA PRISĂO 661 DIA. . DE 3 DE MARĂO DE 2012 A 23 DE DEZEMBRO DE 2013 No md.
| â |
2985 | VPTSN - TERMOS DESCRITIVOS EM SLENG MENINA COMUM HOMEM COMUNITĂRIA LGBT 'â 00 SWITCHES âSOB MALYO____Aâ
| â |
2990 | VTsTSN - TERMOS DESCRITIVOS NO SLENG _ MENINA COMUM HOMEM COMUNITĂRIA LGBT COM UM CABELO "SOB O MENINO"
| â |
3280 | "TAL TEMPO RUSSO" ; B?
| â |
3290 | SHIZO - ISOLADOR DE PENALIDADE. DEPARTAMENTO DA INSTITUIĂĂO CORRETIVA, ONDE AS CĂMERAS ESTĂO LOCALIZADAS PARA O CONTEĂDO DO MODO CONTĂNUO. HOMEM COLOCADO NO ISOLADOR DE PENA, LIMITADO SIGNIFICATIVAMENTE EM DIREITOS ââș, - "
| â |
3315 | "HOMEM, que fica muito tempo", E; RENOVA sua vida novamente â; 3
| â |
3510 | APĂS A PROMOĂĂO NO TEMPLO DE CRISTO - ', O PAĂS FOI DETALHADO E TRĂS PARTICIPANTES DE RPZZU KUT CONDENADOS ESPERANĂA TOLOKONNIKOVA, MARIA ALEKHIN E YEKATERINA SAMUTSEVICH
| â |
3540 | EKATERINA SAMUTS OBTENHA DOIS ANOS CONDICIONALMENTE
| â |
3660 | âA JUVENTUDE estĂĄ muito traumatizada. __ que o IVA nĂŁo possui cheque especial EXCLUSIVO â; ''
| â |
3740 | ESPERANĂA TOLOKONIKOVA DOIS ANUNCIAM A CAĂA DA FOME NA MORĂNIA COLĂNIA N ° 14 SOBRE A EXIGĂNCIA DE TRADUĂĂO EM OUTRO LUGAR DE PENALIDADE
| â |
4275 | DISCURSO SOBRE RZZU RUT SHARE MEDICINALISTA ENTRA NO JOGO »_ NA FINAL DO CAMPEONATO MUNDIAL DE 2018 EM MOSCOU
| â |
4495 | âč '' "COMBINAĂĂO DE JOGO E POSIĂĂO"
| â |
4735 | "Se eu tiver um rima ruim e bom, ESCOLHEI MAU
| â |
4755 | "HISTĂRIA DO JARDIM ZOOLĂGICO"
| â |
4800 | BERNIE SANDERS - CANDIDATO PARA NOME_PRESIDENTE NAS ELEIĂĂES 2016_ODA. PRIMERIZAR PERDIDO HIPPARI CLINTON DEMO - | â |
4820 | . ERRADO COM REALIDADE _umvdiv fala e linguĂstica RAznBŃkh
| â |
4865 | "Zdorny jogging"
| â |
5055 | »" " "REP é uma compreensão da realidade"
| â |
Obviamente, o script tem alguns problemas com o reconhecimento da fonte WOOD "especĂfica". Vejo uma solução para esse problema ao finalizar o arquivo de dicionĂĄrio para OCR e no pĂłs-processamento de texto atravĂ©s do PyEnchant.
Com um pouco de refinamento, esse script pode ser usado para procurar legendas incorporadas, reconhecĂȘ-las e traduzir automaticamente para outro idioma.
Se vocĂȘ pode incentivar Yuri a aprender sobre esse experimento, faça-o sem demora. #habr #vdudictionary
VK ,
FB .
Obrigado pela atenção! O script e o post surgiram como resultado de um voo de fantasia enquanto estudava o OpenCV para o meu projeto de
robĂŽ para pegar bolas de golfe .