Лучший способ распознать символы в скриншоте?

Что вы посоветуете для распознавания всех персонажей из скриншота? Снимок экрана совершенно ясен (только черный текст на белом фоне), также я могу выбрать любой шрифт starndard для текста (установленного в Windows). Я пробовал некоторые способы распознавания (Tesseract и т.д.), Но он ошибался в распознавании некоторых персонажей (что сбивало меня с толку, поскольку текст был без малейшего шума, а шрифты были наиболее распространенными - Courier New, Fixedsys и т.д.), и мне нужно это на 100% точно. Есть ли какая-нибудь библиотека для этой конкретной цели, какое-то распознавание образов или что-то еще? или я должен получить скриншот с некоторым моноширинным шрифтом и перебрать изображение, перемещающееся вправо + font_size, а затем сравнить захваченную вещь с представлением букв и номером одного и того же шрифта в одном размере? Какой был бы лучший подход к этой проблеме? Большое вам спасибо заранее.

ОБНОВЛЕНИЕ: Наконец-то мне удалось получить 100-процентную точность, обучив Tesseract с моноширинным шрифтом (Courier New) в точном размере, который я снимаю на экране. Надежда, которая поможет кому-то в будущем:)

Ответы

Ответ 1

Поскольку это первый результат в Google для tesseract recognize screenshot, позвольте мне сделать бит некромантии и добавить гораздо более простое решение.

Tesseract ожидает изображения с разрешением около 300 точек на дюйм и более, а стандартный dpi для Windows - 96. Это означает, что вам нужно перемасштабировать изображение до 300 %. После этого результаты резко улучшаются.

100%
1x scale
Результат: Whal would you recommend for recognizing all characters from a screensnor 7

200%
2x scale
Результат: What would you recommend for recognizing all chamcters from a screenth ?

300%
3x scale
Результат: What would you recommend for recognizing all characters from a screenshot ?

Все, что выше 300%, работает так же хорошо.

Ответ 2

Я был бы удивлен, если OCR даст столь плохие результаты на таком качественном вводе. Вероятно, вы хотите выбрать шрифт с острыми краями, без сглаживания, большего размера шрифта также поможет.

Кроме того, если это приемлемо, попробуйте шрифт OCR, указанный в этом вопросе SO:

Это должно дать вам наилучшие результаты - если это не идет на 100%, тогда я не знаю, что будет...

Не знаю, что вы пробовали рядом с Tesseract, но если вы этого не сделали, возможно, стоит попробовать другие. Они, кажется, обновляются недавно (Tesseract был обновлен год назад):

Есть также некоторые онлайн-версии, например:

который вы можете использовать для проверки образца документа. По этой ссылке:

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

Надеюсь, что это поможет.

Ответ 3

Я знаю, что вы уже решили свою проблему, но в случае, если это поможет кому-то еще. Две проблемы, которые я обнаружил при работе с скриншотами, - это то, что механизмы OCR чувствительны к следующим: (1) неправильное задание в заголовках файлов изображений и ( 2) проблемы прозрачности (то, что выглядит как белый фон, на самом деле является прозрачным). По некоторым причинам эти проблемы часто возникают на снимках экрана.

Кроме того, помимо Tesseract, еще одна возможность - попробовать API в http://www.wisetrend.com/wisetrend_ocr_cloud.shtml на основе механизма ABBYY OCR. (Преимущество состоит в том, что нет ничего, чтобы установить/настроить/etc, чтобы попытаться убедиться, что он будет работать на ваших изображениях - просто сделайте HTTP POST). Отказ от ответственности: WiseTrend - это клиент моей компании.

Ответ 4

У вас есть возможность изменить сглаживание текста на уровне ОС? Воспроизведение с этими настройками (или даже попытка отключить его) может дать вам лучший результат с существующими OCR тоже.