コラム

【WinActor 3日目】画像マッチングとOCRマッチングを駆使してブラウザ検索とPDF保存する方法

~はじめに~

今回はwinActor(ウィンアクター)の画像マッチングとOCRマッチングを駆使してExcelデータにある値をもとにブラウザ検索させて検索結果の画面をPDF保存するシナリオを紹介したいと思います。
前提としてはChrome(クローム)とYahooの路線検索サイトを使用したいと思います。
作業フローとしては以下を繰り返します。

Excelデータから値を読み込む

ブラウザに値をペースト

検索結果をPDF化

Excelにある指定の名前を付けてPDFを保存

~フロー1 Excelデータから検索ワードの取込~

フロー1ではExcelブックを読み込み、値と最終行の取得をするシナリオを作ります。

[画像1]
winactor最終行取得

[画像2]

【手順1】
あらかじめ検索対象を入力したExcelブックを用意しておきます。

【手順2】
初期値にExcelブックのフルパスを入れた変数を作成します。(今回は「路線ブック)」で作成)

【手順3】
画像1のようなシナリオを配置しそれぞれのライブラリに変数を設定します。
それぞれの変数設定は以下です。
→Excel開く(路線ブック)、Excel操作最終行取得(最終行)

【手順4】
四則演算ライブラリを配置(取得変数は「繰り返し回数)」と命名)

【手順5】
四則演算までのライブラリをグループ化します。

【手順6】
画像2のように手順5で作ったグループ外にExcel操作・行の読み取りライブラリを配置します。
読みとった結果の変数は以下のように格納しました。
→Excel操作行の読み取り(出発・到着・ファイル名・処理結果)


~フロー2 画像マッチングでロゴをクリックして
ページを新しく更新する~

【画像マッチングについて説明】

画像マッチングとは指定したウィンドウに対して状況確認やクリックなどのマウス操作などができるノードになります。例えばクリックライブラリで認識できない箇所はこの画像マッチングを代わりに使うと便利です。

【Yahoo路線のロゴをクリックさせるシナリオを作成する】

フロー2ではExcel準備と出発欄に設定するフローの間に画像のように画像マッチングを組んでみました。そしてYahoo路線検索のロゴをクリックして検索する前に常にページが最新の状態になるようにシナリオを作ります。

[画像1]
ウィンアクター画像マッチング

[画像2]
winactorの画像マッチング

設定手順は以下です。
【①名前】
わかりやすい名前をつけましょう

【②マッチング画像】
対象の画像が表示されます。

【③イメージ画像】
右の青いマークを押して指定したい画像(ウィンドウ)を設定します。

【④ウィンドウ識別名】
3と同じく設定します。

【⑤マッチ率】
数字が高いほど認識される条件が厳しくなります。(今回は比較的高い90に設定)

【⑥アクション】
文字列が見つかったらどう処理するか決められます。
検索結果に対してマウス操作や変数に設定することができます。
(今回はマウス操作の左ダブルクリックを設定しました。)


~フロー3 検索対象の値をページにコピペする作業~

フロー3ではExcelブックから値をコピーしてブラウザの出発と到着の欄に値(検索駅)をペーストします。

[画像1]

[画像2]

[画像3]
winactorクリップボード

【手順1】
クリップボードライブラリを配置して変数値を出発に設定する(画像3参考)

【手順2】
一回目のエミュレーションはキーボード操作のペースト作業に設定する

【手順3】
二回目のエミュレーションは次の項目に移動するtabキー操作を設定する

※このシナリオを到着項目にも同様に使います。

~フロー4 テキストマッチングで検索条件の詳細設定から検索実行まで~

【OCRマッチングについて】

OCRマッチングとは文字列に対して判定ができるノードです。こちらも画像マッチングと同じように状態判定やマウス操作ができます。画像マッチングと違う点は文字列で判定するので文字色が変わったりしても認識できる点です。しかし文字の識別レベルは特別高くはありません。例えば小さい「っ」、半角ハイフン「-」といった文字は認識が難しいです。もしも認識レベルを上げたい場合は外部のLINECLOVATegakiといったOCRツールを連携させるとよいかと思います。
余談ですが弊社ではこのOCRツールを用いて様々な帳票のデータ化に成功してます。そちらの記事もお時間がありましたら是非ご覧くださいませ。記事はこちらから

【テキストマッチングで検索条件を始発に設定する】

フロー4ではテキストマッチングを駆使して検索設定を「始発」に変更したいと思います。
フローは画像1を参考にしてみてください。

[画像1]

[画像2]
winactorのOCRマッチング

【①名前】
わかりやすい名前をつけましょう

【②マッチング画像】
対象の画像が表示されます。

【③イメージ画像】
右の青いマークを押し指定したい画像(ウィンドウ)を設定します。

【④ウィンドウ識別名】
3と同じく設定します。

【⑤マッチング文字列】
値に検索したい文字列を入力します。(今回は「始発」を設定)

