画像ベースのテキスト認識 ("text") (JA)
4.3.2 画像ベースのテキスト認識 ("text")
説明
画像ベースのテキスト認識(v3.0以降、コード名「text」)は、事前に保存された文字の集合に基づいて、画面上のテキストとその座標を認識します。OCRと比較して:
OCRエンジンは 通常、文字の形状パターンによって認識します。多くのフォント、テキスト、背景色に対して、すぐに使用できます。キャリブレーションされていないフォントにOCRを適用すると、認識に失敗する可能性があります。このような状況では、回避策がないか、特定のフォントに合わせてエンジンをトレーニングするための長い手動プロセス( Tesseractトレーニングプロセスなど)が必要になります。
ロボットの画像ベーステキスト認識は、 画像から文字を認識します。画像コレクションが作成された特定のフォント、文字色、背景に対してのみ機能します。入力テキストの検索条件に基づいて、テキストの座標や部分文字列の位置を取得できます。
キャラクタ画像コレクションは、キャラクタキャプチャウィザードで簡単に作成・管理できます。 詳細はヘルプページをご覧ください。
"tocr"方式と同様に 、認識されたテキストは次の 3 つの方法で検証できます。:
「text」パラメータのみを指定すると、指定された文字列のプレーンテキスト検索がアクティブになり、見つかった場合は呼び出しコマンドが 0 (成功) を返し、見つからなかった場合には 1 (失敗) を返します。
text "と "distance "パラメーターの組み合わせで実行される。寛容な(ファジーな)テキスト検索.distance "パラメータはレーベンシュタイン距離これは、一方の文字列を他方の文字列に変換するために必要な最小の編集数として定義され、許容される編集操作は1文字の挿入、削除、置換である。このメトリックは、"text "パラメータで提供されるサンプルテキストを同等とみなすために、最大で何文字が省略されるか、または正しく認識されないかを指定する整数値である "distance "パラメータによって有効になります。正規表現とは異なり、トレラント・マッチングでは、認識されたテキストから、指定されたテキストと距離にマッチする文字列がないか常に検索します。文字列の前後に別のテキストがあることを指定する必要はありません。
正規表現マッチングは、認識されたテキストを指定されたjava.util.regex.パターン準拠の正規表現と照合します。この表現はテキスト全体に一致する必要があり、一致する部分文字列の検索は行われません。
このメソッドは、OCR結果を_TEXT接頭辞付き変数のセットに以下のように格納します:
変数名 | 説明 |
|---|---|
_TEXT_ERR=<error_text> | エラーメッセージ。これはメソッドがテキストを実行できなかった場合にのみ表示されます。 |
_TEXT=<text> | 認識されたテキスト(完全な複数行形式)。この変数は、メソッドが正常に実行された場合(デスクトップ接続の欠如や無効な文字画像コレクションによる失敗を意味しない)に常に作成される。 |
_TEXT_X=<number> | 認識されたテキストのX、Y座標と幅と高さ。 |
_TEXT_LINE_COUNT=<number> | 認識されたテキスト行数。 |
_TEXT_LINE<n>=<text> | n行目のテキスト行、ここで<n>は1から_text_line_count。 |
_TEXT_LINE_X_<n>=<number> | n行目のテキスト行のX、Y座標と幅、高さ |
_TEXT_MATCH=<text> | 認識されたテキストのうち、"テキスト" パラメータ(プレーンテキスト検索)、または"テキスト"と"距離"(寛容なテキスト検索)。 |
_TEXT_MATCH_INDEX=<number> | _TEXT_MATCHによって参照される、一致するテキストの位置(インデックス)。インデックスは認識されたテキストの先頭に対応する0から始まります。 |
_TEXT_MATCH_X=<number> | _TEXT_MATCH_変数が参照する一致したテキストのX座標、Y座標、幅、高さ。 |
オプション
このメソッドは入力として1つの文字画像コレクションを必要とします。「text」メソッドのコンテキストにおける「passrate」パラメータは、文字の描画における微小な差異に対する許容度を定義します。この許容度は現在実験段階であり、一部の大型フォントでのみ機能します。そのため、合格率を100%に保つことを推奨します。「cmparea」標準パラメータを使用すると、テキスト認識を画面上の特定の矩形領域に制限できます。指定しない場合、デフォルトでは全画面が対象となります。
サポートされている特定のパラメータ:
text=<textToSearchFor>
認識されたテキスト内で検索する任意の文字列。認識が正しく行われかつ認識テキストに指定文字列が含まれる場合、ホスティングコマンドは0を返します。それ以外の場合は1を返します。このパラメータはパターンパラメータと併用できません。
distance=<0-[textLength]>
オプションのレベンシュテイン距離は、「text」パラメータと組み合わせて許容度のあるテキストマッチングを実行するために使用されます。詳細はメソッド仕様を参照してください。
pattern=<regularExpession>
オプションjava.util.regex.パターンに準拠した正規表現。認識されたテキストをテストするために使用されます。この表現はテキスト全体に一致する必要があります(部分文字列の一致検索は行われません)。このパラメータはtextパラメータと併用できません。。
戻り値
「text」、「distance」、「pattern」パラメータのいずれも使用されない場合、呼び出しコマンドは実際にテキストが認識されなくても成功を意味する0(成功)を返します。テキスト照合パラメータが使用された場合、認識されたテキストが一致するか否かに応じて、呼び出しコマンドは成功(0)または失敗(0以外の値)を返します。
トラブルシューティング
失敗した「テキスト」比較に対処するために:
画面上で認識しようとする背景色と、フォントの種類・サイズ・色は、文字画像コレクション内の文字画像と同じであることを確認してください。
内部アルゴリズムはコレクション画像からテキスト行の高さとスペースサイズを導出するため、異なるフォント種別やサイズの文字画像を単一コレクションに混在させないでください。異なるフォントや背景色の文字画像を混在させることは、文字が同一フォント種別かつサイズであれば問題ありません。
テキストがアンチエイリアス処理されている場合や規則的に描画されていない場合は、合格率を下げてみてください。ただし、これは大きなフォントでのみ有効です。
使用例
Var _TEXT_LINE_COUNT=0Compareto "C:\MyAutomation\chars" method="text" cmparea="x:33,y:2,w:200,h:22"for (i=1; {i}<{_TEXT_LINE_COUNT}+1; i={i}+1) { Typeline "{_TEXT_LINE{i}}"}
- 指定されたデスクトップ領域内のテキストを認識し、デスクトップ上にタイプします。
Compareto "C:\MyAutomation\chars" method="text" cmparea="x:33,y:2,w:200,h:22" pattern="[aA]pplication"if ({_EXIT_CODE} > 0) { Exit 1}
- 認識されたテキストが「Application」または「application」という単語と一致しない場合、スクリプトを終了。
Compareto "C:\MyAutomation\chars" method="text" cmparea="x:33,y:2,w:200,h:22" pattern=".*[aA]pplication.*"if ({_EXIT_CODE} > 0) { Exit 1}
- 前の例を修正し、認識されたテキストに「Application」または「application」が含まれない場合にスクリプトを終了するようにしました。
比較する"C:♪MyAutomation♪chars" method=「テキストcmparea=。"x:33,y:2,w:200,h:22"テキスト「リンゴ距離"2"
- 画面上のテキストを認識し、それが「like」であるか、または「apple」のような文字列を含むかどうかを確認します::
メソッドが「There is an apple」のようなテキストを認識した場合、コマンドは成功(終了コード0)を報告します。これは完全一致が見つかったためです。
メソッドが「There is an Apple」のようなテキストを認識した場合、コマンドは成功を報告します。これは単語「Apple」が1文字の置換(A→a)によって「apple」に変更可能であり、許容距離2内にあるためです。
メソッドが「There are Appls」のようなテキストを認識した場合、コマンドは成功を報告します。なぜなら単語「Appls」は、許容誤差範囲2内の2つの操作(1)置換(A→a)と(2)付加(+e)または置換(s→e)によって「apple」に変更できるからです。
メソッドが「There is Doppler」のようなテキストを認識した場合、コマンドは成功を報告します。単語「Doppler」は単一の置換(o→a)後に「apple」と一致する文字列を含むためです。
メソッドが「There are Appis」のようなテキストを認識した場合、コマンドは失敗(終了コード1)を報告します。単語「Appis」を「apple」に変換するには少なくとも3つの操作(A→a、i→l、s→e)が必要であり、許容距離2を超えているためです。
テキストが正常に一致した場合、テキスト内の一致位置のインデックスは _TEXT_MATCH_INDEX 変数に、その X, Y 座標と幅/高さは _TEXT_MATCH_X, _TEXT_MATCH_Y, _TEXT_MATCH_WIDTH, _TEXT_MATCH_HEIGHT に格納されます。一致した部分文字列はさらに _TOCR_TEXT 変数に保存されます。
例えば、認識テキストが「There are Appls」の場合、変数は _TEXT_MATCH=Appls および _TEXT_MATCH_INDEX=10 として生成されます。