Portfolio Project

Handwriting Legibility Scoring

PyTorch CNN Fine-Tuning

Data Science Machine Learning Python PyTorch AWS Docker CNN

STAR Summary

Situation
My wife says my handwriting is hard to read. I wanted an objective score.
Task
Owned the end-to-end build, from implementation through the final deliverable.
Action
  • Built three digit-recognition models, moving from a simple baseline to a CNN.
  • Trained on MNIST (60,000 digits) and selected the best model.
  • Deployed it behind a serverless scoring API for the live demo.
Result
  • The best model reached ~99% test accuracy on MNIST (see notebook).
  • On a small personal handwriting set, accuracy was ~75.6% (not a benchmark; see notebook).
  • My wife was right.
Stack
Python · PyTorch · AWS · Docker · CNN
Status
Live interactive demo

Evaluation & tradeoffs

Status
Measured
Goal
Recognize handwritten digits and use model confidence as one input to a legibility score.
Dataset
MNIST plus a small personal handwriting set used only as a domain-shift check.
Split
Standard MNIST training and test datasets: 60,000 training digits and 10,000 test digits.
Baseline
The first model reached 92.302% accuracy on the MNIST test set.
Decision
Selected model v3 because it produced the highest recorded MNIST test accuracy.
Metrics
  • Best MNIST test accuracy: 98.952% — Model v3, selected from the three notebook architectures.
  • Personal handwriting accuracy: 75.56% — Small custom set; included as a domain-shift check, not a benchmark.
Limitations
  • MNIST is a narrow digit-recognition dataset and does not represent general handwriting legibility.
  • The custom handwriting sample is small and its size is not documented in the published result.

Demo

Notes

MNIST is the training baseline; the personal handwriting scores are a domain-shift check, not a full handwriting benchmark.