Писал распознование. Нейронные сети не такое уж и будущее, а вполне себе настоящее. Но распознавание я писал без них. Алгоритм действительно писать надо под конкретную задачу. Более того если для 50% букв найти особенности (наличие закольцованности ("о") или двух("в"), хвостик ("ц" и "щ") и.т.д.) которые легко вычислить, и сделать правильный алгоритм вычленения букв из текста, то распознование становится очень точным. При этом должен быть какой-то алгоритм который для буквы будет вычислять определенную величину. (у меня это было отношение диагональных вертикальных и горизонтальных отрезков т.к. был масштаб и не весь алфавит) По этой величине ищем букву ближайшую из отсеянных по особенностям. Ну и конечно реализовать некоторую обучаемость (т.е. уточнять эту величину по полученным результатам)
Чистой нейронной сеткой тоже можно попробовать обойтись, но это весьма кривое решение, и оно дает результат примерно такой же как подсчет пикселей отклонения. Если её и использовать, то только как один из этапов. Предварительно должен быть достаточно сложный алгоритм поиска, поворота букв, и алгоритм отсеивания.
Писал давно, на Паскале. так что исходника не будет