Braille Recognition to text (image processing)

I haven’t written anything in OpenCV myself yet, but I searching for a way to convert Braille in images to text. What is the best way to proceed?
The braille was constructed as a vector, so it is available in very good quality. Now I want to check if the correct characters have been used. This is surely easy to solve with OpenCV.
Best via command line, so that a whole set of these braille images are converted to text

have you tried OCR libraries?

what has your research/lit review yielded?

one raster data approach would be to segment the image and find the bumps.

given vector data, you already have the bumps. if the data contains other graphical objects, you’d want to filter it so you just have the bumps.

given bumps, you have to associate them into glyphs. you need to know the unit distance (possibly different per axis) and you’d want to know the rotation of the whole thing.

you’d wanna do that by looking at nearest-neighbor distances. for every bump, find the nearest neighbor and note the distance (and perhaps direction vector). perhaps query for the nearest N>= 1 and do a histogram from all of those distances.

the shortest, or most frequent, distance would be the unit distance. you’d want to make a note of the vector, and check (with a cone or two) in a perpendicular direction for shortest/most frequent distances there. now you know the orientation of your braille.

given that, you can piece bumps together into glyphs.

since a glyph is a “3x2 matrix”, you implicitly know which way words/lines go. just find those glyphs with enough bumps in them to tell.

from there, glyphs can be pieced together into words and lines.


Thanks for the detailed write up.
Sounds all logical to me, but since I have no experience programming this directly, can you describe an example?

are you even sure about the ‘image’ part ?
where does this happen ?

(e.g. on the web, there are unicode glyphs for this: ⠃⠗⠁⠊⠇⠇⠑)