YouTubeから動画をダウンロードし、その中のテキストを認識するスクリプトに関する投稿。 私はすぐに実用的な実装から始めることにしました。 「Vdudictionary」-Pythonのヒーロー「Vdud」の引用符のコレクションのコレクター用のスクリプト。 ユーリ・ダッドと彼のプロジェクト「Vdud」の紹介は不要です。 見るのが面白い最もホットなインタビュー。 ユーリ・アレクサンドロヴィチは、あなたが特定の問題のヒーローを知っているか、彼のファンであるか、この名前を初めて聞くかどうかに関係なく、面白いショーを作る方法を知っています。
何センチありますか? プーチンに何と言いますか? OXYを聞いていますか?
これらおよび他の多くの質問は、現在Dudemに関連付けられています。 インタビューを受けた人が知恵に満ちたフレーズを発音すると、思いやりのある編集者が私たちのモニターの画面に注意深くそれを表示し、あなたにすべてのポイントを伝えます。 私の目標は、この世代の知恵を結晶化し、辞書「Vdudexicon」または「Vdudictionary」を作成することでした。
当然のことながら、特定のITのバックグラウンドに悩まされていなくても、人はこれらのことわざを手で集める必要はありません。 このために、Pythonスクリプトをスケッチしました。

まず、処理するファイルが必要です。 Youtubeからビデオをダウンロードするには、pytubeモジュールを使用しました。
pip install pytube
YouTubeからファイルをダウンロードする例
from pytube import YouTube a=YouTube('https://www.youtube.com/watch?v=RNbXm8WKmow') a.streams.first().download()
ファイルがダウンロードされました。 今、私たちは、現代の英知と現代の英雄のことわざを使って、集中した意味でフレームを系統的に決定し始めます。

古いリリースには長方形のプレートがなかったため、画面の下部でテキストを検索できます。 新しいリリースでは、同じ古いOpenCVを使用して長方形を検索できます。これにより、ビデオからフレームを取得できます。
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)
python3にcv2をraspberry3にインストールするには、依存関係のために多くのパッケージをインストールする必要がありました。 おそらくいくつかのパッケージは冗長です。これは私の経験不足によるもので、それがすべての始まりです。
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
tesseractを配置します-これは、光学式テキスト認識に必要なOCRエンジンです。
sudo apt-get install tesseract-ocr sudo pip3 install pytesseract sudo pip3 install tesseract
リリースでは非常に特殊なヘッドセットを使用しているため、認識が困難です。 一般的に、キリル文字の
辞書をインストールします。 ダウンロードして/ usr / share / tesseract-ocr / tessdataに転送します。

