Built by first year Imperial College students Norbert Podsadowski, Filip Stollar, Alexandru Dan and Emanuele Rossi for the HackKings 2015 Hackathon :D

Try it out!


Username: norbz Password: 123

You won't be able to scan in new receipts, unfortunately.


We've always wanted easier access to information about what we buy, where, how often etc. Unfortunately, bank statements are very limited, and not easily accessible - and if you pay by cash, an Excel spreadsheet seemed to be the only plausible solution if you wanted to take care of your finances. We wanted to simplify personal finance in a way which everyone could adopt with very little effort, and provide a plethora of incredibly useful analysis functions on everyday financial spending.

We present: Recap - optical character recognition and analysis for receipts

What it does

Recap stands for "Receipt Capture" - it is composed of two major elements:

Android application - Used to scan, crop and send receipt images to the web application

Web application - Used to digitalise, analyse and display data

The basic usage is as follows:

  • Remember to take your receipt with you whenever you go shopping, at any store in the world
  • Collect your receipts and take a few seconds to scan them at your convenience using our Android app
  • The receipts are automatically sent to the web application
  • The web app applies Optical Character Recognition (OCR) to the receipt images to digitalise them, transforming printed text into storable and computer-readable data
  • The web app can then perform any kind of data analysis on what is stored on the database
  • Receipt addition is done in real time using Pusher; so the web app updates automatically once a new receipt is scanned

Currently our web app implements a small set of features:

  • Lifetime receipt history
  • Budget planner
  • Simple statistics like most frequently visited shop, average monthly spending, etc.

How we built it

Back end

  • Python
  • Django web framework
  • Tesseract OCR library
  • SQLite database

Front end

  • HTML5
  • CSS3
  • JavaScript
  • Bootstrap framework


  • Pusher

Challenges we ran into

  • Finding a good OCR library which handled receipt fonts well (we used tesseract)
  • Getting tesseract to compile and run on the web server, and be callable from Django
  • Cleansing OCR output in preparation for database addition
  • Making a multi-part HTTP request from Android, which proved a lot harder than it should have been :]
  • Working with Android, Django, Pusher, Python and other technologies which we all had little to none experience with

Accomplishments that we're proud of

  • Transferring real-life objects into a computerised format! (and actually managing to achieve plausible results)
  • Learning a whole bunch of awesome technologies in 24 hours
  • Starting from a blank piece of paper with no idea to a semi-polished, functional and (hopefully) unique application usable by a very wide audience!

What we learned

  • How to work with a whole bunch of awesome technologies
  • How to go from an idea to a fully working application within very tight time constraints
  • How to collaborate, delegate tasks, ask for help and deal with (very frequent) programming rage

What's next for Recap

The original plan was to make the app perform a lot more useful analysis on the data, if we had more time.

  • Adding card payment integration to make the app a complete centre for personal spending
  • Detecting price changes and price differences across different stores
  • Fancy data visualisation (bar charts, graphs)
  • Giving advice on which items you could cut down spending on
  • Using the training function of tessaract to train the scanner to recognise receipt fonts better
  • Aggregating the same types of items, despite different naming across stores
  • Improving the OCR by implementing more clever algorithms to cleanse input

We are very excited to present our application to our fellow hackers!

Share this project: