画面やマクロの操作で、こんなリストから1つ選んで処理をしたいと思ったことはありませんか?
残念ながらWinActorには、リストを取得する術が現状ないので、エミュレータによるクリックを使用して選択する必要があります。
上の図のように日付のリストであれば、内容が変わることはほぼないので、座標を直接指定してクリックすればできますが、対象のリストによっては、リストの内容や順番が変わってしまうというケースも考えられます。
そこで、ペイントと画像マッチングを使った疑似OCRについて紹介します。
■用意する変数
・画像ファイルパス
・処理結果
・リスト項目数
・ループカウンタ
■事前準備
ヒットさせたい画像をペイントのトリミングを使用して切り出す。
上の図のリストだとこうなります。
複数必要な場合は、その分だけ用意してください。
1.初期設定
・画像ファイルパス:対象の画像ファイルパス
・処理結果:false
・リスト項目数:リストの項目数(上の図だと日付なので31になる)
・ループカウンタ:0
2.リストの一番上をクリック
使用ノード:04_自動記録アクション\エミュレーション
ウィンドウ識別名:対象の画面
・リストの一番上の項目を座標指定
・指定した座標に対して、マウス左ボタンのDownとUpを追加
3.ループ
繰り返し条件:ループカウンタ < リスト項目数
AND 処理結果 = false
3-1.次のクリック位置設定
使用ノード:多分岐
条件:ループカウンタ(1~30まで)
各分岐処理:次のリスト項目を座標指定してクリック
分岐が多いと設定が大変ですが、対象の画像にヒットしない場合、上から順番にクリックしているように見えます。
3-2.画像マッチング
使用ノード:15_画像マッチング関連\画像マッチング(状態取得)
・ウィンドウ識別名:対象の画面
・マッチ率:90%
※これが低すぎると全く違う文字でも認識されてしまうので、85~90%がおススメです。
認識できなかった場合は、画像の切り出しがうまくいっていない可能性があります。
上下に他のリストの文字が見切れていないか、対象の文字が削れていないか、切り出す幅を変える
などしてリトライしてください。
・画像:画像ファイルパス
・結果:処理結果
3-3.ループカウンタカウントアップ
使用ノード:カウントアップ
計算結果:ループカウンタ
加算値:1
ループはここまで
ループを抜けた後に、処理結果で分岐し、trueならOKボタンを押下したり、次のフォームに入力するなどの処理を追加すれば、リストから自動で選択した上で次の画面に遷移する処理も作成できます。
3-1の分岐の分だけクリック処理を登録するのはとても根気がいりますが、最も重要な作業です。
一度使えるようになると重宝する処理ですので、お試しください。
以上がWinActorによる、ペイントと画像マッチングを使った疑似OCRでした。