Inspiration

A persistent issue we ran into in our lives as students was the necessity of typing assignments from hand-written drafts. To that end we decided to develop a solution to the such annoyances, not just for ourselves, but for stressed college students everywhere.

What it does

Veritas is a web hosted, computer-vision enabled, multilayer perceptron for handwritten data processing. In layman's terms it takes a handwritten document and turns it into computer text.

How we built it

The project consists of four modules: the computer vision, the pre-processing, the neural network, and the web interface. The first employs OpenCV to process a raw image with hand-written text into individual character images. The second is a pipeline of image filters to simplify the character images for processing in the neural network; of note, it reduces the size of the image to 8 pixels by 8 pixels. The third is a rudimentary neural network (a multilayer perceptron with four hidden layers to be precise) written in C++ designed to take in the image files and output the character in the image. The final part was a website written in javascript designed to take an image, feed it into the computer vision module, and display the output of the neural network for each character in the image.

Challenges we ran into

Connecting each module of the code was perhaps the greatest thing that prevented Veritas' success. Making modules cooperate despite being written in different languages with different functions was exceptionally difficult for us. As one of our principal programmers put it: "Imagine stabilizers, fuel tanks, booster rockets, and a cockpit, each beautifully designed and engineered to work flawlessly. Now imagine those in a pile, on fire. That is our project"

Accomplishments that we're proud of

Despite its short comings, each individual module of the project did its job well. Each part did essentially what it was designed to do. The computer vision in particular was rather revolutionary; it largely solved the kerning/keming problem (the issue of confusing character spacing) by inverting the input image and dynamically adjusting the delta for acceptable margin based on image size. The neural network, as well, was relatively streamlined, if based on older technology.

What we learned

Perhaps the biggest take-away from this was the necessity of top-down design in cooperative projects. If the conventions and means for data-transfer had been discussed in advance, the project would have been far easier.

What's next for Veritas?

Assuming the system can be made to be cohesive at some point, Veritas could act as a public utility for all students looking to streamline the process of digitizing their work. Additionally, a small degree of user-feedback (i.e. a method by which users can note failures in the output) could make it so Veritas could learn continuously and improve over time.

Built With

Share this project:

Updates