Each of us uses speed reading tools on the daily for online news articles and such, so it's always been a pain transitioning to printed media. We wanted a tool that would enable us to read as efficiently as we do online, in real life.

What it does

This program recognizes words on a physical page using nothing but a phone's camera. It displays it back to you rapidly, word by word, in order to prevent you from reading the word out loud in your head. There's a lot of research behind this speed reading technique, and it can result in crazy fast comprehension speeds.

How I built it

It's all client side, including "uploading" and all of the algorithms we used to segment words and process the image. All in vanilla Javascript, using no external libraries.

Challenges I ran into

We wanted to submit this to Datto's 4K, and keeping the project small turned out to be the hardest part of this project. Coming up with algorithms that were short and space efficient (no, not memory, but rather characters of source code!) was an interesting creative challenge. It was also hard figuring out how to iterate the words in the proper order -- left to right, top to bottom. In the end, we managed to figure it out.

Accomplishments that I'm proud of

The algorithms we implemented worked! We didn't use any external resources to figure out how to solve the problems we needed to. Building this project under the space constraints we were under was a tremendous learning experience and a fascinating puzzle. We wanted a challenge, and we conquered it.

What I learned

We taught ourselves a lot about the intricacies of processing textual images. We saw firsthand how frustrating it can be to teach computers to perform the simplest of tasks. Once we figured out how to locate words, it literally took us six plus hours to figure out how to list them in order. Real world images are noisy and bendy and not at all nice to work with... but we did it.

What's next for Reedr

We had plenty of ideas that we didn't have the time or space to implement: ways to improve the speed reading process, other algorithms to segment words, etc. Also, there are a bunch of general usability improvements that would make this much better for users.

Built With

Share this project: