私の質問はthis oneと似ていますが、より具体的な範囲です。JPG画像内のテキストのバウンディングボックスを見つける
私のカードゲームアプリケーションでは、スキャンされたJPEG画像にある単語をユーザーがクリックできるようにしたいと考えています。このサンプルPokemon trading cardをご覧ください。
この場合、ユーザーはマウスをテキスト "Scratch"の上に置くことができます。クリックすると、テキストの周りにパルス状の矩形の枠が表示されます。問題は、テキストの境界を検出する方法です。ユーザーがクリックする可能性のある単語の配列があります(これらはカードごとにデータベースから取得されます)。例を続けると、この場合の配列は["Scratch"、 "Live Coal"]になります。ユーザが「スクラッチ」をクリックすると、アプリケーションはコールバックを介して「スクラッチ」が「ライブコール」の代わりに選択されたことを知る必要があります。
私はこの問題を解決するために光学式文字認識ライブラリを使用することを考えていましたが、このためのオープンソースオプションは品質が悪い(例:GOCR)、複数のプラットフォーム(Tesseractなど)で十分にテストされていません。私はWindowsとMacの互換性だけを気にしています。 OCRを必要としない明白な/より単純なソリューション/アルゴリズムが欠けていますか?自分のデータベースにスキャンされたカードが何千もあるので、各カードのバウンディングボックスに手書きでコードを書くことはできません。ユーザは、それに付随するクリック可能なテキストの配列を用いて、自分のカスタムカードスキャンをアップロードすることもできる。
テキストの色は常に黒ではありません。許可されるカードとテキストスタイルが異なるこのpanoramaを参照してください。黒いカードは白いテキストを持ち、3番目の最後のカード(Zekrom)は白い輪郭の黒いテキストを持っています。
どのようなプログラミング言語のソリューションも高く評価されています。しかし、オープンソースのアルゴリズムやライブラリを探しています。 RubyやJavaのソリューションがあれば、私のコードは主にこれら2つの言語になっています。
EDIT:配列内の単語/フレーズの順番は、カードと同じであることを言い忘れました。したがって、アレイは["Live Coal"、 "Scratch"]の代わりに["Scratch"、 "Live Coal"]になります。私はそれが潜在的にタスクを簡素化できるので、これを言及しています。したがって、この例では、単に黒色のピクセルを探すことができます(ただし、白い円の黒い星を見なければなりません)。しかし、より小さなフォントで攻撃名の下に記述テキストがある場合はさらに難しいでしょう(例についてはパノラマを参照してください)。
ユーザーがイメージをアップロードすることを許可している場合は、入力した内容が実際にテキストと一致することを確認するにはどうすればよいですか?また、カードの向きは変わりますか(カードが横向きに表示されたり、奇妙な角度で表示されるとどうなりますか?あなたは、既存のテキストを空白にして、*生成する*テキストを適切な位置に配置することができます - バウンディングボックスを生成しやすく、必要に応じて翻訳しやすく、OCRに依存しません。実際に処理するのは、「移動」セクションの境界ボックスを決定することだけです(これは、OCR領域を事前に制限するために関係なく行いたい場合があります)。 –
@ X-Zeroありがとう、これは実行可能な解決策のように聞こえる。どのように私は '移動'セクションの境界ボックスを検出することをお勧めしますか? – Klarerwind
他のものがクリック可能になっているかどうかによって、基本的には主なものではないすべてのものです。カードの中点には水平のバーがあります。これはまったく対照的です(申し訳ありませんが、私は画像解析をしていません)。いずれにしても、ユーザーが自分のカードをアップロード(おそらく作成)できるのであれば、カード作成者に自分のテキストを入力して、ポケモンのカスタム画像を入れることができます。それはさらに簡単になるはずです。現時点では、カードを認識する必要があります。 –