Inspiration

We were tired of often spending more time merging together multiple screenshots of lecture slides into the ultimate cheatsheet than spending time actually studying. Putting to them into MS Word and formatting would inevitably lead to:

The Microsoft meme

We decided to use CNN to obtain the font size of texts on screenshots and a 2D bin packing algorithm -- 2 Phase Bin Packing Hybrid First Fit Algorithm .

What it does

  • The user inputs a series of images
  • As we need to make sure that each optimally resized image is still readable to the user, we run a text detection algorithm making use of CNN in order to output bounding boxes around each word. We use this as a proxy for font size of images. We output a score for the size of words on each image
  • We resize images according to the scoring to make sure that all images ar approximately the same font size and are readable to the user
  • We merge all images into a pdf using a two phase binning algorithm in order to output images in the most space efficient manner

How we built it

Code, tears and guttural screams

We run the text detection and resizing in Python on a Flask Server using OpenCV. We have a React- Native front end and a Node.js backend. The user inputs the images which then triggers the text detection algorithm to run in python. We then run the binning algorithm in Node to pack all the images together.

We emphasised a clean and functional UI, that is both easy to use and appealing to the user-- and so we adopted a UI style called neumorphism.

Challenges we ran into

One of our biggest challenge was making all these different pieces of code work together synchronously.

Accomplishments that we're proud of

Having a fully working product!

We also managed to learn a lot more about CNN for text detection, 2 D packing algorithms as well as express.js

What we learned

Trying to merge changes together is horrendously painful.

What's next for CheatSheet Builder

  • Adding functionality to allow for user to resize certain images
  • Adding functionality to allow user to indicate what images to have near each other
Share this project:

Updates