We will update our documentation here.
FinMan is an android application for managing you personal finance similar to one by mint.com. But what we intended to provide in addition to basic features is the ability to automatically add bill items from the photo of the bill taken by an android mobile.
We used google's Tesseract Engine for OCR and OpenCV for image preprocessing.
Note: We will first try to describe the aim of our project and later what we could practically achieve. We have also hosted our code on github.
We have divided our project into three modules (which were done independently which we planned to integrate later)
Objective of main.cpp is to extract the Total of the bill, Items and their prices from the processed binary image from imp.cpp.
ChallengesFinally this image stores all the above information in the struct.
AssumptionsIt involves designing and developing UI. Building an android application involves a steep learning curve. We need to first understand its API and usage.
Then integrating native C++ code into Java based android using JNI (Java Native Interface). Thankfully android simplifies this process for you by providing you with Android NDK (Native Development Kit) which would compile the native code and link it with you main android application.
Diagram describing basic workflow of our application:We could complete the image processing code and extract features from image of the bill using the C++ code. We also made the android app which could capture image send it to a C++ program and take a C++ struct with all details of bill filled in.
But we couldn't integrate the former C++ code with android using JNI as it uses library version of tesseract which couldn't be compiled on an android platform.
We intitially worked on tess-two, a fork of Tesseract Tools for Android, made an sample android app following guidelines from here
Later when we divided the work we used native tesseract-ocr engine and thought of integrating it with Java using JNI. But after the completion of the individual modules, found that it is not as simple as we expected and couldn't be done in time limit
Suggestion for next teams: Directly use tess-two (instead of tesseract) though it is a little imperfect
Note: This is a project report for CS663 Digital Image Processing course under Prof.Sharat Chandran
Finally we would like to conclude by saying that it has been a wonderful experience past few weeks and each of us have learnt a lot in the process
Thanks,
Team FinMan
We also thank various blogs on internet which helped us build our android app UI and helped us resolve all the issues, bugs we faced quickly