برنامج نصي لجمع الاقتباسات والتعرف على النص من الفيديو في بيثون

منشور عن برنامج نصي يقوم بتنزيل مقاطع الفيديو من يوتيوب ويتعرف على النص فيه. قررت أن أبدأ على الفور بالتنفيذ العملي. "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عاش بيتر فيرزيلوف بين الشباب في اليابان معًا مع أولياء الأمور.
والد بيتر - فيزيائي نووي
127011 سبتمبر 2018 تم نقل PETER vrzipov إلى المستشفى
قسم السامة
مستشفى المدينة السريري
1275تم تسليم 15 سبتمبر بواسطة الطائرات الخاصة
إلى عيادة برلين الطبية
128018 سبتمبر 2018 أطباء برلين
بدلا من ذلك ، تم تسميم VERZILOV من قبل سكوبولامين.
تم تفريغ 26 سبتمبر من عيادة برلين
128518 سبتمبر 2018 أعلن أطباء برلين
بدلا من ذلك ، تم تسميم VERZILOV من قبل سكوبولامين.
تم تفريغ 26 سبتمبر من عيادة برلين
1395"MEDIAZONE" - intravrnvt-eddniv حول المحاكم ،
اعتقال وروسيا. في الغالب في سانت 2014 في العام
نأمل أن tol_okonnikovoy و MARIEI Alekhinoi
1590"إذا كان هناك شيء من قوائم الأسعار المخيفة؟ نونسينشيت ، "
يجب عليك من نفسك
1760yoko ono - الشكل العام ، WIDOW OF JOE "...
PE
نائب ، فنان ،
2040"إذا كان شخص ما من الآباء ،
هذا ، بدلاً من ذلك ، سبب الاحترام! - "
2330"الأم الداخلية"
2425مدينة KITEGE - مدينة شمس ، حدث _ وفقًا للأسطورة ،
في الجزء المفرط من منطقة نيزني نوفغورود ،
على شواطئ بحيرة سفيتلويار
2515"نعرض LOBSER والمساعدة
zdvlichiny وكتاب »
2550الآن- في معارضة قاسية لروسيا ›. ''
يعيش ويعمل في الولايات المتحدة
2745تمرير TOLOKONNIKOVA في السجن 661 يوم.
. من 3 مارس 2012 إلى 23 ديسمبر 2013
في م.
2985VPTSN - الشروط التي تصف SLENG
مجتمع مثليي الجنس مثل الفتيات "‚
00 مفاتيح "تحت MALYO____A"
2990VTsTSN - الشروط التي تصف SLENG _
مجتمع المثليين مثل الفتيات
بقص شعر "تحت الصبي"
3280"وقت روسي" جيد
؛ ب؟
3290شيزو - عازل للغرامات. قسم المعهد التصحيحي
حيث تقع الكاميرات لمحتوى الوضع المستمر.
وضع الإنسان في عازل العقوبة ،
محدودة بشكل كبير في الحقوق
‚› ، - "
3315"الرجل الذي يجلس لفترة طويلة" E ؛
يجدد حياته مرة أخرى "؛ 3
3510بعد الترويج في معبد المسيح - '' تم اعتقال الصبي و
تم إدانة ثلاثة مشاركين من RPZZU KUT
الأمل TOLOKONNIKOVA ، MARIA ALEKHIN و YEKATERINA SAMUTSEVICH
3540EKATERINA SAMUTS
حصلت على سنتان شرطيًا
3660"الشباب مصابون بصدمة شديدة. __
أن ضريبة القيمة المضافة لا تحتوي على سحب على المكشوف حصريًا ؛ ''
3740أعلن HOLE TOLOKONIKOVA اثنين عن صيد الجوع
في MORDOVY COLONY N ° 14 على متطلبات الترجمة
في مكان آخر من العقوبة
4275يتحدث عن RZZU RUT SHARES MEDICINALIST يدخل اللعبة »_
في ختام بطولة العالم 2018 في موسكو
4495
''
"الجمع بين اللعبة والموقف"
4735"إذا كان لدي إيقاع سيء وجيد ،
سأختار سيئة
4755"تاريخ حديقة الحيوانات"
4800BERNIE SANDERS - المرشح لنا NAME_PRESIDENT
في الانتخابات 2016_ODA. فقدان الأفق
عرض هيباري كلينتون
-
4820. خطأ في الداخل
الواقع
_umvdiv التحدث واللغويات RAznBіkh
4865"الركض Zdorny"
5055»" "
"REP هو فهم للواقع"


من الواضح أن البرنامج النصي لديه بعض المشاكل في التعرف على خط WOOD "المحدد". أرى حلًا لهذه المشكلة في وضع اللمسات الأخيرة على ملف القاموس لـ OCR وفي نص ما بعد المعالجة من خلال PyEnchant.

مع القليل من التحسين ، يمكن استخدام هذا البرنامج النصي للبحث عن الترجمات المضمنة والتعرف عليها والترجمة تلقائيًا إلى لغة أخرى.

إذا كان بإمكانك تشجيع يوري على التعرف على هذه التجربة ، يرجى القيام بذلك دون تأخير. #habr #vdudictionary VK ، FB .

شكرا لكم على اهتمامكم! جاء النص والمنشور نتيجة لرحلة خيالية أثناء دراسة OpenCV لمشروع الروبوت الخاص باختيار كرة الغولف .

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


All Articles