ReceiptBudget
După cum am promis în urmă cu câteva zile, voi prezenta proiectul meu cu care am participat la Imprezzio Software Contest și pe care probabil îl voi prezenta la licență.
Ideea aplicației a pornit în anul 1 de facultate, când în primele luni tot rămâneam uimit că îmi zboară banii, așa că am început să notez în Excel toate cheltuielile mele. Cu timpul, tabela Excel a devenit tot mai complexă și până la urmă am zis că mai bine îmi fac propria aplicație, cu care să pot scana bonurile și să îmi facă OCR pe ele.
Partea de scanat de bonuri... nu mi-a ieșit așa de bine cum aș fi vrut. Deși partea de character segmentation și character recognition fiecare are acuratețe peste 90% pe litere individuale, există o mică mare problemă la curățarea suficientă a imaginii pentru a ajunge la pătrățele bune pentru litere, iar la extragerea de informații din litere deocamdată folosesc un algoritm simplu cu reguli. Toate acestea, combinate cu faptul că aplicația este scrisă în Python și durează vreo 35 de secunde să termine OCR-ul pe un bon, fac ca deocamdată să meargă mai rapid introdusul manual de date decât scanatul.
Dar am de gând să îmbunătățesc aceasta până la licență. Vreau să folosesc ceva rețele neuronale mai șmenoase, cu care am început deja să mă joc, și în unele cazuri oferă câte 5% în plus la acuratețe (până acuma am folosit Random Forests și SVM pentru segmentare, respectiv clasificare). De asemenea, vreau să schimb algoritmul de curățare/extragere de text și să folosesc Stroke Width Transform, iar pentru extragerea de text să folosesc ceva probabilistic, gen un Naive Bayes Classifier.
A doua parte a aplicației mă ajută să văd cum mi-am cheltuit banii. Conține un heatmap, culorile fiind mai roșii acolo unde am cheltuit mai mulți bani. Acest heatmap poate fi văzut per ansamblu (toate cheltuielile ever) sau pe zile (o animație).
]
Pe lângă aceasta, mai este și un dashboard unde se pot filtra cheltuielile după magazin, lună, zi, sau interval în care s-au efectuat și se pot analiza mai îndeaproape.
Și la această parte mai am de gând să lucrez. Aș vrea să fac să fie nu doar un dashboard de analiză, ci și unul predictiv, adică să îmi învețe modul meu de cheltuire a banilor și să mă avertizeze duminică: vezi că mâine, de obicei, cheltuiești mulți bani, sau la început de lună: vezi că urmează să plătești chiria, fără să îi zic eu explicit despre cheltuieli recurente.
De asemenea, ar fi frumos să fac o aplicație pe mobil. Android only for now :P
Prezentarea mea de la concurs este aici.
P.S. Cum arată câteva filtre învățate de Restricted Boltzmann Machines pe setul meu de 7000 de litere: