Автоматическое распознавание шрифта с Python

Мне везло с SWF:: библиотека File по CPAN, и особенно инструмент dumpswf.plx , который идет с тем распределением. Это генерирует код Perl, который, когда выполнено, повторно создает Ваш SWF.

5
задан tom10 10 November 2009 в 16:44
поделиться

2 ответа

Как указано в OP, есть две части (и, вероятно, также третья часть):

  1. Используйте PIL для создания изображений из шрифтов .

  2. Используйте набор инструментов для анализа изображений, например OpenCV (который имеет привязки Python), чтобы сравнивать различные формы. Существует множество стандартных методов сравнения различных объектов, чтобы определить, похожи ли они. Например, масштабно-инвариантные моменты работают достаточно хорошо и являются частью инструментария OpenCv.

  3. Большинство стандартных инструментов в # 2 предназначены для поиска похожих, но не обязательно идентичных форм, но для сравнения шрифтов это может быть не то, что вам нужно, поскольку различия между шрифтами могут быть основаны на очень мелких деталях. Для детального анализа попробуйте сравнить профили x и y пути по периметру вокруг каждой буквы, должным образом нормализованные, конечно. (Этот или более сложный с математической точки зрения вариант был успешно использован при анализе шрифтов.)

4
ответ дан 14 December 2019 в 13:39
поделиться

Я не могу предложить код Python, но вот два возможных подхода.

  1. «Собственные персонажи». При распознавании лиц, учитывая большой обучающий набор нормализованных изображений лиц, вы можете использовать анализ главных компонентов (PCA) для получения набора «собственных лиц», который, когда обучающие лица проецируются на это подпространство, проявляют наибольшую дисперсию. «Координаты» входных тестовых граней относительно пространства собственных граней могут использоваться в качестве вектора признаков для классификации. То же самое можно сделать с текстовыми символами, т. Е. Многими версиями символа «A».

  2. Динамическое искажение времени (DTW). Этот метод иногда используется для распознавания символов рукописного ввода. Идея состоит в том, что траектория кончика карандаша (то есть d / dx, d / dy) похожа для похожих персонажей. DTW делает неизменными некоторые варианты написания одного человека. Точно так же контур персонажа может представлять траекторию. Затем эта траектория становится вектором признаков для каждого набора шрифтов. Я предполагаю, что часть DTW не так необходима при распознавании шрифтов, потому что символы создает машина, а не человек. Но это все же может быть полезно для устранения неоднозначности пространственной неоднозначности.

2
ответ дан 14 December 2019 в 13:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: