منشور عن برنامج نصي يقوم بتنزيل مقاطع الفيديو من يوتيوب ويتعرف على النص فيه. قررت أن أبدأ على الفور بالتنفيذ العملي. "Vdudictionary" - جامع سيناريو لمجموعة مقتطفات من الأبطال "Vdud" في Python. لا يلزم تقديم يوري دود ومشروعه "فود". أهم المقابلات المثيرة للاهتمام لمشاهدتها. يوري ألكسندروفيتش يعرف كيف يصنع عرضًا مثيرًا للاهتمام ، بغض النظر عما إذا كنت تعرف بطل قضية معينة ، أو من معجبيه ، أو لأول مرة تسمع هذا الاسم.
كم سم لديك؟ ماذا تقول لبوتين؟ هل تستمع إلى OXY؟
ترتبط هذه الأسئلة والعديد من الأسئلة الأخرى بـ Dudem. عندما يلفظ الشخص الذي تتم مقابلته عبارة مليئة بالحكمة ، فإن المحررين المهتمين يعرضونها بعناية على شاشة مراقبينا معك لإيصال النقطة كاملة إلينا. كان هدفي هو بلورة هذه الحكمة من الأجيال وإنشاء قاموس "Vdudexicon" أو "Vdudictionary".
بطبيعة الحال ، لا يتعين على الشخص ، حتى لو لم يكن مثقلاً بخلفية تكنولوجيا معلومات معينة ، جمع هذه الأقوال بيديه. لهذا ، قمت برسم نص بيثون.

بادئ ذي بدء ، نحن بحاجة إلى ملف سنقوم بمعالجته. لتنزيل الفيديو من يوتيوب ، استخدمت وحدة 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)
لتثبيت cv2 لـ python3 على 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.

