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
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