私はiOSの開発者なので、このようなアプリケーションを書いてみませんか。カメラをサイン/スケジュール/メニューに向け、すぐにロシア語に翻訳します。
App Storeで簡単に検索したところ、そのようなアプリケーションは1つまたは2つしかなく、サポートされているアプリケーションの数にはロシア語が含まれていませんでした。 そのため、パスは開いているので、このようなアプリケーションを作成してみてください。 会話は、白い紙に黒いテキストを撮影し、それをデジタル化して翻訳するアプリケーションに関するものではないことを言及する価値があります。 そのようなアプリケーションは、実際にはキャリッジと小さなカートです。 これは、たとえばバスの写真などの自然画像のテキストを強調表示できるアプリケーションです。ユーザーがこのバスの行き先を理解できるように、ルートプレート上のテキストを選択して翻訳する必要があります。 または私に関連するメニューの問題、私は本当にあなたが注文するものを知りたいです。
アプリケーションの主なタスクは、テキストの検出とローカリゼーション、そしてOCRでの「摂食」のための選択と二値化、たとえばtesseractです。 また、スキャンされたドキュメントのテキストを検出するアルゴリズムは古くから知られており、99%の精度に達しましたが、写真内の任意のサイズのテキストの検出は依然として実際の研究分野です。 このタスクはさらに興味深いものになると思い、アルゴリズムの研究に取り掛かりました。
当然、画像上のテキストを検索するための普遍的なアルゴリズムは存在しません。通常、さまざまなタスクに加えて、ヒューリスティックな方法でさまざまなアルゴリズムが使用されます。 まず、問題を形式化します:目的のために、水平に配置された周囲の背景と非常に対照的なテキストを見つける必要があります。傾斜角は20度を超えず、さまざまなサイズと色のフォントで書くことができます。
アルゴリズムを確認した後、私
最初に、携帯電話のカメラからBGRA形式の画像を取得します。
これをグレースケールに変換し、画像のガウスピラミッドを構築します。 ピラミッドの各レベルで、特定のディメンションのテキストが見つかります。 最低レベルでは、高さが約k〜2 * k-1ピクセル、次に2 * k〜4 * k-1などのフォントを検出します。 実際、ピラミッドでは4つの画像を使用する必要がありましたが、クアッドコアi7ではなくiPhoneしか持っていないため、3つの画像に制限することに注意してください。
Sobel演算子を適用して、垂直方向の境界を選択します。 そして、ノイズをカットするには短すぎるセグメントを削除するだけで結果をフィルタリングします。
Sobel演算子で強調表示された垂直方向の境界に、モルフォロジークロージャ演算を適用します。 フォントの横幅、および縦5字。結果は再びフィルターされます。 kから2 * k-1までの、少なくとも3文字の長さで、探しているフォントの高さに適合するものだけをスキップします。 この結果が得られます。
ピラミッドの次のレベルで同じ操作を実行します。
次に、すべての結果を1つに結合します。 次に、選択した領域で適応2値化を行い、そのような画像を取得します。 OCRでのさらなる認識にすでに適しています。 ガウスピラミッドの別の画像が欠落しているため、最大フォントが決定されなかったことがわかります。
以下は、より複雑な画像に対するアルゴリズムの操作の例です;いくらかの改良がまだ必要であることがわかります。
iPhone 5での640x480の画像処理時間は約0.3秒です。
PSコメントで質問に答え、PMの文法エラーについて書きます。