يتلقى البرنامج النصي عند الإدخال عنوان الفيديو على موقع يوتيوب. يقوم بتنزيل ملف ، ويبدأ في معالجة إطار واحد في 5 ثوانٍ. إذا كان هناك مربع في الإطار ، فقم بقصه وتغيير لونه وزيادة التباين والتعرف عليه. إذا كانت السلسلة أقل من 15 حرفًا ، فلا تعتبرها. يمكنك بالطبع استخدام سلسلة أقل من 15 حرفًا ، ولكن كما قال أحد بطلات البرنامج:
- لا أدري أيها الأولاد كيف تعيشون مع خطوط صغيرة.نضع نص ملف السجل والوقت ورابط للحظة على يوتيوب. نحن نتخطى 5 ثوانٍ (لا تسأل لماذا جاء هذا الرقم إلى الذهن لأول مرة ، ولم يعثر التحقق على تداخل اقتباسين خلال هذا الوقت). يمكنك حذف ملف الفيديو والمتابعة مع الإصدار التالي.
كود النص الكامل:نص 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()
مثال البرنامج النصيTolokonnikova - ثنائي الجنس ، وجه ، سجن / فود
الوقت ج. | اقتبس | |
95 | "لا ينبغي للنشطاء أن يكرهوا MENTOBE. يجب أن يحاولوا فهم ، أنه من المحتمل أن تكون السنت سنتًا "
| → |
195 | بيتر فيرزيلوف - مشارك في كسوة الشعر أمل زوجته السابق تولكونيكوفا
| → |
255 | إيكاترينا ساموتسيفيتش | → |
570 | أنا أحب الملابس! | → |
595 | 'vLADMTSR sorbyPn ‚
| → |
990 | عاش بيتر فيرزيلوف بين الشباب في اليابان معًا مع أولياء الأمور. والد بيتر - فيزيائي نووي
| → |
995 | عاش بيتر فيرزيلوف بين الشباب في اليابان معًا مع أولياء الأمور. والد بيتر - فيزيائي نووي
| → |
1270 | 11 سبتمبر 2018 تم نقل PETER vrzipov إلى المستشفى قسم السامة مستشفى المدينة السريري
| → |
1275 | تم تسليم 15 سبتمبر بواسطة الطائرات الخاصة إلى عيادة برلين الطبية
| → |
1280 | 18 سبتمبر 2018 أطباء برلين بدلا من ذلك ، تم تسميم VERZILOV من قبل سكوبولامين. تم تفريغ 26 سبتمبر من عيادة برلين
| → |
1285 | 18 سبتمبر 2018 أعلن أطباء برلين بدلا من ذلك ، تم تسميم VERZILOV من قبل سكوبولامين. تم تفريغ 26 سبتمبر من عيادة برلين
| → |
1395 | "MEDIAZONE" - intravrnvt-eddniv حول المحاكم ، اعتقال وروسيا. في الغالب في سانت 2014 في العام نأمل أن tol_okonnikovoy و MARIEI Alekhinoi
| → |
1590 | "إذا كان هناك شيء من قوائم الأسعار المخيفة؟ نونسينشيت ، " يجب عليك من نفسك
| → |
1760 | yoko ono - الشكل العام ، WIDOW OF JOE "... PE نائب ، فنان ،
| → |
2040 | "إذا كان شخص ما من الآباء ، هذا ، بدلاً من ذلك ، سبب الاحترام! - "
| → |
2330 | "الأم الداخلية"
| → |
2425 | مدينة KITEGE - مدينة شمس ، حدث _ وفقًا للأسطورة ، في الجزء المفرط من منطقة نيزني نوفغورود ، على شواطئ بحيرة سفيتلويار
| → |
2515 | "نعرض LOBSER والمساعدة zdvlichiny وكتاب »
| → |
2550 | الآن- في معارضة قاسية لروسيا ›. '' يعيش ويعمل في الولايات المتحدة
| → |
2745 | تمرير TOLOKONNIKOVA في السجن 661 يوم. . من 3 مارس 2012 إلى 23 ديسمبر 2013 في م.
| → |
2985 | VPTSN - الشروط التي تصف SLENG مجتمع مثليي الجنس مثل الفتيات "‚ 00 مفاتيح "تحت MALYO____A"
| → |
2990 | VTsTSN - الشروط التي تصف SLENG _ مجتمع المثليين مثل الفتيات بقص شعر "تحت الصبي"
| → |
3280 | "وقت روسي" جيد ؛ ب؟
| → |
3290 | شيزو - عازل للغرامات. قسم المعهد التصحيحي حيث تقع الكاميرات لمحتوى الوضع المستمر. وضع الإنسان في عازل العقوبة ، محدودة بشكل كبير في الحقوق ‚› ، - "
| → |
3315 | "الرجل الذي يجلس لفترة طويلة" E ؛ يجدد حياته مرة أخرى "؛ 3
| → |
3510 | بعد الترويج في معبد المسيح - '' تم اعتقال الصبي و تم إدانة ثلاثة مشاركين من RPZZU KUT الأمل TOLOKONNIKOVA ، MARIA ALEKHIN و YEKATERINA SAMUTSEVICH
| → |
3540 | EKATERINA SAMUTS حصلت على سنتان شرطيًا
| → |
3660 | "الشباب مصابون بصدمة شديدة. __ أن ضريبة القيمة المضافة لا تحتوي على سحب على المكشوف حصريًا ؛ ''
| → |
3740 | أعلن HOLE TOLOKONIKOVA اثنين عن صيد الجوع في MORDOVY COLONY N ° 14 على متطلبات الترجمة في مكان آخر من العقوبة
| → |
4275 | يتحدث عن RZZU RUT SHARES MEDICINALIST يدخل اللعبة »_ في ختام بطولة العالم 2018 في موسكو
| → |
4495 | ‹ '' "الجمع بين اللعبة والموقف"
| → |
4735 | "إذا كان لدي إيقاع سيء وجيد ، سأختار سيئة
| → |
4755 | "تاريخ حديقة الحيوانات"
| → |
4800 | BERNIE SANDERS - المرشح لنا NAME_PRESIDENT في الانتخابات 2016_ODA. فقدان الأفق عرض هيباري كلينتون - | → |
4820 | . خطأ في الداخل الواقع _umvdiv التحدث واللغويات RAznBіkh
| → |
4865 | "الركض Zdorny"
| → |
5055 | »" " "REP هو فهم للواقع"
| → |
من الواضح أن البرنامج النصي لديه بعض المشاكل في التعرف على خط WOOD "المحدد". أرى حلًا لهذه المشكلة في وضع اللمسات الأخيرة على ملف القاموس لـ OCR وفي نص ما بعد المعالجة من خلال PyEnchant.
مع القليل من التحسين ، يمكن استخدام هذا البرنامج النصي للبحث عن الترجمات المضمنة والتعرف عليها والترجمة تلقائيًا إلى لغة أخرى.
إذا كان بإمكانك تشجيع يوري على التعرف على هذه التجربة ، يرجى القيام بذلك دون تأخير. #habr #vdudictionary
VK ،
FB .
شكرا لكم على اهتمامكم! جاء النص والمنشور نتيجة لرحلة خيالية أثناء دراسة OpenCV لمشروع
الروبوت الخاص باختيار كرة الغولف .