Mathematica TextRecognize не до пар.
Пожалуйста, взгляните на снимок экрана ниже и посмотрите, можете ли вы сказать, почему это не сработает. Примеры на странице ссылок для TextRecognize выглядят довольно впечатляюще, я не думаю, что распознавание отдельных букв, подобных этому, должно быть проблемой. Я попытался изменить размер букв, а также улучшить изображение.
Для удобства, если вы хотите попробовать это самостоятельно, я включил изображение, которое я использую в нижней части этой публикации. Вы также можете найти гораздо больше, например, выбрав "Wordfeud" в Google Image Search.
![Mathematica screenshot]()
![Wordfeud board]()
Ответы
Ответ 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.