入力のスクリプトは、youtubeのビデオのアドレスを受け取ります。 ファイルをダウンロードし、5秒で1フレームの処理を開始します。 フレームに正方形がある場合、それを切り取り、変色させ、コントラストを上げて認識します。 文字列が15文字未満の場合、考慮しないでください。 もちろん、15文字未満の行を使用できますが、プログラムのヒロインの1人が言ったように:
-少年たち、あなたが細い線でどのように生きているかわかりません。YouTubeでログファイルのテキスト、時間、およびその瞬間へのリンクを挿入します。 5秒をスキップします(この数字が最初に思い浮かんだ理由は聞かないでください。この時間内に2つの引用符の重複は見つかりませんでした)。 ビデオファイルを削除して、次のリリースに進むことができます。
完全なスクリプトコード: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()
スクリプトの例トロコンニコワ-バイセクシュアリティ、顔、刑務所/ vDud
時間c。 | 引用 | |
95 | 「活動家は精神を憎むべきではない。 彼らは理解しようとしなければならず、 中心が中心になったこと」
| → |
195 | ピーター・ヴェルジロフ-プッシー・リオットの参加者 元夫婦希望トロコニコバ
| → |
255 | エカテリーナ・サムツビッチ | → |
570 | ニットが大好き! | → |
595 | 'vLADMTSR sorbyPn 、
| → |
990 | 両親と一緒に日本に住んでいた若者のピーター・ヴェルジロフ。 ピーターの父-核物理学者
| → |
995 | 両親と一緒に日本に住んでいた若者のピーター・ヴェルジロフ。 ピーターの父-核物理学者
| → |
1270 | 2018年9月11日PETER vrzipovが入院しました 毒性部 市立病院
| → |
1275 | 9月15日は民間航空機によって配信されました ベルリンクリニックサステへ
| → |
1280 | 2018年9月18日ベルリン医師 むしろ、ヴェルジロフはスコポラミンに中毒されていた。 9月26日はベルリン医院から退院しました
| → |
1285 | 2018年9月18日ベルリン医師宣言 むしろ、ヴェルジロフはスコポラミンに中毒されていた。 9月26日はベルリン医院から退院しました
| → |
1395 | 「MEDIAZONE」-裁判所に関するintravrnvt-eddniv、 逮捕とロシア。 主に2014年にサンクトペテルブルクで 希望tol_okonnikovaとMARIEI Alekhinoi
| → |
1590 | 「もし何かが怖い価格表なら? Nonsendchit、 ' あなたはあなた自身からでなければならないこと
| → |
1760 | オノ・ヨーコ-パブリックフィギュア、ジョーの未亡人 "... PE VICE、ARTIST、
| → |
2040 | 「誰かがおかしい親であるなら、 これ、むしろ、尊敬の理由!-"
| → |
2330 | 「内部ママ」
| → |
2425 | CITY OF KITEGE-素晴らしい都市、_HAPPED、取引により、 ニジニノヴゴロド地域のあらゆる部分で、 湖SVのビーチについて
| → |
2515 | 「私たちはLOBSERを示し、支援 zdvlichinyとライター»
| → |
2550 | 今-ロシアの厳格な反対›。 '' 米国での生活と仕事
| → |
2745 | TOLOKONNIKOVAは、刑務所661日で合格しました。 。 2012年3月3日から2013年12月23日まで MD
| → |
2985 | VPTSN-SLENGの説明条項 LGBTコミュニティマンライクガール '、 00スイッチ「UNDER MALYO____A」
| → |
2990 | VTsTSN-SLENGの説明_ LGBTコミュニティマンライクガール ヘアカット「男の子の下」
| → |
3280 | 「ロシアの時間」 ; B?
| → |
3290 | SHIZO-ペナルティインシュレーター。 是正機関の部、 連続モードのコンテンツ用にカメラが配置される場所。 ペナルティインシュレーターに配置された男、 権利が著しく制限されている 、›、-"
| → |
3315 | 「長い間座っているMAN」E; 彼の人生を再び更新する ''; 3
| → |
3510 | キリストの神殿での昇進後-'、支払人は決定され、 RPZZU KUT CONDEMNEDの3人の参加者 ホープ・トロコンニコバ、マリア・アレキン、エカテリーナ・サムツェヴィッチ
| → |
3540 | エカテリーナサムツ 条件付きで2年になりました
| → |
3660 | 「YOUTHは激しく傷ついています。 __ バットに排他的な当座貸越がないこと」 ''
| → |
3740 | HOPE TOLOKONIKOVA TWOアナウンスドハンガーズハンティング 翻訳の要件に関するMORDOVY COLONY N°14 別の場所での罰則
| → |
4275 | RZZU RUTシェアについてのスピーチメディシナリストがゲームに参加»_ 2018年モスクワでの決勝戦
| → |
4495 | ‹ '' 「ゲームとポジションの組み合わせ」
| → |
4735 | 「もし私が悪い韻と善を持っているなら、 私は悪い選択します
| → |
4755 | 「ZOO HISTORY」
| → |
4800 | ベルニエ・サンダース-米国大統領候補の候補 選挙2016_ODAで。 失われたプリメリゼ ひパリクリントンデモ - | → |
4820 | 。 間違っている 現実 _umvdivはndRAznBіkhの言語学を話します
| → |
4865 | 「ズドルニージョギング」
| → |
5055 | » "" 「REPは現実の理解です」
| → |
このスクリプトには、明らかに「特定の」WOODフォントの認識に関するいくつかの問題があります。 OCR用の辞書ファイルを完成させ、PyEnchantを介してテキストを後処理することで、この問題の解決策を見つけました。
少し改良を加えると、このスクリプトを使用して、埋め込まれた字幕を検索し、それらを認識して、自動的に別の言語に翻訳できます。
Yuriにこの実験について学んでもらうことができる場合は、遅滞なく学習してください。 #habr #vdudictionary
VK 、
FB 。
ご清聴ありがとうございました! このスクリプトと投稿は、私の
ゴルフボールピッキングロボットプロジェクトでOpenCVを研究中の空想飛行の結果として生まれました。