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 両親と一緒に日本に住んでいた若者のピーター・ヴェルジロフ。

ピーターの父-核物理学者

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 VKFB



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



All Articles