2016-08-26 8 views
11

私は、Android Canvasのユーザーの手書きの描画文字に基づいてフォント認識を行うアプリケーションに取り組んでいます。フォントの認識無料の手描き

このアプリケーションでは、定義済みの文字を事前に定義された順序で入力するように求められます((A,a,B,c))。これに基づいて、ユーザーの手書きに似た非常に似たフォントを表示する方法はありますか。

私はこのトピックについて研究していますが、いくつかの論文を見つけました&記事ですが、そのほとんどはキャプチャされた画像からフォントを認識しています。その場合、段落や個々の文字などを分割することによって多くの問題を抱えています。しかし私のシナリオでは、ユーザーがどんな手紙を描いているかを知っています。

私はOpenCVとMachine Learningにいくつかの知識があります。この問題の解決方法については、ヘルプが必要です。

+4

基本的には、私の手書きが 'Arial'や' Tahoma'や 'Century Gothic'や何百万もの既存のフォントのように見えるアプリを書く方法を尋ねているのですか? –

答えて

-1

OCRライブラリtesseractを使用することをお勧めします。非常によく発達し、成熟しています。また、フォントのセットを訓練するために使用できる他の言語のトレーニングもサポートしています。

アプローチ

トレーニング: -

  1. n個のフォントのためのすべての26(アルファベットあたり)の画像を取ります。 26 Aを超えてテッサラクトをトレーニングし、26 Bをすぐにトレーニングします。

テスト: -

  1. 文を取り、すべての文字を分けます。
  2. 各文字について、Tesseractから確実性スコア(図書館でサポート)を検索します。文字 'aの場合、訓練されたモデルを異なるフォントのすべての' a 'に使用してください。
  3. すべての文字について、いくつかの指標(平均、中央値など)を使用して最適なフォントを見つけます。例:すべての文字に対して受け取った各フォントの確信度を合計し、最大の結果を得たフォントを使用できます。
+0

downvoteは「この回答は役に立たない」という意味です。私のDVではなく、これは役に立たないと強く同意します。 Tesseractは手書きの文字で使用するつもりはありません – Miki

+0

@Miki:あなたの返信をありがとう。これを見てください:http://stackoverflow.com/questions/12310287/tesseract-handwriting-with-dictionary-training。また、OCRのオンライン手書き認識は素晴らしいですが(http://stackoverflow.com/questions/12393358/free-hand-character-recognition-in-android)、ここではユーザーがどの文字を書き込んでいるかを知っています。オンラインの手書き認識が、書かれたときに文字の形の微妙な違いを記録することができれば、それははるかに良いでしょう、そうでなければTesseractは方法だと思います。私はあなたが持っているかもしれない考えには自由です。ありがとうございました。 – saurabheights

+0

Typo:オンラインの手書き認識で、文字の形の微妙な違いを**分析することができれば、それははるかに良いでしょう。そうでなければ、Tesseractが道だと思います。微妙な違いは、Tesseractが優れている文字の構造をチェックすることです。 – saurabheights

0

あなたは非常に興味深い記事を見つけるかもしれない:https://erikbern.com/2016/01/21/analyzing-50k-fonts-using-deep-neural-networks/

はかなり簡単深い学習が問題を教師あり学習のように思えます。

各ターゲットフォントタイプの文字のランダムに変形されたサンプルのトンを生成し、そのセットのコンベネットを訓練しますか?

理想的なのは、フォントデータにラベルを付けた手書きの巨大なセットを持つことですが、そうは思われません。

また、生成されたプログレッシブなフォントコードを使用して、手書きのサンプルをまとめて、選択したフォントのように見えるように変換することもできます。

これは、開始するのに適しています。https://github.com/fchollet/keras/blob/master/examples/mnist_cnn.py convnetsを使用した数字文字認識。

これまでにそのようなことをやっていないのであれば、これはかなりうまくいきます。

1

あなたのアプリケーションで何を達成したいのかは私にはっきりとは分かりませんが、ユーザーの手書きに最も近いフォントのデータベースからフォントを出力しようとしていると仮定します。

機械学習では、これは分類の問題になります。 クラスの数は、データベース内の異なるフォントのの数に等しくなります。

Convolutional neural networkの助けを借りてこれを解決することができます。これは、画像やビデオの認識に関連するタスクに広く使用されています。 CNNを実装したことがない場合は、このリソースを参照して、CNNを実装するための簡単なツールキットであるTorchについて知ることをお勧めします。

あなたが直面する主な障害は、その神経である:(Tensor FlowCaffeLasagne、...もちろん、より多くのようなフレームワークがあります)ネットワークはそれらを適切に訓練し、満足のいく結果を達成するために何千もの画像(>100.000)を必要とする。さらに、画像が必要なだけでなく、各画像に正しいラベルも必要です。手書きの文字などの訓練用のイメージと、そのラベルとしてデータベースから最大限に捉えた対応するフォントが必要になります。

transfer learningという本を読むと、自分でCNNモデルを完全に設定する必要がないため、最初のブーストを与えることができます。さらに、人々はpre-trainedというような関連タスクのモデルを持っていますので、安全な余分な時間をGPUで何時間も訓練する必要はありません。 (CUDAを参照してください)

最初の大きなリソースは、記載された理由のために役立つ可能性のある用紙:How transferable are features in deep neural networks?です。

、あなたの仕事のために役立つことができ文字のすべての種類を提供し、次のオープンデータセットを検索することができ、トレーニングとテストデータのトンを取得するには:

多くのフォントにアクセスしたり、さらに独自のデータセットを作成する可能性がある場合は、Google Fontsをご覧ください。

関連する問題