【Python】PyAutoGuiの画像認識で人間の操作を自動化(RPA)する
2021.12.20
目次
PyAutoGuiとは?
「PyAutoGui」は、Python のモジュールの一つです。
近年流行している RPA(Robotic Process Automation) の機能を、Python で実装することが可能になります。
人間が操作しているのと同様に、マウス・キーボードの操作を画像認識と組み合わせて自動化することができます。
うまく活用すると、繰り返しの単調な作業などを簡単に自動化させることができます。
非常に魅力的なモジュールで使い方はアイデア次第で無限大の可能性があり、使い方も簡単です。
本記事では、そんな「PyAutoGui」の使い方をご紹介したいと思います。
PyAutoGuiの導入方法
PyAutoGuiのインストール
「PyAutoGui」は Python のモジュールなので、お馴染みの pip コマンドを使ってインストールします。
OpenCVのインストール
画像認識の精度調節が可能になるため、「OpenCV」もインストールておきましょう。
プログラムでPyAutoGuiの読み込み
上記2つをインストールした後は、プログラム内から以下のようにモジュールを読み込みます。
準備完了!
これで、 PyAutoGui を利用する準備が整いました!
次は、PyAutGui の使用方法を説明します。
PyAutoGuiの使用上の注意
PyAutoGuiの使用上の注意については、以下となります。
操作不能を回避するために
RPA で無限ループなど、問題のある状態でプログラムを実行してしまうと操作不能に陥ってしまうことがあります。
そのため、PyAutoGui では緊急時にプログラムを停止させるために 「FailSafe 機能」が実装されています。
FaleSafe機能を使うには
PyAutoGui の「FaleSafe 機能」を使うためには、プログラム実行中にマウスカーソルを一番左上 (座標 0, 0) に移動させます。
マウス操作を行うプログラムの場合、座標 (0, 0) へマウスを移動させることも難しくなることがあるので注意してください。
画面遷移前に次の操作を実行させないために
PCの処理はタイミングによってすぐに終わったり、時間がかかったり変動するものです。
例えば、ボタンをクリックさせて画面遷移を伴う処理の場合、何も考えずに操作を順番に Python コードに実装したとします。
すると、1回目のクリックの後に、画面遷移を待たずに次の処理をしてエラーになることがあります。
そのため、画面遷移に必要な秒数を予め指定してウェイトさせるか、画像認識を利用して次の画面の画像が表示されるまでウェイトさせるような機能の実装が必要になります。
今回の例で利用するPyAutoGuiの関数
キーボードのキーを押下する(press)
キーボードで文字列を入力する(write)
画像を認識して座標を取得する(locateOnScreen)
該当の画像が存在しない場合は、None を返します。
また、 confidence の値を1から下げていくことで、画像認識の曖昧マッチングが可能になります。
これにより、画像認識用の画像ファイルを保存する際の劣化などに対応することができます。
指定の座標でマウスの左クリックをする(click)
キーボードを同時押しする(hotkey)
「CTL + C」などのキーボードの同時押しを実現します。
その他の関数
他にも様々な機能がありますので、詳細なマニュアルについては以下のオフィシャルドキュメントを参照してください。
【PyAutoGUI's documentation】
https://pyautogui.readthedocs.io/en/latest/
【実装例】PyAutGuiでExcel操作を自動化
今回の実装例では、以下の様な処理を自動化してみます。
- 1.Winキーを押下してExcelを起動
- 2.新しいブックを作成
- 3.セルに文字("Hello PyAutoGui")を入力
- 4.ファイル名を付けて保存
- 5.Excelの終了
コード
上記作業を 「Python + PyAutoGui」を使って自動化すると、以下のようになります。
今回は、時間のかかる Excel の起動待機のみ、画像認識を使った処理待ちをさせています。
その他の処理待ちは、 time.sleep を使って決め打ちで処理させています。
プログラムで使用している画像認識用のファイル
1.empty_book.jpg
2.this_pc.jpg
実行してみましょう!
こんな感じで動きました!
面白いですね!
さいごに
「Python + PyAutoGui」の使い方はご理解いただけましたか?
作れるものはアイディア次第で無限大です!
例えば、ゲームのレベル上げのような繰り返し作業を自動化させることもできますし、業務での単純作業を効率化させることもできます。
是非みなさんの回りにある単純作業を、Python で自動化して楽をしちゃいましょう!
こちらの記事もオススメ!
エンジニアを積極採用中です!
書いた人はこんな人
- 「好きなことを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。
システム開発依頼・お見積もり大歓迎!
また、WEBエンジニアとモバイルエンジニアも積極採用中です!
ご応募をお待ちしております!
- ライトコードの日常2022.12.205回目🎉ライトコード福岡本社のお引越し!
- ITエンタメ2022.12.16アインシュタインの助手!?BASIC開発者ジョン・ジョージ・ケメニー
- ITエンタメ2022.12.08「真のインターネットの父」ARPANETの仕掛け人 J・C・R・リックライダー
- ライトコードの日常2022.11.30ライトコード社員総会2022が開催!