Во-первых, вам нужно извлечь особенности для классификации.Гарнитуры, как правило, различаются по толщине линий, наличию засечек, «округлости» характерных частей.Таким образом, возможными функциями являются:
- Доля количества черных пикселей в фиксированной области.
- Попробуйте применить математическую морфологию эрозия несколько раз (и / или использовать разные маски) и вычислить эту дробь
- Вычислить среднюю компактность символа: периметр ^ 2 / площадь
- После применения эрозии подсчитать количество связанных компонентов для символа
- Вычислить удлинение и другие моменты изображения , а также направление
- и т. Д.
Я вижу здесь два варианта: либо рассчитать средние характеристики для всехсимволов или сначала попытайтесь классифицировать буквы, а затем классифицировать шрифт на основе некоторых конкретных букв (поэтому вы обучаете другой классификатор для другой буквы).Трудно сказать, какой из них лучше в вашем случае.
Что касается конкретного алгоритма обучения, Random Forest , кажется, хорошее место для начала.В библиотеке OpenCV есть реализация.