Kratki sadržaj:
1. Priprema za riješavanje problema
2. Upoznavanje s problemom i usmjeravanje na određene teme
3. Riješavanje problema i testiranje
4. Proba 01, Proba 02, Proba 03
5. Zaključak - Analiza kvalitete rada, dodaci i komentari za poboljšanje
Dosadašnji rad:
Instalacije.
Ubuntu 12.0.4 LTS
All ready and installed.
Proučavanje ulaznih dokumenata:
Učenje Python-a i XML-a:
Učitavanje n slika u Python, pretpostavljeni oblik image-0000.jpg (različite mogućnosti za ekstenziju, “.jpg, .png”)
1. Funkcije za OCR
2. Instalirati potrebno okruženje na windowsu (jednostavnije i brže izvođenje skripte za isprobavanje)
Dosadašnji rad
Primjeri za organizaciju popunjavanja izvještaja.
Primjer 01.
TO — DO
1. Instalacija Scipy i AvConv paketa na windowsu. STATUS: DONE
2. Instalacija OCR funkcija STATUS: None
3. Coursera Python Course. STATUS : First part DONE , Second Started (5 Hours of watching and learning)
4. Proučavanje OCR metoda. STATUS : 90% DONE
5. Export modul. Napisana funkcija koja prima listTransition i listTitle te u .csv dokument upisuje potrebne informacije nakon analiza videopredavanja.
6. Algoritam za praćenje pojavljivanja powerpoint sučelja, STATUS: 95% DONE
7. U daljnjem razmatranju uzimati te kvalitetnije uzorke, i proučavati OCR funkcije u detalje, te pronaći dobar algoritam za praćenje tema u takvim uvjetima. STATUS: Working
8. Prebaciti dosadašnje testiranje na linux, (razlika je samo u tome da na linuxu postoje još neke dodatne mogućnosti i funkcije koje ću tako i istražiti) STATUS: DONE
9. Isplati li se brisati iste slike. STATUS : Working
10. User input modul. STATUS : 90% DONE
Primjer 02.
Proba 01:
Slika je nastala iz skripte koja prolazi kroz n slika te vraća vremena pojavljivanja plavih slika (blue-image) za proizvoljno izmješane slike (tako da se provjeri ispravnost koda).
1. Proučavanje biblioteka i novih rješenja za OCR STATUS: Started
2. Osmišljavanje algoritma za user input, te algoritma za OCR slike po dijelovima, proučavanje dostupne literature… STATUS: Started
3. Pass second and third Coursera Python Course. STATUS : In progress
4. Proučavanje Tkinter modula za izradu GUI aplikacije STATUS : 20% Done (not important at this moment )
5. Optimization of written algorithms. STATUS: In progress
4. tjedan (04.04.2016 - 10.04.2016)
Dosadašnji rad
Proba 02:
1) Uspješan prolazak kroz 902 slike
2) Formati: 1920×1080 (dobra kvaliteta, nije ni bitno jer se kasnije brišu slike, a odlično može prepoznati OCR sve na takvim slikama)
3) Output datoteka (doduše previše “here goes slide” umetanja…jer još nije napisan algoritam): Odlično praćenje plave slike, malo lošije za powerpoint:
Razlog: Sitno zamućivanje određenih slika radi brzog prebacivanja sučelja powerpointa, pa je odstupanje za 5-10 farme-ova (tj. 5-10 sec)
Rješenje: Postaviti algoritam na jednostavnije linijsko pretraživanje i smanjiti normu, te isprobati ponovo samo na dijelu gdje se nalazi powerpoint.
Izvještaj: Works perfectly , od početka do kraja, od frame-a do frame-a, našao powerpoint sučelje i nakon što ga više nije bilo zaustavio se.
4) Ispravljanje sitnih grešaka, i omogučavanje iznimaka za pojedine procese u algoritmu
5. tjedan (11.04.2016 - 17.04.2016)
1. Proučavanje biblioteka i novih rješenja za OCR STATUS: In progress
2. Osmišljavanje algoritma za user input, te algoritma za OCR slike po dijelovima, proučavanje dostupne literature… STATUS: Working
3. Pass second and third Coursera Python Course. STATUS : Second DONE!, Third Started
4. Proučavanje Tkinter modula za izradu GUI aplikacije STATUS : 20% Done (not important at this moment )
5. Optimization of written algorithms. STATUS: 95% Done </font>
Proučavanje literature:
https://en.wikipedia.org/wiki/Canny_edge_detector
http://scikit-image.org/docs/dev/auto_examples/applications/plot_rank_filters.html
http://stackoverflow.com/questions/17103735/difference-between-edge-detection-and-image-contours
https://en.wikipedia.org/wiki/Minimum_bounding_box
https://en.wikipedia.org/wiki/Precision_and_recall
https://en.wikipedia.org/wiki/F1_score
http://homepages.inf.ed.ac.uk/rbf/HIPR2/dilate.htm
http://www.danvk.org/2015/01/09/extracting-text-from-an-image-using-ocropus.html
http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_imgproc/py_thresholding/py_thresholding.html
https://en.wikipedia.org/wiki/Artificial_neural_network
https://en.wikipedia.org/wiki/Long_short-term_memory
https://en.wikipedia.org/wiki/HOCR
http://www.danvk.org/2015/01/11/training-an-ocropus-ocr-model.html
https://github.com/tmbdev/ocropy/issues/16
https://en.wikipedia.org/wiki/Supervised_learning
I još dosta odličnih prezentacija i stvari za proučiti, ali to ću organizirati kada izdvojim ono najbitnije i najkorisnije od svega, pa staviti ovdje.
Planovi za sljedeći tjedan:
1. Implementirati osnovnu funkcionalnost obrade slide-a, rasčlamba algoritma na User Input (template slide-a), obrada slike u odnosu na taj Template te izvođenje potrebnih OCR funkcija i analiza teksta za određivanje teme, broja slide-a, eventualnog sadržaja i sl.
2. Isprobati razne mogućnosti, u vezi kvalitete algoritma, kvalitete slika i videa, isprobati 2-3 template-a (različitih slide-ova) koji se većinom pojavljuju, te uspoređivati razne outpute: 1, 2, 5, 10 fps-a, razne kvalitete i rezolucije slika i sl.
3. Ukomponirati sve navedeno i napraviti Probu 03.
6. tjedan (18.04.2016 - 24.04.2016)
Započeo sam točke pod 1 i 2, ali pošto ć e sada ispiti bit će to malo sporije, dati ću sve od sebe da napravim što više.
Što se tiče dogovora na zadnjem sastanku, sada koristim “.png” formate, te je slika od 1024 x 768 dovoljno dobra, no možda ne i savršena, dolazi još uvijek do nekog odstupanja, tako da je OCR točan u 98% slučajeva.
Za potpunu točnost format 1920 x1080 (slike koja nam ionak nije važna) bio bi sigurno 100% točan i pogodan za OCR.
Kada dovršim pisanje algoritma i sve ukupno isprobam na 3-4 videa, vidjeti ćemo koji nam rezulati više odgovaraju.
Mogućnost definiranja predloška slajda je u izradi. A ostale sitnice kao što je “export početaka određenih djelova predavanja” a ne “kraj” su sređene i rade odlično.
Napisao jednostavan alogoritam po jednostavnom predlošku:
Zaključak: OCR radi brže u ovisnosti o veličini slike, manje od pola sekunde po djelu.
Uspješno exportanje Naslova slide-a i brojačne vrijendosti slide-a u datoteku.
Vizualno to izgleda: http://pastebin.com/HvdtXeKA
Daljni korak: Povezati to sve s algoritmom koji će pratiti teme i polako završavati skriptu (napraviti jednostavih par predložaka koje korisnik može izabrati kao njegov tip prezentacije, a i mogućnost čistog unosa koordinata gdje se što nalazi)
Povezao sam većinu toga, sad još moram jasnije definirati predloške slide-ova i to sve isprobati na kvalitetnijoj snimci predavanja, a onda napraviti Probu 03 i dovršavati cijeli projekt.
Napravio početne probe, ali i dalje radim sa snimkom manje kvalitete a ne 1024×768, ali funkcionalnost alogoritama je tu, još samo treba fino ukomponirati što bolju kvalitetu, jer nam output ovisi najviše o OCR-u, i nakon toga trebam još povezati sve preko modula i napraviti par poboljšanja (dodatne ideje) i onda ćemo definirati predloške slajdova te način kako ih unosiit (i za to imam ideje).
Uspio sam posložiti sistem koji čita ono što treba, a ako ne uspije pokušava povećati sliku. Nešto kao double-check.
Uglavnom, rezultat je da mogu točno obraditi svaku snimku u formatu 1024×768. Neće biti potrebno povećavati na 1920×1080.
Nakon jednostavne optimizacije alogirtma, vrijeme izvođenja je cca 1h i 30 min za snimku od 2-3 sata. – Zadnji rezultati
Planiram i dalje poboljšavati brzinu i učinkovitost algoritama te smanjivati pogreške OCR-a.
Jedan primjer output file-a za dio snimke 30-minuta, tj. 902 slike:
Legenda: BlueImage - Pojava plave slike, Something Else: Desktop, i sve ostalo, PowerPoint: Pojava powerpoint Sučelja, TitleSlide-a: Naslovi tema u samoj preznetaciji.
http://pastebin.com/h1uYVzzr
7. tjedan (24.04.2016 - 01.05.2016)
Rad za vikend (koliko stignem):
1) Uređivanje, poboljšanja i implementacija user inputa.
2) Sređivanje GUI-a
3) Sređivanje dokumentacije, izrada mind-mape projekta
8. tjedan (01.05.2016 - 08.05.2016)
Nastavak:
1) Uređivanje, poboljšanja i implementacija user inputa.
2) Sređivanje GUI-a
3) Sređivanje dokumentacije, izrada mind-mape projekta
9. tjedan (09.05.2016 - 15.05.2016)
1) Unos početnih uvjeta
2) Napraviti 2 export modula
3) Bug Fixes, naming, documentation, how to tutorials
4) Izrada GUI-a
7) Proba 04 – Ubuntu 16, Tesseract
10. tjedan (15.05.2016 - 23.05.2016)
Ovaj tjedan nisam stigao radi obveza.
11. Tjedan (23.05.2016 - 29.05.2016)
1) Unos početnih uvjeta == DONE
2) Napraviti 2 export modula == DONE
3) Bug Fixes, naming, documentation, how to tutorials == Partially Done
4) Izrada GUI-a == In process
5) Proba 04 – Ubuntu 16, Tesseract == In Process
12. Tjedan (30.05.2016 - 05.06.2016)
1) Poboljšati algoritam za prepoznavanje slide-ova
2) Definirati opći template i napraviti par proba
3) Dovršiti dokumentaciju
4) Isprobati sve na Ubuntu 16
13. Tjedan (06.06.2016 - 12.06.2016)
Zbog nadolazećih ispita ne stižem baš previše raditi na skripti, ali ću sada dovršiti dokumentaciju i procesiranje u skripti. A onda ako ne stignem prije, nakon završnih ispita složiti kvalitetan GUI za sve ostalo.
U planu je i izvodi se:
1) Poboljšati algoritam za prepoznavanje slide-ova
2) Definirati opći template i napraviti par proba
3) Dovršiti dokumentaciju
4) Isprobati sve na Ubuntu 16
NOTES: 20-7-2016
Nakon par dana svladavanja Pythona i Tkinter Modula, ostalo mi je još odraditi neke sitnice.
Pa sam razmišljao za dodavanje baze podataka, u koju bi spremao podatke tijekom izvođenja programa kako se nebi izgubili ako se program sruši. (nestane struje ili nešto slično), pa će se jednostavnije moći i nastaviti određena obrada u bilo kojem trenutku.
Koliko će to biti pogodno za brzinu izvođenja isprobati ću vjerojatno sutra.
Sutra ću polako dovršavati cijelu skriptu i krenuti u izradu GUI-a kao osnovnog dijela aplikacije.
Isprobao sam i kako bi se napravio neki system independent .exe file, i našao sam način.
Još mi nakon završavanja svega preostaje samo igranje sa unosom template-a, izrada pokusa, probe na ubuntu a i općenito sa .exe aplikacijom i slično.
~~ NOTO C ~ ~