As a basic technique, use binarization and connected component analysis. This will give you “blobs” corresponding to the individual characters and you can get their bounding boxes.
You will face extra difficulties:
some characters can touch and form a single blob. You will need some detection logics to split them, for instance based on size and/or bad recognition score. In the nasty cases (several touching characters, characters of uneven width), you will have to try different splitting hypothesis and keep the best.
some characters are made of several blobs (such as accented letters), and some characters can appear fragmented. You can detect these situations when there are small blobs in a close vicinity. Here again, you will have to try grouping hypothesis (with a risk to group unrelated pieces) and keep the best.
the blobs will be reported to you in random order and you will need some extra logics to reorder them in the reading sequence.