2012-02-21 10 views
2

手書き文字を何らかの形で取り込んで解析し、修正を提供するプログラムを作成するのが実際的であることを知りたいと思います。この考えの鼓動は、他の国の小学生やアメリカの大学生に、文字の多い日本語や中国語などの書き方を学び、少しでも間違いがあっても大きな違いが生まれるようにすることです。手書き文字(英字、漢字など)解析と修正

プログラムが文字をどのように分析するのかよくわかりません。私の現在のアイデアは、ストロークを表す単一のピクセル幅の線を取得し、各ピクセルがデータベースからロードされたサンプル文字の対応するピクセルとどのくらい離れているかを比較し、最も多くの領域を必要とする出力を出力することです。エンドポイントも知っておくと便利です。私は、彼らのキャラクターが、彼らが書いたかったキャラクターに似た別のキャラクターとして解釈されるかどうかをユーザーに伝えたいと思う。

私は、何らかの形でこのプロジェクトを完了するために何らかの種類のライブラリが必要だと思っていますが、私はプログラムに必要な基準を満たすものを見つけることができませんでした。私はOpenCVを調べましたが、それは画像処理よりもビジョンのためにあるようです。ライブラリ/モジュールがPythonやJavaであることにも感謝しますが、絶対に必要な場合は新しい言語を学ぶことができます。

このプロジェクトで助けていただきありがとうございます。

+0

私は、彼らがそれをやった方法を見るために、忠次柿渋くんを見ています。 –

+0

www.ml-class.orgオクターブ単位の文字認識システムを実装します –

+1

最終結果を画像として解析するだけでは不十分です。中国語と日本語の文字の場合、ストロークの順序と数が重要です。 –

答えて

1

あなたは、このWikipediaの記事から会社へのリンクをたどることができます。

http://en.wikipedia.org/wiki/Intelligent_character_recognition

私は今年よりもあなたが少ない中で、タスクを完了したい場合は特に、あなたが解決策を自分で実装しようとすることをお勧めしませんかフルタイムの仕事の2つ。不完全な解が生徒のためのガイダンスを提供しなかった場合は、残念です。

商業ICRライブラリを提供している企業の中には、あなたをサポートしたくない場合や、見積もりを提供していない場合があります。それが彼らの権利です。ただし、特定のベンダーとの共同作業が快適でない場合は、別の営業担当者に相談してください。

私の現在の考えは、各ピクセルは、例えば、データベースからロードされた文字と、ほとんどの作業を必要とするエリアの出力の対応するピクセルからどれだけ離れているかを比較し、ストロークを表すために、単一ピクセル幅のラインを取得することです。

ストローク表示を1ピクセル幅にするための最初のステップは、想像以上に困難です。間引きを実行するための単純なアルゴリズム(例えば、StentifordおよびZhang-Suen)があるが、ストローク交差および粗いエッジは重大な問題を提示する。これは古典的な(そして未解決の)問題です。間伐は多くの時間を費やしますが、失敗すると悲惨に失敗することがあります。

オープンソースライブラリで作業することもできますが、アルゴリズムやその使い方を学ぶのに役立ちますが、アルゴリズム自体を掘り起こしてどのように動作するかを理解する良い解決策を開発するのに役立ちます。それはかなりの研究が必要です。

  • デジタル画像処理
  • ゴンザレスとウッズ文字認識システム
  • Cheriet、Kharma、シウ、およびSuen
  • によって:ここ

    は教科書introductとして有用であるいくつかの本があります脳内での読み込み Stanislas Dehaene著

ゴンザレスとウッズは、画像処理の標準的な教科書です。画像処理に関するいくつかの背景知識がなければ、あなたが進歩することは困難です。

Cherietらによる本書は、光学式文字認識(OCR)の最新技術について触れ、手書き認識についても説明しています。この本を読むのが早ければ早いほど、すでに試行されている技術についてもっと早く学ぶことができます。

Dehaeneの本は、人間の読書に関わる精神プロセスの読みやすいプレゼンテーションであり、興味深い新しいアルゴリズムの開発を促します。

2

文字認識は、通常、人工ニューラルネットワーク(ANNs)を使用して実装されます。異なる人が同じキャラクターを書く多くの方法があることを見て実装するのは簡単な作業ではありません。

ニューラルネットワークについての良いことは、それらが訓練できるということです。したがって、ある言語から別の言語に変更するには、ニューロン間の重みを変更し、ネットワークをそのままにしておく必要があります。ニューラルネットワークはある程度まで一般化することもできるので、通常は同じ文字の小さな違いに対処することができます。

Tesseractは、90年代半ばに開発されたオープンソースのOCRです。あなたはいくつかの指針を得るためにそれについて読むことができます。

+0

ANNは、文字分類に関連する問題の一部を解決します。これは、SVMなどの別の方法を使用して解決することもできます。この答えで言及されていない別の重要な側面は、手書き文字を表現する方法です。 –

+0

@AlceuCosta:私は同意します。しかし、私はOCRのようなものは、主に私が必要な経験を持っていないので、この答えに完全に記述できるとは思わない。このため、私はTesseractプロジェクトにOPを指摘しました。 – npinti

1

あなたはhttp://www.skritter.comを見ましたか?彼らは間隔を空けた認識スケジューリングと組み合わせてこれを行います。

ストローク(http://en.wikipedia.org/wiki/CJK_strokes)にカーブなどのフィーチャを分類し、次のレイヤで部品を特定し、最も可能性の高い文字を推定すると思います。その間に、最も有望なキャラクタに統計的に重み付けをします。 2つの可能性の高いマッチがある場合は、混乱する可能性が高いと見せたいと思うでしょう。野心的な人にとっては、おそらく3000〜5000文字、または最大10000のデータベースを作成する必要があります。

http://www.tegaki.org/も参照してください。オープンソースプログラムではこれを実行します。