手書きテキスト認識デモ

この例では、OpenVINO™ を使用して手書きの日本語、簡体字中国語、および英語のテキストを認識するアプローチを示します。日本語の場合、このデモはデータセット KondateNakayosi のすべての文字をサポートしています。簡体字中国語の場合、SCUT-EPT の文字がサポートされます。英語の場合は、GNHK の文字をサポートします。

どのように動作するか

デモのワークフローを次に示します。

デモでは、まず画像を読み取り、サイズ変更やパディングなどの前処理を実行します。次に、モデルをプラグインにロードした後、推論が開始されます。返されたインデックスを文字にデコードした後、予測されたテキストが表示されます。

実行の準備

デモでサポートされるモデルリストは、<omz_dir>/demos/handwritten_text_recognition_demo/python/models.lst ファイルにあります。このファイルは、モデル・ダウンローダーおよびコンバーターのパラメーターとして使用され、モデルをダウンロードし、必要に応じて OpenVINO IR 形式 (*.xml + *.bin) に変換できます。

モデル・ダウンローダーの使用例:

omz_downloader --list models.lst

モデル・コンバーターの使用例:

omz_converter --list models.lst

サポートされるモデル

  • handwritten-japanese-recognition-0001

  • handwritten-simplified-chinese-recognition-0001

  • handwritten-english-recognition-0001

注: 各種デバイス向けのモデル推論サポートの詳細については、インテルの事前トレーニング・モデルのデバイスサポートパブリックの事前トレーニング・モデルのデバイスサポートの表を参照してください。

実行中

-h オプションを指定してアプリケーションを実行すると、使用方法が表示されます。

usage: handwritten_text_recognition_demo.py [-h] -m MODEL -i INPUT [-d DEVICE]
                                    [-ni NUMBER_ITER] [-cl CHARLIST]
                                    [-dc DESIGNATED_CHARACTERS]
                                    [-tk TOP_K]

Options:
                                    -h, --help            Show this help message and exit.
                                    -m MODEL, --model MODEL
                                    Required. Path to an .xml file with a trained model.
                                    -i INPUT, --input INPUT
                                    Required. Path to an image to infer
                                    -d DEVICE, --device DEVICE
                                    Optional. Specify the target device to infer on; CPU,
                                    GPU or HETERO is acceptable. The
                                    demo will look for a suitable plugin for device
                                    specified. Default value is CPU
                                    -ni NUMBER_ITER, --number_iter NUMBER_ITER
                                    Optional. Number of inference iterations
                                    -cl CHARLIST, --charlist CHARLIST
                                    Path to the decoding char list file. Default is for
                                    Japanese
                                    -dc DESIGNATED_CHARACTERS, --designated_characters DESIGNATED_CHARACTERS
                                    Optional. Path to the designated character file
                                    -tk TOP_K, --top_k TOP_K
                                    Optional. Top k steps in looking up the decoded
                                    character, until a designated one is found
                                    -ob OUTPUT_BLOB, --output_blob OUTPUT_BLOB
                                    Optional. Name of the output layer of the model.
                                    Default is None, in which case the demo will read
                                    the output name from the model, assuming there is
                                    only 1 output layer

Open Model Zoo 内で提供されるデコード文字リストファイル: 日本語の場合は <omz_dir>/data/dataset_classes/kondate_nakayosi.txt ファイル、簡体字中国語の場合は <omz_dir>/data/dataset_classes/scut_ept.txt ファイル、英語の場合は <omz_dir>/data/dataset_classes/gnhk.txt ファイル。例えば、OpenVINO™ ツールキットの事前トレーニング済み handwritten-japanese-recognition-0001 モデルを使用して CPU で推論を実行するには、次のコマンドを実行します。

python handwritten_text_recognition_demo.py \
  -d CPU \
  -i data/handwritten_japanese_test.png \
  -m <path_to_model>/handwritten-japanese-recognition-0001.xml
  -cl <omz_dir>/data/dataset_classes/kondate_nakayosi.txt \

designated_characters 引数が指定されている場合、指定された文字に出力文字が含まれていない場合、スクリプトは指定された文字が見つかるまで、デコード文字を検索する際に上位 k ステップをチェックします。これにより、出力される文字が指定された領域に限定されます。K のデフォルトは 20 に設定されています。

例えば、出力文字を数字とハイフンのみに限定する場合、文字ファイルへのパス (例: digit_hyphen.txt) を指定する必要があります。次に、スクリプトは出力文字に対してフィルタリング後の処理を実行しますが、最初の K 個で選択された要素に指定された文字が含まれていない場合でも、他の文字が許可される可能性があることに注意してください。前述の文字テキストファイルは、このデモの data サブフォルダーにあります。

事前トレーニング済みの手書き handwritten-simplified-chinese-recognition-0001 モデルと designated_charcters オプションを使用するコマンドラインの例:

python handwritten_text_recognition_demo.py \
  -i data/handwritten_simplified_chinese_test.png \
  -m <path_to_model>/handwritten-simplified-chinese-recognition-0001.xml \
  -cl <omz_dir>/data/dataset_classes/scut_ept.txt \
  -dc data/digit_hyphen.txt

デモの出力

アプリケーションは端末に結果の認識テキストを表示します。デモレポート

  • レイテンシー: 入力データの処理に必要な合計処理時間 (データの読み取りから結果の表示まで)。