Inspiration

Millions of visually impaired people use physical Braille daily — but caregivers, teachers, and volunteers often cannot read it. A nurse reading a patient's Braille medication notes, a teacher understanding a student's Braille worksheet, a volunteer at a library — all face the same barrier. We built BrailleVision to bridge that gap using a camera and AI.

What it does

BrailleVision takes a camera photo or webcam feed of real physical embossed Braille paper and converts it into English text and spoken audio in real time. Point your camera at any Braille page — the system detects the raised dots, groups them into Braille cells, decodes each pattern, and reads the result aloud. No Braille literacy required.

How we built it

Pure classical computer vision pipeline — no pretrained model needed:

  1. CLAHE contrast enhancement to handle uneven lighting
  2. Adaptive thresholding to isolate dot shadows on paper
  3. Circular contour detection with area and circularity filters
  4. Gap-based row clustering and cell segmentation
  5. 2×3 dot grid pattern extraction mapped to Grade 1 Braille lookup table (64 patterns)
  6. gTTS text-to-speech with offline pyttsx3 fallback
  7. Gradio web UI with webcam support and accessibility features

Stack: Python, OpenCV, NumPy, Gradio, gTTS

Challenges we ran into

The hardest problem was cell segmentation — distinguishing the gap between two dots within the same Braille cell versus the gap between two different characters. We solved this by computing the median dot width dynamically and using it as a reference threshold. Uneven lighting was another challenge, handled by CLAHE normalization before thresholding.

Accomplishments that we're proud of

100% accuracy on synthetic Braille across 10+ test words. Full Grade 1 Braille support including capital indicators and number indicators. The system works with zero pretrained models — pure OpenCV, making it lightweight and deployable anywhere including edge devices.

What we learned

Physical Braille detection is fundamentally a shadow detection problem — raised dots only become visible under raking light at 45 degrees. CLAHE was essential for real-world robustness. Gap-based segmentation using relative dot size (not fixed pixel thresholds) makes the system resolution-independent.

What's next for BrailleVision — Physical Braille to English

  • Fine-tune YOLOv8 on a labeled Braille dot dataset for better real-world robustness
  • Grade 2 contracted Braille support
  • Mobile PWA with real-time camera alignment guide
  • Tamil and Hindi Braille support for Indian users
  • Integration with smart glasses for hands-free reading

Built With

Share this project:

Updates