All projects

Handwritten Nepali Character Recognition

2019

A deep CNN that reads handwritten Devanagari — my undergraduate final-year project, reaching 99% validation accuracy.

PythonKerasDeep CNNFlask
Handwritten Nepali Character Recognition

The problem

Handwritten character recognition is a solved demo for Latin script — and a genuinely hard problem for Devanagari, where characters share a connecting headline (dika), differ by subtle strokes, and handwriting styles vary enormously. For our final-year Computer Engineering project at IOE, my team of four took on recognizing handwritten Nepali characters.

The approach

We built a deep convolutional neural network in Keras, trained on a labeled dataset of handwritten Devanagari characters, and wrapped it in a Flask interface so anyone could try the model against their own handwriting rather than taking our accuracy numbers on faith.

The experiment that mattered

We trained the same architecture under two optimizers — Adam and Nadam — and compared them properly instead of trusting defaults. Nadam, which adds Nesterov momentum to Adam's adaptive learning rates, consistently outperformed and carried the model to 99% validation accuracy.

As an undergraduate lesson, that comparison outlasted the accuracy number: the optimizer is a hyperparameter, and measuring beats assuming.

Looking back

This project — built with Anish Baral, Diwash Khanal, and Prabin Baskota — is where my interest in machine learning started. Years later it led me back: my Master's work on neural network training failures is, in a real sense, the theory behind everything we debugged empirically here.