VisoraAI is a student-built assistive reading prototype. Explore the stack →

Deep dive

OCR recognition layer.

The recognition layer converts the processed image into machine-readable text and decides whether the result is reliable enough to speak aloud.

Purpose

OCR is the part users think of as “reading,” but it depends heavily on every layer before it. The recognition layer should extract text, filter weak results, and avoid speaking nonsense when confidence is low.

  • Convert enhanced image crops into text.
  • Use confidence values to reject unreliable output.
  • Clean spacing and line breaks before speech.
  • Support fallback OCR settings when the first pass fails.

Implementation direction

The current direction can use Tesseract or a similar OCR backend as a practical fallback while experimenting with a custom CRNN-style model. Output should be normalized before speech so the result sounds natural.

  • Run OCR on the best enhanced crop, not the raw frame.
  • Compare recognition confidence across preprocessing variants.
  • Normalize whitespace, punctuation, and line order.
  • Keep low-confidence output separate from confirmed readable output.

Failure modes

OCR fails when characters are distorted, too small, blurred, or segmented incorrectly. It can also misread similar characters, such as O and 0, I and l, or rn and m.

  • Small text can collapse into unreadable shapes.
  • Blur can merge adjacent characters.
  • Stylized fonts can confuse recognition.
  • Incorrect line ordering can make speech confusing.

Future improvements

The deeper research direction is a custom OCR model trained for the kinds of text and blur conditions VisoraAI expects. A CRNN with CTC decoding could be evaluated against Tesseract using Character Error Rate.

  • Train on synthetic text images with controlled blur.
  • Evaluate CER across blur levels and burst depths.
  • Add a confidence threshold before speech output.
  • Test multilingual character sets after the English pipeline is stable.