光学文字認識との作業
テスト中のシステム(SUT)でテキストを探す必要があり、テキストの画像をキャプチャすることが実際的ではない場合、Eggplant FunctionalやSenseTalkの光学文字認識(OCR)機能を頼りにすることができます。OCRは、動的なテキストを検索する場合に最も役立ちますが、他にも多くの実用的な用途が見つかるかもしれません。
このページで説明されているOCRの概念、およびOCRで使用されるテキストプロパティを理解するために時間をかけることを強くお勧めします。これにより、OCR検索に適切な調整を行い、テスト環境でより良い検索結果を得ることができます。
OCRで成功するために:最も一般的なOCRプロパティの使用
SenseTalkには、状況や環境に合わせてOCR検索をカスタマイズできるテキストプロパティがいくつか含まれています。カスタマイズされたOCR検索を使用すると、検索の信頼性が向上し、最良の結果を得ることができます。OCRプロパティの完全なリスト、およびテキストの読み取りとテキストの検索にどのプロパティを使用できるかについての情報については、テキストプロパティ を参照してください。
OCR検索をカスタマイズするためにプロパティを使用する場合、使用するプロパティとその数を慎重に考えることが重要です。検索が機能しない場合、プロパティを追加し続けることは魅力的に思えますが、それが常に最善の方法ではありません。時にはプロパティを削除する必要があります。まず個々のプロパティを試し、必要に応じてプロパティを追加します。OCRチューナーを使用してプロパティを試し、何が機能するかを確認します。OCR検索のトラブルシューティングについての詳細は、OCRのトラブルシューティングを参照してください。
以下の各方法は、OCRの認識を改善したり、検索を高速化したりするために使用されるかもしれません。詳細については、OCR検索の速度を向上させるを参照してください。
Search Rectangles
ほぼ常に、検索矩形を追加することは有用で、OCRが検索する画面の一部を制限します。OCRが全画面を検索すると、それは遅くなるだけでなく、余分な可能性のある一致が出たり、全く一致しない可能性があるため、正確性も低下します。
検索矩形は通常、画像を使用して定義されますが、座標もこのプロパティに渡すことができます。キャプチャした画像のホットスポットが使用されるポイントを定義します(このポイントを移動する方法については、ホットスポットの使用を参照してください)。
画像を使用することは理想的です。なぜなら、SUTスクリーン上の要素が異なる場所に表示されるときに、矩形の位置を動的にすることができるからです。例えば、テキストが常にSUTスクリーンの同じ位置に表示されないウィンドウに表示されるかもしれません。そのウィンドウにアイコンがあるかもしれません。そのアイコンの画像をキャプチャし、それを画像定義の検索矩形のアンカーとして使用することができます。
画像を使用して検索矩形を設定することができない場合は、画面座標を使用することができま す。ビューワーウィンドウのCursor Locationツールバーアイコンは、この作業に役立ちます。なぜなら、それはSUT上のマウスの現在位置を示しているからです。ビューワーウィンドウのツールバーをカスタマイズする方法については、Customize the Toolbarを参照してください。
例:ウェブサイトから動的なテキストを読み取る
Google Financeページに移動し、特定の会社を検索し、その後株価を読み取るテストがあるかもしれません。OCRが価格の値を確実に、そして他の何ものでもなく読み取るために、画像を使用して検索矩形を定義することができます。使用されるコードは次のようにシンプルになります:
Log ReadText ("TLImage","BRImage")
上記のコードを動作させるためには、2つの画像をキャプチャする必要があります。この例では、画像TLImage
とBRImage
を使用して、検索矩形の左上と右下の角を定義しました。これらの画像をキャプチャするために、OCRが読み取るテキストに対して安定した画面の要素を1つ以上選択します。
この例では、画面の単一の要素である「会社」ラベルを使用しています。
TLImage
は、「会社」ラベルの画像で、ホットスポットが株価が表示されるエリアの左上の角に移動されています。
キャプチャエリアを移動せずに、ホットスポットを株価が表示されるエリアの右下の角に移動してBRImage
をキャプチャします。
画像をキャプチャし、SenseTalkコードを書いた後、上記の例はGoogle Financeの任意の会社の株価を正常に読み取ることができます。
"TLImage"と"BRImage"は、OCRを使用した成功したReadText()検索のための検索矩形を設定するために使用されます。
コントラスト
このプロパティは、Eggplant Functionalが黒と白のみを視覚するようにします。 ContrastColor
(背景色)として使用されている色は白になり、それ以外のすべてのものは黒になります。白地に黒文字の場合、コードは次のようになります:
Click (Text: "hello", Contrast:On, ContrastColor: White, ValidCharacters: "hello", Searchrectangle: ("UpperLeftImage", "LowerRightImage"))
この状況では、白に近い各ピクセル(標準許容範囲の45以内)が白に変わり、それ以外のすべてが黒として読み取られます。これはOCRがテキストをより明瞭に読み取るのに役立ちます。
実際に見えるのは、アンチエイリアシングの影響を受けないこの画像です。
コントラストオン時のOCRが見るもの
Contrast
設定を使用してOCRエンジンに送られるテキスト画像を確認するには、OCR Tunerパネルを使用します。このパネルには、コントラスト関連の設定の任意の組み合わせ (EnhanceLocalContrastを除く)で、OCRエンジンに認識のために送られるものを表示するライブディスプレイがあります。
灰色の背景(または中程度の値の別の色)のテキストを探す場合、少し複雑になることがあります。 ContrastTolerance
を少し低く設定する(20程度まで)と、OCRが白に変えようとするピクセルの数が減ります。上の画像では、"hello"の"h"と"e"の間のピクセルが黒に変わり、2つの文字が連結しています。この状況では、OCRはまだ文字を読むことができましたが、他の状況では、これがOCRが文字を処理するのをより難しくする可能性があります。これが、スクリプト全体を実行する前に試してみることが常に良い考えである理由です。
Click (Text:"hello", Contrast:On, ContrastColor: White, ContrastTolerance: 20)
Contrast
検索でContrastColor
が設定されていない場合、デフォルトでは検索領域の左上隅のピクセルの色になります。
背景色の決定
背景/コントラストの色がわからない場合、任意のプラットフォーム上の特定の位置の背景色のRGB値を見つけるための2つの方法があります。
方法1:カラーピッカー(Mac)を使用する
カラーピッカーを使用するには、以下の手順を実行します:
-
リモート画面ウィンドウのツールバーのFind Textアイコンをクリックします。これでテキスト検索パネルが開きます。
-
テキストまたは背景色のボックスをクリックします。Colorsシステムパネルが表示されます。
-
カラーピッカーのアイドロッパーアイコンをクリックし、テキストまたは背景の上にカーソルを移動し、コントラスト色の設定に使用したい色を選択します。アンチエイリアシングのピクセルを選択しないように注意してください。
カラーピッカーを使用してMacでコントラストカラーを見つける
方法2: ColorAtLocation()
関数を使用する
ColoratLocation()
functionを使用するには、以下の手順を実行します:
- ライブモードでビューアウィンドウを開きます。Cursor Locationツールバーアイコンがすでにツールバーにない場合は、ツールバーのカスタマイズを参照してください。
- 次に、
ColorAtLocation
関数を使用します。 - RGBカラー値が必要な背景上にマウスを移動します。
- SUT上のマウスの座標を使用して、Cursor Locationツールバーボタンのフィールドに表示される、このコードラインを実行ウィンドウの下部にあるアドホックdoボックス(AHDB)またはスクリプトから実行します:
put colorAtLocation(x,y) // where (x,y) refers to the coordinates found in the remote screen window
このコードラインを実行すると、指定した位置の色のRGB値が返されます。
ローカルコントラストの強調
OCRエンジンに送信されるテキスト画像のローカルコントラストを自動的に上げたい場合は、このプロパティを有効にします。このプロパティは、読まれているテキストの一部または全部が比較的低いコントラストを持っている場合、たとえば暗い背景上の青色のテキストなど、認識を助ける可能性があります。コントラストがオンになっていると、このプロパティは効果がないため、コントラスト
がオフの場合にのみ有用です。
Log ReadText(("TLImage","BRImage"), enhanceLocalContrast: On)