Pythonで引用符を収集し、ビデオからテキストを認識するためのスクリプト

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両親と一緒に日本に住んでいた若者のピーター・ヴェルジロフ。
ピーターの父-核物理学者
12702018年9月11日PETER vrzipovが入院しました
毒性部
市立病院
12759月15日は民間航空機によって配信されました
ベルリンクリニックサステへ
12802018年9月18日ベルリン医師
むしろ、ヴェルジロフはスコポラミンに中毒されていた。
9月26日はベルリン医院から退院しました
12852018年9月18日ベルリン医師宣言
むしろ、ヴェルジロフはスコポラミンに中毒されていた。
9月26日はベルリン医院から退院しました
1395「MEDIAZONE」-裁判所に関するintravrnvt-eddniv、
逮捕とロシア。 主に2014年にサンクトペテルブルクで
希望tol_okonnikovaとMARIEI Alekhinoi
1590「もし何かが怖い価格表なら? Nonsendchit、 '
あなたはあなた自身からでなければならないこと
1760オノ・ヨーコ-パブリックフィギュア、ジョーの未亡人 "...
PE
VICE、ARTIST、
2040「誰かがおかしい親であるなら、
これ、むしろ、尊敬の理由!-"
2330「内部ママ」
2425CITY OF KITEGE-素晴らしい都市、_HAPPED、取引により、
ニジニノヴゴロド地域のあらゆる部分で、
湖SVのビーチについて
2515「私たちはLOBSERを示し、支援
zdvlichinyとライター»
2550今-ロシアの厳格な反対›。 ''
米国での生活と仕事
2745TOLOKONNIKOVAは、刑務所661日で合格しました。
。 2012年3月3日から2013年12月23日まで
MD
2985VPTSN-SLENGの説明条項
LGBTコミュニティマンライクガール '、
00スイッチ「UNDER MALYO____A」
2990VTsTSN-SLENGの説明_
LGBTコミュニティマンライクガール
ヘアカット「男の子の下」
3280「ロシアの時間」
; B?
3290SHIZO-ペナルティインシュレーター。 是正機関の部、
連続モードのコンテンツ用にカメラが配置される場所。
ペナルティインシュレーターに配置された男、
権利が著しく制限されている
、›、-"
3315「長い間座っているMAN」E;
彼の人生を再び更新する ''; 3
3510キリストの神殿での昇進後-'、支払人は決定され、
RPZZU KUT CONDEMNEDの3人の参加者
ホープ・トロコンニコバ、マリア・アレキン、エカテリーナ・サムツェヴィッチ
3540エカテリーナサムツ
条件付きで2年になりました
3660「YOUTHは激しく傷ついています。 __
バットに排他的な当座貸越がないこと」 ''
3740HOPE TOLOKONIKOVA TWOアナウンスドハンガーズハンティング
翻訳の要件に関するMORDOVY COLONY N°14
別の場所での罰則
4275RZZU RUTシェアについてのスピーチメディシナリストがゲームに参加»_
2018年モスクワでの決勝戦
4495
''
「ゲームとポジションの組み合わせ」
4735「もし私が悪い韻と善を持っているなら、
私は悪い選択します
4755「ZOO HISTORY」
4800ベルニエ・サンダース-米国大統領候補の候補
選挙2016_ODAで。 失われたプリメリゼ
ひパリクリントンデモ
-
4820。 間違っている
現実
_umvdivはndRAznBіkhの言語学を話します
4865「ズドルニージョギング」
5055» ""
「REPは現実の理解です」


このスクリプトには、明らかに「特定の」WOODフォントの認識に関するいくつかの問題があります。 OCR用の辞書ファイルを完成させ、PyEnchantを介してテキストを後処理することで、この問題の解決策を見つけました。

少し改良を加えると、このスクリプトを使用して、埋め込まれた字幕を検索し、それらを認識して、自動的に別の言語に翻訳できます。

Yuriにこの実験について学んでもらうことができる場合は、遅滞なく学習してください。 #habr #vdudictionary VKFB

ご清聴ありがとうございました! このスクリプトと投稿は、私のゴルフボールピッキングロボットプロジェクトでOpenCVを研究中の空想飛行の結果として生まれました。

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


All Articles