下のスクリーンショットを見て、これが機能しない理由を教えてください。TextRecognizeのリファレンスページにある例はかなり印象的です。このような1文字を認識することは問題ではないと思います。文字のサイズを変更したり、画像を鮮明にしたりしてみました。
これを自分で試してみたい場合に備えて、この投稿の下部に使用している画像を含めました。また、Google画像検索で「Wordfeud」を検索すると、このようなものがさらにたくさん見つかります。
下のスクリーンショットを見て、これが機能しない理由を教えてください。TextRecognizeのリファレンスページにある例はかなり印象的です。このような1文字を認識することは問題ではないと思います。文字のサイズを変更したり、画像を鮮明にしたりしてみました。
これを自分で試してみたい場合に備えて、この投稿の下部に使用している画像を含めました。また、Google画像検索で「Wordfeud」を検索すると、このようなものがさらにたくさん見つかります。
とてもかっこいい質問です!
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]
これはTextRecognizeを使用するのとはまったく異なるアプローチなので、別の回答として投稿します。MathematicaでWaldoを見つける方法と同じ画像認識技術を使用しています。
最初にパズルを解きます:
wordfeud = Import["http://i.stack.imgur.com/JHYuh.png"]
そして、パズルのピースを入手します。
Grid[pieces = ImagePartition[s, 32]]
文字Eに興味を持ってみましょう:
LetterE = pieces[[4, 3]]
相関画像を取得します。
correlation =
ImageCorrelate[wordfeud, Binarize[LetterE],
NormalizedSquaredEuclideanDistance]
そして、一致を強調表示します。
positions = Dilation[ColorNegate[Binarize[correlation, .1]], DiskMatrix[20]];
found = ImageMultiply[wordfeud, ImageAdd[ColorConvert[positions, "GrayLevel"], .5]]
以前と同様に、これには相関画像の2値化について少し調整する必要がありますが、それ以外は、このパズルの断片を識別するのに役立つはずです。
画像の品質が妨げられているのではないかと思いました。画像を二値化しても効果はありませんでした。認識は無意味でした。また、クロスワードパズルソリューションの非常に鮮明な白黒画像を試しました。(以下を参照)繰り返しますが、通常の形式でも2値形式でも何も認識されませんでした。
そこで、黒い背景を削除して、文字とその薄い黒いフレームだけを残しました。繰り返しますが、認識率は約0%でした。
いくつかの文字の周りからフレームを削除し、画像を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は完全に避けてください。
編集
aclがキャプチャされ、最後の5行(編集の上)を認識しようとしました。彼の結果(以下のコメントで):ほとんどがぎこちない。
私も同じことをすることにしました。しかし、Prashantがテキストのサイズに違いがあると警告したので、最初にズームインして、テキストが(私の目には)約20ピカになるようにしました。以下は私がスキャンしたテキストの写真ですTextRecognize
。
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
これが、2値化された画像の結果です。元の画像はJingの.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.