/ICDS-Mini-Hackathon-2021

This repository contains a set of invoice images and their labels, which will be used for data science related projects organised by Creative Software.

DataScience Hackathon 2021

Problem Statement

Accurately recognizing the total bill amount from scanned bills/inovice images.

Data Set

Data set included for this task consists of 600 scanned bills / invoices in PNG format, all of them labeled with the final total value of each bill.

Sample invoice

Image

Sample prediction

  • sample_invoice.json
    {"total": "1748.40"}
    
    Or
  • All result in a single file
    {
        "file_name"
    }
    

Expected Solution

Functional Requirement

A user should be able to upload/submit a set of images consisting of invoices and get the total value of submitted invoices. (Developing upload/submit functionality is not a must. Copying a set of images to a source directory is acceptable).

We are expecting existing OCR image-to-text extraction methods and implementations, to be re-used to extract the features from the images

Eg:

Tesseract OCR

AWS Public API

Azure

After extracting features from the images we are expecting a machine learning model to predict the total amount of the bill.

Task

Build a machine learning model to process a given set of images of invoices and extract the Total amount of each invoice separately.

As a pre-processing step you are expected to overcome following challenges in the data set

  • Images are not in the same resolution
  • Images will have different orientations and sizes
  • Some images could be partially damaged or might have poor ink quality

With pre-processing, its expected that existing OCR image to text extraction methods and implementations to be re-used to extract the features from the images and generate the input to the task of extracting total amount from the bill.

Apply the trained model on a validation dataset and produce and present the results.

Output

Output should be in the following format as a CSV saved to output file. Output should be logged to console in following format (No need to draw a table. Output should be well formatted).

File name total
Invoice_1.jpg 32
Invoice_2.jpeg 97
Grand Total 129

Presentation

  • All teams should share a working source code with one of the following method

    • Link to public github repository (Preferred)
    • ipython notebook if you are using Jupyter
    • Kaggle notebook
    • Google Colab notebook
    • Any other resource
  • Explain methods used for pre-processing data

  • Explain the Model/s used, and reason to select the particular model.

  • Result from validation dataset

  • Reason out the results with evaluation matrices : eg : F1 scores , confusion matrix

Evaluation Criteria

A new set of files (excluding the given training set) will be used to evaluate the prediction accuracy.

Marking scheme

  • Accuracy (70% Total)
    • A working, reusable model with high precision (40%)
    • Implementation of functional requirements (10%)
    • Pre-processing of data (10%)
    • Code quality (10%)
      • Readability
      • Best practices
  • Presentation (10%)
    • Method explanation
    • Identified challenges
    • Compare the results with ground truth
  • Q & A (20%)

Background

Use Case 1: Financial and Account Systems

Modern Financial Accounting Systems can save a lot of manual labor and discrepancies which occur due to manually entering data from printed invoices and receipts It will help to drastically speed up the supply chain processes as well.

Medical Bill Reimbursements

Accounts department receives diverse types of invoices for claims. Scanning through excessive amounts of invoices take up a lot of time of employees. The bills are received as PDFs and various image types. The accounts department is thinking about freeing up employee hours by automating the process of calculating total amount of the given set of bills. An example use case is given below.

Calculating petty cash requirements and payables of organisations

Petty cash are minor expenses incurred in organisations/teams when conducting their regular day-to-day work (e.g.: buying a marker, short eats etc.). These are done via bills, which need to be manually calculated by accountants and process for final payments at the end of the month. This system can categorise these bills and identify the types of payments incurred, whether the allocated budget is overused by a team and much more. This eliminates the manual process of reading bills and calculating the final payable amount.

image

Use Case 2: Personal expences tracking applications

Mobile applications helping to manage personal expenses are becomeing popular, most of them support the functionality of scanning the bills/invoices and updating them in the accounts management software automaitcally.

image