【⑥アクション】
文字列が見つかったらどう処理するか決められます。
検索結果に対してマウス操作や変数に設定することができます。
(今回はマウス操作の左クリックを設定しました。)

OCRマッチングが完成したら次にエミュレーションで「Enter」キーをクリックするライブラリを追加しました。
そうすると検索が実行できるシナリオが完成します。

~フロー5 検索結果ページをPDF保存する~

フロー5では検索が完了し結果が表示されたらキーボード操作でPDF作成ページより名前を付けて保存するシナリオを作ります。

[画像1]
PDF作成
【手順1】
エミュレーションでPDF作成ウィンドウを出す(クロームの場合Ctrl+P)
その際ウィンドウが出るまで2秒ほどあえて時間指定をエミュレーション内に追加するとエラーが回避できるかと思います。

【手順2】
画像マッチングで保存をクリックする
Tabキー操作のエミュレーションでも代替可能ですが時間短縮のために画像マッチングにより一発で保存させました。
もしPDF保存の詳細設定を追加する場合でも画像マッチングでクリックさせていく方法が効率的かと思います。

【手順3】
クリップボードにファイル名を格納した変数を設定する

【手順4】
エミュレーションにてクリップボードで取得したファイル名をペーストする

~フロー6 Excelデータの後処理と処理完了ステータスの変更~

フロー6ではPDF保存まで実行できたらExcelブックに「OK!」という文字を入力させるフローを作ってみました。

[画像1]
winactorのExcel関連

[画像2]
Excel操作

【手順1】
フロー1にて作ったExcel値の読み込みライブラリにて「OK!」を入力したい列を加えます。

【手順2】
加えた列に変数名を付けます。(例 今回の場合は処理結果と名付けました。)
変数一覧より初期値に入力文字をいれます。(今回は「OK!」といれました。)

【手順3】
今回の作業フローシナリオに戻り、Excel操作ライブラリを追加します。
①    操作を値の設定にする
②    設定値を作った変数に設定する
③    入力したいExcelブックと列・セルを設定する

~フロー7 最新ページに戻る~

フロー7ではChrome(クローム)でYahoo路線ページのURLを直接入力検索して次の検索をする前には
常に最新のページに戻ったところからシナリオ実行するようにしたいと思います。

[画像1]
winactorシナリオ
【手順1】
クリップボードに新たに変数を作り設定
この時に変数の初期値にURLを入れる(あら素敵、変数は便利ですね)

【手順2】
画像マッチングで検索バーにカーソルを合わせる

【手順3】
エミュレーションで毎度おなじみマウス操作のペーストを設定

~フロー8 繰り返し設定~

フロー7では繰り返しをExcelブックの検索対象がなくなるまで実行させるように設定してみました。
またシナリオ配置は画像1のようにExcel準備シナリオの次のフロー自体を繰り返しノードに入れる配置にしました。

[画像1]
ウィンアクターシナリオ
[画像2]
winactorの繰り返し

【手順1】
プロパティにて回数をフロー1で作った四則演算で取得された変数に設定する(今回は「繰り返し回数」に設定)

~まとめ~

いかがでしたでしょうか。今回はwinActor(ウィンアクター)でブラウザにExcelの値を貼り付け検索して検索結果をPDFに保存するというシナリオについてご紹介しました。ポイントとしてはクリックライブラリやエミュレーションライブラリが使えないボタンや設定をしなければならない時に代わりに使えるマッチング機能を活かすことができるかになります。これらの機能をうまく使えばクリックするだけでなく分岐や例外処理といったフローを組むときに役に立つと思います。ぜひ皆さんも今後のWinActor(ウィンアクター)シナリオ作りの参考にしてみてください。

~小話~

今回はWinActor(ウィンアクター)に備わっている3つのマッチング機能の画像マッチング、輪郭マッチング、OCRマッチングについて、違いとそれぞれの特徴について触れていきたいと思います。
それぞれのマッチング機能はクリックWEライブラリで選択できない項目の代替クリックができたり、マッチング結果によって分岐を設けたりすることができ非常に便利なノードになります。それぞれ下記に詳細について書きましたのでご覧ください。

【画像マッチング】
画像マッチングはクリックやエミュレーションライブラリが使えない時に便利です。ですが複数台でシナリオを使いまわす際に解像度やウィンドウの大きさが違うと認識されません。

【輪郭マッチング】
輪郭マッチングは画像マッチングと反対に解像度や大きさが違っても認識されます。したがってマッチング対象が都度変わるようなシナリオに向いています。ただしウィンドウ内に同じ文字があるとうまくシナリオが実行できない可能性があります。

【OCRマッチング】
OCRマッチングは画像ではく文字を認識します。よって色違いや大きさが変わっても文字自体が変わらない限り認識します。つまり環境変化に強いノードですので複数台のPCでシナリオを使いまわす場合に便利です。ただし認識精度は他のOCRツールに比べると高くないので似たような文字を誤認識してしまう可能性があります。