rolisz's site

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 chel­tu­ielile 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 seg­men­ta­tion și character recog­ni­tion fiecare are acuratețe peste 90% pe litere in­di­vid­uale, 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ă îm­bună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 clasi­fi­care). 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 prob­a­bilis­tic, gen un Naive Bayes Classifier.

2013-11-07_17h42_04

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 chel­tu­ielile ever) sau pe zile (o animație).

2013-11-07_17h52_30

Pe lângă aceasta, mai este și un dashboard unde se pot filtra chel­tu­ielile după magazin, lună, zi, sau interval în care s-au efectuat și se pot analiza mai în­deaproape.

Ș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, chel­tu­ieș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:

2013-11-07_18h28_34