PMCで色の誤差がある画像を認識する RPA をつくる

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

本記事では、Pulover’s Macro Creator で画像検索 / 認識を行う際に色の誤差についてある程度対応できるように「透過色」の設定と「色の誤差の許容量」について説明します。

これにより、半透過ウィンドウの文字を探してクリックするといったことが可能になります(たとえば、Windows10 の電卓は半透過ウィンドウになっているため、前回の方法では上手く動作しません)。

この記事の内容
  • Pulover’s Macro Creator の画像認識で透過色を設定する方法を学びます
  • Pulover’s Macro Creator の画像認識で色の誤差について学びます
  • モダンなWindows上で画像認識(特に文字)を行う際の注意点を学びます

 

PMCで色の誤差がある画像を認識する RPA をつくる

下準備

今回は、前回作成した基本的な画像検索 RPA シナリオを改造していきます。もし、まだ作成していなかったり、保存していなかったら前回の記事に戻って作成してください。

 

メモ帳の「ファイル(F)」の背景はいつも同じ色ではない

標準状態だと、Windows10ではウィンドウに付属するメインメニュー領域は、真っ白(0xFFFFFF)で描画されています。昔のWindowsOSでは、グレーだった部分ですね。

ただ、少し操作すれば分かることですが、この領域は「マウスカーソルが乗ったり」「選択状態だったり」すると、色が変化します。

マウスオーバーされた状態と、

 

Altキーやマウスクリックで選択された状態

 

選択された状態の方が少し濃いブルーになっているのが分かります。濃いブルーの状態は通常、マウスでクリックした時しかみないと思いますが、Altキーを押して離すだけでもメニューにキーボードのフォーカスが移り、濃いブルーに変化します。

では、メモ帳をアクティブにし、Altキーをクリックして「ファイル(F)」を濃いブルーの状態に変化させましょう。

この状態で、前回作成した RPA を実行します。ただし、マウス操作でPulover’s Macro Creator のメインウィンドウやツールバーコントロールから実行すると白背景状態に戻ってしまうので、「再生」に適当なショートカットキーを設定して動作させましょう。

 

動きましたか?

動いてしまった場合は、背景がブルーの状態ではないのでショートカットキーを設定して動作させてください。

Altキーでのメニュー操作

通常の操作では使うことはほぼないですが、ショートカットキーが割り当てられていない機能を、 RPA シナリオから呼び出したいときに楽で確実な方法として利用することがあります。

メニュー領域の操作は、もっと確実な方法があります。ただ、Alt キーとキーボード操作の方が難しいことを考えずに一気に実装してしまえ、さらにマウス操作よりも楽で安定するからです。

 

透過色を設定する

それでは、メインメニューの背景色を透明色(無視色)として設定しましょう。

背景色は 0xFFFFFF と分かっていますが、ここでは Pulover’s Macro Creator のGUIを使って設定します。

  1. のスポイトボタンをクリックすると、色を選択する状態になります。Pulover’s Macro Creatorが最小化され、マウスカーソルにツールチップが付いてくる状態になります。
  2. 最小化されたPulover’s Macro Creator をもとの大きさに戻し、プレビューに表示されている画像から、背景を選んで右クリックします。
  3. 「透明度」のテキストボックスに、0xFFFFFFが入力されます。

「透明度」となっていますが、これは誤訳で「透過色」の意味だと思います。

このような指定方法の他に、プレビューの画像をダブルクリックすることで標準の画像編集ソフトで画像ファイルを開けるので、そのツールのスポイトツールを使う方法もあります。

Pulover’s Macro Creatorにおける「透過色」とは、その色を無視するという意味です。設定された画像ファイル上に透過色と同じ色(この場合は白)があった場合、画面上の色が真っ白でも真っ黒でも、あるいは真っ赤でも「一致する」という色だと判断します。透過色というか、「ここれはどんな色でもいいよ」という意味になりますね。

透過色の危険

勘のいい方なら上記の説明でピンと来たと思いますが、たとえば、黒一色の文字と、1色の背景の画像を用意したとします。その状態で背景を透過色にします。

そこで、「真っ黒な画面」に対して RPA を動かしたらどうなるでしょう? 真っ黒な領域の左上の方で画像が見つかった、と判断されてしまいます(真っ黒な中にはかならずその文字も入っているはずです)。

