1. 概要

コンピュータサイエンスにはさまざまなアプリケーションがあり、手書き認識もその1つです。 手書き認識システムは、オンラインとオフラインの2つの基本的なタイプに分類されます。

このチュートリアルでは、手書きテキスト認識に使用される方法と手法について説明します。

2. オンライン文字認識アルゴリズム

文字認識のためのオンラインアルゴリズムを理解することから始めましょう。 この方法では、特定のデジタイザーで入力されるテキストの自動変換が必要です。 このステップでは、センサーがペン先の動きとペンアップ/ペンダウンの切り替えを検出して信号を生成します。 次に、結果の信号を、コンピューターおよびテキスト処理プログラムで使用できる文字コードに変換します。

文字認識アルゴリズムは、3つのカテゴリに分類されます。 これらのカテゴリは、前処理、特徴抽出、分類の順に使用されることがよくあります。 前処理は特徴抽出のスムーズさを支援しますが、分類を成功させるには特徴抽出が必要です。

2.1. 前処理

前処理のこのフェーズの目標は、認識を妨げる可能性のある無関係な情報を受信データから削除することです。 要するに、これは速度と精度についてです。 前処理には、多くの場合、2値化、サンプリング、正規化、平滑化、およびノイズ除去が含まれます。

2.2. 特徴抽出

このフェーズでは、互いに独立しているケースを区別する重要な品質を決定します。 この段階の目標は、認識モデルの重要な情報を強調することです。 この情報には、筆圧、速度、または書き込み方向の変更が含まれる場合があります。

2.3. 分類と認識

これは、認識システムの意思決定フェーズです。 抽出された特性をさまざまなクラスにマッピングし、その結果、特徴が表す文字または単語を識別するために、さまざまなモデルが採用されています。

3. オフライン文字認識アルゴリズム

文字認識のためのオフラインアルゴリズムを見てみましょう。 オフラインアプローチでは、入力を文字コードに自動的に変換します。 次に、これらの文字コードをコンピューターおよびテキスト処理プログラムで使用します。 オフラインアプローチには、従来の方法と最新の方法があります。

3.1. 従来の方法

オフライン手書き認識の従来の方法は、次の3つのステップで構成されます。

  • 文字抽出:これは、スキャンした画像の個々の文字を抽出する必要があることを意味します。 最も一般的な欠陥は、接続された文字が両方の文字を含む単一のサブイメージとして返される場合です。 これは、認識ステップで重大な問題を引き起こします。
  • 文字認識:個々の文字を抽出した後、認識エンジンを使用して、対応するコンピューター文字を識別します。
  • 特徴抽出:特徴抽出は、その動作においてニューラルネットワークレコグナイザーに匹敵します。 ただし、プログラマーは、関連するプロパティを選択する必要があります。 結果として、特徴抽出は完全に自動化された操作ではありません。

画像を入力として使用するテキスト認識の従来の処理の例を次に示します。

3.2. 現代の方法

従来のアプローチは個々の文字の識別に焦点を合わせていますが、最近のアプローチは、セグメント化されたテキスト行のすべての文字をセグメント化することに焦点を合わせています。 したがって、これらのアプローチは、以前に採用されていた限定的な特徴エンジニアリングではなく、視覚的特性を学習できる機械学習アルゴリズムに重点を置いています。 

これらの最新のアプローチでは、畳み込みネットワークを使用して、入力の多くの重複するウィンドウから視覚情報を抽出します。 したがって、特徴抽出は自動化され、畳み込みネットワークは特徴エンジニアリングを必要としません。 次に、リカレントニューラルネットワークを使用して、視覚情報から文字の確率を生成します。 以下の画像は、深層学習アルゴリズムの例を表しています。

4. テキスト認識技術

手書き認識システムでは、出力内の記号の数が通常変化するため、「データのストリーム」(単一の入力が複数の出力にマッピングされる)を処理する必要があります。 たとえば、1つの入力(たとえば、入力としての画像)があり、文字、単語、および行のグループが必要です。 これは、文字を検出すると、次の文字をランダムな文字にすることはできないことを意味します。 つまり、シーケンシャルデータを扱っています。

したがって、このステートメントを言い換えると、1つの入力と多数の出力があるようになります。 手書き認識用の「データのストリーム」を開発するには、さまざまなソリューションがあります。

  • リカレントニューラルネットワーク(RNN):RNNの主な欠点は、現在の状態を計算するために常に前の状態が必要になることです。 つまり、グラフィックプロセッサユニット(GPU)は、可能な限り最大のスケールに分散するのではなく、リソースの大部分をタスクの特定のセグメントに集中させる必要があります。 これは、トレーニングが十分に並列化できないことを意味します。
  • トランスフォーマー:この方法は、「注意」と呼ばれる本質的な概念を採用しています。 結果として、トレーニング速度と推論は、RNNに勝る主な利点の2つです。

5. 手書きテキスト認識のアーキテクチャの例

スキャンした画像からデジタルテキストにテキストを変換するオフライン手書きテキスト認識(HTR)システムの例を見てみましょう。

5.1. モデルの概要

HTRシステムにニューラルネットワークモデルを採用しましょう。 モデルは、畳み込みニューラルネットワーク(CNN)層、リカレントニューラルネットワーク(RNN)層、および最終的なコネクショニスト時系列(CTC)層で構成されます。 HTRシステムの概要は次のとおりです。

この関数は、サイズの画像を長さの文字シーケンスにマッピングするニューラルネットワークを表します。 したがって、テキストは文字レベルで識別されます。 したがって、モデルはトレーニングデータにない単語またはテキストを認識します。

5.2. 手術

HTRシステムは、次の3つのフェーズで構成されています。

  1. 畳み込みニューラルネットワーク(CNN)レイヤー:このフェーズの目的は、画像から関連する特徴を抽出することです。 このフェーズは5つのレイヤーで構成され、各レイヤーは3つの操作で構成されます。 まず、最初の2つのレイヤーと最後の3つのレイヤーにサイズのフィルターカーネルを適用します。 次に、活性化関数としてReLUを使用します。 最後に、プーリングレイヤーを使用して、各画像の領域を要約します。
  2. リカレントニューラルネットワーク(RNN)レイヤー: RNNの長短期記憶(LSTM)バージョンを使用します。これは、長距離にわたって情報を伝播でき、堅牢なトレーニング特性を備えています。
  3. コネクショニスト時系列分類(CTC)レイヤー: CNNとRNNの統合に続いて、CTCとして知られるAlexGravesによって開発された損失を使用してモデルをトレーニングできます。 CTCはマトリックスのみを受け取り、それを最終的なテキストにデコードします。

6. 結論

このチュートリアルでは、メカニズムのロックを解除する例を使用して、手書き認識アルゴリズムの基本概念について説明しました。 手書き認識システムの方法と手法についても説明しました。