Подтвердить что ты не робот

Mathematica TextRecognize не до пар.

Пожалуйста, взгляните на снимок экрана ниже и посмотрите, можете ли вы сказать, почему это не сработает. Примеры на странице ссылок для TextRecognize выглядят довольно впечатляюще, я не думаю, что распознавание отдельных букв, подобных этому, должно быть проблемой. Я попытался изменить размер букв, а также улучшить изображение.

Для удобства, если вы хотите попробовать это самостоятельно, я включил изображение, которое я использую в нижней части этой публикации. Вы также можете найти гораздо больше, например, выбрав "Wordfeud" в Google Image Search.

Mathematica screenshot

Wordfeud board

4b9b3361

Ответ 1

Очень крутой вопрос!

TextRecognize использует эвристику для распознавания целых слов с английского языка. Это gotcha, который очень сильно распознает отдельные буквы.

Рассмотрим следующую мысль:

s = Import["http://i.stack.imgur.com/JHYuh.png"];
p = ImagePartition[s, 32]

Теперь выберите буквы, чтобы сформировать английское слово "EXIT":

x = {p[[1, 13]], p[[6, 6]], p[[3, 13]], p[[1, 12]]}

Теперь немного очистите эти изображения, например:

d = ImageAssemble[ Map[ImageTake[#, {3, 27}, {2, 20}] &, x ]];

Затем это возвращает строку "EXIT":

TextRecognize[d]

Mathematica graphics

Ответ 2

Это подход, совершенно отличный от использования TextRecognize, поэтому я отправляю его как отдельный ответ. Он использует ту же технику распознавания изображений из Как найти Waldo с Mathematica.

Сначала получите головоломку:

wordfeud = Import["http://i.stack.imgur.com/JHYuh.png"]

Mathematica graphics

И затем получите кусочки головоломки:

Grid[pieces = ImagePartition[s, 32]]

Mathematica graphics

Интересует буква E:

LetterE = pieces[[4, 3]]

Mathematica graphics

Получить изображение корреляции:

correlation = 
 ImageCorrelate[wordfeud, Binarize[LetterE], 
 NormalizedSquaredEuclideanDistance]

Mathematica graphics

И выделите совпадения:

positions = Dilation[ColorNegate[Binarize[correlation, .1]], DiskMatrix[20]];
found = ImageMultiply[wordfeud, ImageAdd[ColorConvert[positions, "GrayLevel"], .5]]

Mathematica graphics

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

Ответ 3

Я думал, что качество вашего изображения может мешать. Бинаризация вашего изображения не помогла: признание было zilch. Я также попробовал очень четкое черно-белое изображение решения кроссвордов. (см. ниже). Опять же, ничего не было распознано в обычном или бинарном формате.

crossword solution

Итак, я удалил черный фон, оставив только буквы и их тонкие черные рамки. Опять же, признание было около 0%.

Когда я удалял фреймы вокруг некоторых букв И бинаризировал изображение, единственными частями, которые были узнаваемы, были те области, в которых не было ничего, кроме букв. (см. ниже)

crossword 2

Обратите внимание, что на выходе ниже ANTS, TIRES и TEXAS правильно идентифицированы (как и VECTORS), но почти ничего.

Обратите внимание также, что, хотя строки были широко разнесены, mma интерпретировал их как слова, а не отдельные буквы. Примечание "TEXAS" вместо "T E X A S".

TextRecognize[[email protected]]

(* output *)
ANTS FFWWW FEEWF
E R o If IU I?
E A FI5F WWWFF 5
5552? L E F F
T s E NTT BT|
[email protected];EE F
5 W E   ; OCS
FOFT W W R AL%AE
A TT I T ? _
i [email protected]'NF WG%S W
A A EW F I i
SWWTW W ALTFCWD N
H A V 5 A F F
PLATT EWWLIGHT
W N E T
HE TIRES C
TEXAS VECTORS

У меня не было терпения полностью очистить изображение. Было бы намного быстрее перепечатать текст вручную.

Заключение: не используйте распознавание текста в mma, если у вас нет абсолютно четкого текста против четного, яркого, предпочтительно белого, фона.

Результаты также варьировались в зависимости от используемого формата файла. Избегайте .pdf вообще.



Edit

acl захвачен и попытался распознать последние 5 строк (выше Edit). Его результаты (в комментарии ниже): в основном тарабарщина.

Я решил сделать то же самое. Но поскольку Прашант предупредил, что размер текста имеет значение, я сначала увеличил масштаб, чтобы текст (на мои глаза) был примерно 20 пика. Ниже изображен текст, который я сканировал, и TextRecognize d.


text2


Здесь результат небинаризованного TextRecognize (при таком большом размере):

Gliii. Q lk-ii`t`*¥ if EY £\[CloseCurlyDoubleQuote]1\[Euro]'EE \
Di'¥C~E\"P ITF SKI' T»f}!E'!',IL:?E\[CloseCurlyDoubleQuote] I 2 VEEE5\
\[CloseCurlyQuote] LEP \"- \"VE
1. ur e=\\..r.1.»».»\\\\ rw r 1»»\\|a'*r | r .fm -»'-an \
\[OpenCurlyQuote] -.-rr -_.»~|-.'i~-.w~,.-- nv n.w~»-\
\[OpenCurlyDoubleQuote]~"

Теперь вот результат для TextRecognize бинаризованного изображения. Исходное изображение было .png от Цзин.

I didn't have the patience to completely clean up the image. It would \
have been much faster to retype the
text by hand.
Conclusion: Don't use text recognition in mma unless you have \
absolutely clear text against an even-
colored, bright, preferrably white, background.
The results also varied depending on the file format used. Avoid .pdf \
altogether.