現実にはなかなかないシチュエーションではありますが、画像検索の場合には「if文」よりも注意して条件を設定する必要があります。

 

では、これも動かしてみましょう。どうでしょう、動きましたか? ほとんどの方が動かなかったと思います(設定によって動く場合があります)。

 

Windows 10の文字は黒でも真っ黒ではない

上図はメモ帳の「ファイル」の文字を拡大したものです。黒だと思っていた文字ですが、ご覧のように色が組み合わさって描画されています。

こういう処理をアンチエイリアスと呼び、WindowsではWindows 7のころからClearTypeと呼ばれる方法が使われるようになりました。透過色を設定しただけで動作した方は、このClearTypeによる描画をオフにしている可能性があります。そうすると、文字がギザギザしてみえますが、PCの動作がすこし軽くなる効果があります。

このように、画像検索による RPA の場合、環境による違いが発生します。個人で使うだけではなく、他の人にも使わせる場合などは気をつけるようにしましょう。

 

では、このアンチエイリアス部分に対応するために「誤差の許容範囲」を設定します。

ここもかなり分かりづらいですが、「変形」という項目がそれにあたります。

この「変形」に「どのくらいの色の差まで許容するか」を設定します。最大で255まで設定できます。ある程度大きい数字を入れていって(50, 100, 150など)、一回ずつ動作するかどうか確認しましょう。そして、誤動作を避けるために、できればぎりぎり動作する値を探すようにしていきましょう。100で動作したら、75に設定し、動作したら63でまた試し、動作しなかったら87で試し……と繰り返していくと丁度の値を見つけやすいです(これを二分探索と言います)。

 

筆者の場合は、97で動作し、96では動作しませんでした大体、ほとんどの方がこのくらいで動作するのではないでしょうか?

最大で255で97というのは、ちょっと誤動作しないか不安になりますね。

 

アンダーバーは関係ない

めざとい方は、ここでメインメニュー選択されていないと(F)にアンダーバーがなく、選択された状態だと(F)とアンダーバーがつくことに気づいたかもしれません。

では、ここで画像を編集してアンダーバーが引かれる(F)をトリミングしてみましょう。そこで、改めて、「変形」の数値を小さくしてみます。

ただ、おそらく「97」から動かないと思います。

なぜかというと、透過色に 0xFFFFFFを設定していて、基準となる画像ではアンダーバーの部分が「真っ白」だからです。透過色の動作を思い出していただきたいのですが、そこが「どんな色であれ、一致している」と判断します。ですので、左右の丸括弧()の端の色に多少影響を与える可能性はありますが、基本的にはそこまで大きな影響ではありません。

このため、 RPA の画像検索で文字を探すのは充分に気をつける必要があります。または、別の方法を採用しましょう。

0xFFFFFF? #FFFFFF?

FFFFFFの前についている0xは、プログラミングの世界で16進数を意味します。

一方で、#の方は、(主に)HTML、インターネットの世界で色の16進数を意味します。

用途としては#も0xもほぼ同じで、ただ数字や文字が書いてあると、それが何進数なのか? 色の名前なのか? などが分からないため、色を示す文字列(数字列)の前に「これはどういう意味ですよ」という意味でつけています。

 

おわりに

画像検索は強力な機能ですが、このようにWindowsやPCの基本性能が上がるほど使いづらくなってきた経緯があります(昔は、半透明のウィンドウなんて重くて嫌われていました)。また、Pulover’s Macro Creatorのようなマクロツールから離れて、画像編集ソフトと格闘しなければいけないという不便さもあります。

安定した RPA を作成するには、「全部 画像検索で充分!」や「安定するからキーボード操作だけでできるRPAしかつくらない!」とするのではなく、必要な機能と安定性をはかりにかけて、最適な機能を選択できるようになる必要があります。

そのため、本チュートリアル連載では、他の機能の紹介も丁寧に行っています。他の機能については下記のまとめページに簡単な紹介と一緒に、丁寧な紹介ページへのリンクをまとめています。ご利用ください。

【無料RPA】Pulover’s Macro Creator まとめ【ゲームマクロ】

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

最新の記事