Tracking our expenditures was a problem as it takes a lot of effort to maintain the handwritten ledger or even if you use an App you need to add the product, price, and other details manually, and later summing the items up is another headache. So, we started with an idea to make an App that helps any common man of various age groups to be able to keep an account of his expenses. The App we made in this Hackathon helps you with:
We had few time constraints and there were many things we wanted to implement in order to make our App the ultimate solution for tracking your finance and investment. Few things we will love to change or add are:
We have currently deployed our Node.js Backend. We have not deployed OCR part and the Flask Backend which connects ML to our App, so please bear with us. You can see the UI and other parts of our App by installing Expo App from PlayStore and Scan the QR code here: https://exp.host/@neelbavarva/finance-tracker
Certain packages use fs in order to create and read files on local storage, which was causing an error on react-native, cause we were running it on the expo. To overcome this we just edited and commented on those parts in node modules as we were uploading images to the cloud and we didn't need them.
The problems we faced in the initial stage was about deciding how to use an OCR and how to do these work. It was also a headache to obtain the correct output from the OCR, to reduce this problem we improved the contrast of the scanned bill and then uploaded it, we also shifted to GCP for better output. But even after doing this, we could not get favourable outcome and hence we tried Adaptive Gaussian Thresholding which gave us a much better result, but still, the output text was not distinguishing the difference between columns and hence instead of using Text obtained we used the Poly Bound from Google Cloud Visions response and the obtained it ourselves if the two-pieces of texts are in the same column, or same words part, in the same row, etc. It showed us good results with a regular bill layout.
We have written ML codes before but were not prepared to connect them with React Native Apps, so that was a problem we faced and a good amount of time went on researching. Then we tried writing the entire code in tf.js but that didn't work as model needed to be loaded using fs and it was not possible with the expo. So we changed the model to MultinomialNB and saved the trained model to pickle format and connected it using Flask Backend. To properly train the model, we have used scraped data as per categories from Indian Mart and it had 70K products from these 6 categories.
Discussion