Как конвертировать/сопоставлять рукописный список имен? (ГВР)

Я хотел бы посмотреть, могу ли я сканировать листок входа для класса. Хорошей новостью является то, что я знаю 90% имен, которые могут быть написаны.

Моя идея состояла в том, чтобы использовать tessaract для анализа изображения имен, а затем использовать алгоритм Левенштейна для сравнения каждой строки со списком имен в моей базе данных, и если я получу достаточно близкие совпадения, то это имя правильно.

Этот подход звучит как хороший? Если нет, другие идеи?

Я попытался использовать tesseract на листе образца (см. ниже)

введите описание изображения здесь

Я использовал:

tesseract simple.png -psm 4 outtxt
Tesseract Open Source OCR Engine v3.05.01 with Leptonica
Warning. Invalid resolution 0 dpi. Using 70 instead.
Error in boxClipToRectangle: box outside rectangle
Error in pixScanForForeground: invalid box

Я предполагаю, что это не понравилось в строке 2, потому что я пошел ниже строки.

Полученные результаты:

1.. AM: (harm;

l. ’E (J 22 a 00k

2‘ wau \\) [HQ

4. KIM TAYLOE
5. LN] Davis

6‘ Mzflé! Ha K

Очевидно, что не самый большой, я думаю, что совпадения расстояний для 4 и 5 будут работать, но остальные даже не близки.

У меня есть контроль над моим листом регистрации, но не с почерком для людей, поэтому, если какие-либо изменения, которые я могу сделать, чтобы помочь, пожалуйста, дайте мне знать.

Ответ 1

Microsoft предлагает API OCR для рукописный текст (прокрутите страницу вниз, это не стандартный текст ocr api):

Предварительный просмотр: чтение рукописного текста с изображений Эта технология (рукописный OCR) позволяет вам обнаруживать и извлекать рукописный текст из заметок, букв, эссе, досок, форм и т.д. Он работает с разными поверхностями и фоном, такими как белая бумага, желтые липкие заметки и доски.

Распознавание рукописного текста экономит время и усилия и может сделать вас более продуктивным, позволяя вам делать образы текста, а не записывать их. Это позволяет оцифровать заметки, которые затем позволяют быстро и легко выполнять поиск. Это также уменьшает помехи в бумаге.

Примечание. Эта технология в настоящее время находится в режиме предварительного просмотра и доступна только для текста на английском языке.

Чтобы попробовать эту демонстрацию оптического распознавания символов, загрузите локально сохраненное изображение или укажите URL-адрес изображения. Мы не храним изображения, которые вы поставляете для этой демонстрации, если вы не дадите нам разрешение.

Изменить: вот мои результаты теста, он почти идеально подходит для ваших входных данных:

введите описание изображения здесь

Ответ 2

Поскольку ваша цель состоит в том, чтобы получить только имена - я бы предложил вам уменьшить tessedit_char_whitelist до английского алфавита ( "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789." ), чтобы вы не получили символы, которые вы не ожидаете в качестве вывода, например \\) [.

Ваш первоначальный подход к вычислению расстояния L прекрасен, если вам удастся извлечь текст из рукописного изображения (что является трудной задачей для tesseract).

Я также предлагаю запустить некоторую предварительную обработку на вашем изображении. Например, вы можете удалить горизонтальные линии и извлечь из них текстовые ROI. В лучшем случае вы сможете извлекать отдельные символы, но даже если вы этого не сделаете - вы получите лучшие результаты и сможете отличать имена результатов "по строкам".

Вы также должны попробовать другие рекомендуемые этапы улучшения качества вывода, которые вы можете найти в вики Tesseract OCR (ссылка)