Ajax を 使った手書き文字認識です。下のキャンバスにマウスで文字を描いてみてください。
デモ
- 適当に文字を描いて、右のリストから正しい文字を選択することで、文字入力ができます。
- 選択された文字と座標情報はサーバに蓄積され、学習データとして再利用する予定です。一位に候補が来ない場合は正しい文字を選択していただけると幸いです
- Firfox, Opera, IE で動作確認しました。Firefox での動作が一番スムーズです
- 大きめの文字をキャンバスの中心に描いてください。認識されやすくなります。
技術的な話
- Javascript で描画処理を行い、文字の座標情報をサーバに非同期送信しています。
- サーバ側で文字認識をし、尤もらしい結果を確率付きで10個返します。
- 認識には、機械学習アルゴリズムの一つである SVM (サポートベクターマシン)を用いています。
- 学習データとして Tomoe のデータを用いています。Tomoe を認識エンジンとして用いることもできますが、機械学習の一つの応用としてチャレンジングな問題だったので、独自の認識エンジンをスクラッチから開発しました。画像処理は専門外なので、もっとよい方法があると思います。
- 完全に機械学習ベースなので、入力と選択をくりかえしていけば、理論的にはどんどん精度が高くなっていくはずですが、そこまでの実装はできていません。
- Tomoe のデータを使うにあたって、小松さんにお世話になりました。ありがとうございます。
参考書籍・関連リンク
- TinySVM: 拙作のSVM (サポートベクターマシン)のパッケージです
- Tomoe: オープンソースの 手書き文字認識エンジンです
- Ajax Full IME: 姉妹品
- 書籍
To Do
- 精度の向上
- Virtual SVM を用いてみる
- インクメンタル認識の完全なサポート
- 描画を高速にする (IE)
- 他の認識アルゴリズムの検討



