Register
Submit a solution
The challenge is finished.

Challenge Overview

Challenge Objectives

  • New basic web app that demonstrates some basic OCR functionality.
  • This will be used later on in a production web app

Project Background


We are building a Smart Investment Advisor platform that empowers users of financial/brokerage sites to back-test, find new ideas for, optimize and trade their portfolios, based on proven theories pioneered by Nobel Prize-winning economists. Traditional financial/brokerage sites only allow users to see price charts and other data of individual stocks, but do not provide a holistic view of the portfolio.

This challenge will be part of the platform, implementing OCR for reading in portfolio data from provided screenshots.

Technology Stack


For this challenge we will target Python for the OCR.  The web server is at the developers discretion, but the production environment will use Node.  The existing prototype that we will be filling in is already done in Angular.  
You are encouraged to use Tesseract for this challenge:

https://github.com/tesseract-ocr/tesseract

Individual requirements


These requirements cover the flow of the expected proof of concept.  The proof of concept should be implemented as described below.  The UI isn't overly important at this time, but you are encouraged to make it look reasonable using Bootstrap CSS.

1.  Upload a screenshot

The user will first upload a screenshot showing the details of their brokerage account.  A few samples are provided in the forum, and you can likely find more examples in Google Image searches.
The uploaded file will be processed and displayed in the proof of concept web app for tagging (see next requirement)

2.  Tagging (Major requirement)

The displayed image must have highlighting applied of all possible text items, using rectangles.  The user can then "tag" each rectangle to tell the app where the relevant data is located.  The main pieces of information we are looking for are:
  • Stock code
  • Number of shares
Since we only care about the stock code and number of shares, we will ask the user to tap all rectangles that hold these data fields. The app will then automatically figure out which are stock codes and which are the corresponding number of shares. We can assume that a stock code and its corresponding number of shares for the same stock should appear on the same row (use vertical coordinate to determine this).  We can assume that if there are two items on the same horizontal row or in very close proximity, then one should be the stock ticker code and the other is the corresponding number of shares.

3. Duplicate items

If the app finds some repeated items (that is, the same stock ticker code and number of shares pair appearing more than once, possibly because the same item appears on two pages due to scrolling), then it automatically excludes the duplicate items.

4.  Final display

Then the app should then create a list of (stock ticker code, number of shares) and presents it on a final page in the web app, which shows that the stock code and shares amount were parsed successfully.
 

Deployment guide and validation document


Make sure to require two separate documents for validation.

A README.md that covers:
  • Deployment of the app and installation of the dependencies.
  • Configuration values and how those should be set

A Validation.md that covers:
  • For each numbered requirement, there should be a matching numbered validation item in the Validation.md file that describes how the requirement can be validated by reviewers.

Validation video / screencast
This is optional, but can be quite helpful for review and validation.  
 

What to submit:

  • The code for the proof of concept
  • README.md
  • Validation.md


Final Submission Guidelines

Please see above

ELIGIBLE EVENTS:

2020 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30111394