TextEecognize Mathematica не на должном уровне - PullRequest
13 голосов
/ 19 января 2012

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

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

Mathematica screenshot

Wordfeud board

Ответы [ 3 ]

14 голосов
/ 19 января 2012

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

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

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

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

11 голосов
/ 19 января 2012

Этот подход полностью отличается от использования TextRecognize, поэтому я публикую это как отдельный ответ. Он использует ту же технику распознавания изображений из Как мне найти Уолдо с 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

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

5 голосов
/ 19 января 2012

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

crossword solution

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

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

crossword 2

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

Заметьте также, что, хотя строки были широко расставлены, mma интерпретировала их как слова, а не как отдельные буквы.Заметьте «TEXAS» вместо «TEXAS».

TextRecognize[Binarize@img]

(* 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|
H0RWW@0WVlWF;EE F
5 W E   ; OCS
FOFT W W R AL%AE
A TT I T ? _
i iE@W'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. 
...