1. HOME
  2. ブログ
  3. IT技術
  4. 【Python】PyAutoGuiの画像認識で人間の操作を自動化(RPA)する

【Python】PyAutoGuiの画像認識で人間の操作を自動化(RPA)する

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度のメシより技術が好き /
(株)ライトコードは、WEB・アプリ・ゲーム開発に強い「好きを仕事にするエンジニア集団」です。
WEB・アプリ開発依頼、お見積もりはこちらまでお願いします。
また、WEB・スマホ系エンジニアを積極採用中です!
※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

書いた人はこんな人

広告メディア事業部
広告メディア事業部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もり大歓迎!
また、WEBエンジニアとモバイルエンジニアも積極採用中です!

ご応募をお待ちしております!

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア