RPAで辞書アプリのブックマークに仏単語を自動登録する【Python】

 コンピュータ 語学学習  830

はじめに

 以前の記事で、ハリー・ポッターのフランス語版から形態素解析を使って単語リストを抽出する方法と、その単語リストの中でわからない単語を効率的にチェックする方法を紹介した。

 今回は、さらにその単語リストを辞書に登録する作業を自動化する方法について紹介する。

用意するもの

1)Pythonの動作環境
 今回のプログラムを実行するには、Pythonの動作環境が必要になる。また、追加で以下のライブラリをインストールする必要がある。

 ・OpenCV(opencv-python)
 ・数値計算(numpy)
 ・GUI操作を自動化(pyautogui)

 これらをインストールするには、ターミナルなどで以下のコマンドを実行する。

pip install opencv-python
pip install numpy
pip install pyautogui


2)物書堂のDictionaries(辞書)アプリ
 今回はこのアプリのブックマークに単語リストを登録する方法を紹介する。

 

3)単語リストのCSVファイル
 今回のプログラムは、形態素解析を使用して抽出した単語リストを登録することを想定しているので、以下のようなlemma(基本形)、pos(品詞)、count(出現回数)が記録されたCSVファイルを想定している。

lemma,pos,count
chat,noun,5
ordinateur,noun,10
maison,noun,15
amour,noun,20
fille,noun,25

RPAとは?

 RPA (Robotic Process Automation)は、自動化されたプログラムを使用して、人間が行う作業を代替することを指す。
 RPAは、画面上の要素を操作したり、入力したり、出力を取得することができるため、大量のデータ入力や、重複するタスクの自動化などに用いられている。

RPAプログラムの作り方

 今回は、Pythonを使用する。Pythonには、画像認識や画面操作のためのライブラリが用意されており、これらを使用することで、Dictionariesアプリを自動操作し、単語リストをブックマークに登録することができる。

 プログラムは、単語リストから単語を取り出し、アプリで単語の検索を行い、その検索結果をブックマークに登録するという流れである。

 ブックマークの登録には、アプリのブックマークボタンの位置を画像認識で検出し、それをもとにブックマークボタンをクリックする。デスクトップの座標を指定する方法もあるが、この方法は画面の位置に依存しないため、より柔軟に対応できる。

Dictionariesアプリの画面の一部。単語は、『プチ・ロワイヤル仏和辞典 第5版』より

 

ソースコード

 今回作成したプログラムのソースコード。

import os # OSに関連した機能を提供するモジュール
import cv2 # OpenCVのPythonバインディング
import csv # CSVファイルを扱うためのモジュール
import numpy as np # 数値計算を行うモジュール
import pyautogui # GUI操作を自動化するモジュール
import time # 時間に関連した機能を提供するモジュール

CSV_FILE = "tango_list.csv" # 単語リストのCSVファイル名
IMG_BOOKMARK = "bookmark.png" # ブックマークボタンの画像
IMG_INTERNAL_CAPTURE = "capture.png" # スクリーンショットの画像

# ブックマークボタンの位置を取得
def get_center_position():
    # スクリーンショット画像を読み込み
    _input = cv2.imread(IMG_INTERNAL_CAPTURE, cv2.IMREAD_COLOR)
    _temp = cv2.imread(IMG_BOOKMARK)
    # 画像のサイズを取得
    _h, _w = _temp.shape[:2]
    # テンプレートマッチングでブックマークボタンの位置を検索
    _match = cv2.matchTemplate(_input, _temp, cv2.TM_CCOEFF_NORMED)
    _loc = np.where(_match >= 0.80)
    try:
        _x = _loc[1][0]
        _y = _loc[0][0]
        return _x + _w / 2 , _y + _h /2
    except IndexError as e:
        # ブックマークボタンが見つからなかった場合
        return -1,-1

# ブックマークボタンをクリック
def img_click():
    os.system("screencapture " + IMG_INTERNAL_CAPTURE)
    _x,_y = get_center_position()
    if(_x ==-1):
        return -1
    pyautogui.moveTo(_x/2, _y/2)
    pyautogui.click()

def main():
    os.system(f'open mkdictionaries:///') # Dictionariesアプリを起動
    time.sleep(5) # Dictionariesアプリの起動を待つ
    with open(CSV_FILE, "r") as f:
        reader = csv.reader(f)
        next(reader) # ヘッダーをスキップ
        # データを一行ずつ読み込んで処理
        for row in reader:
            lemma = row[0]
            url = f"mkdictionaries:///?text={lemma}&category=fr-ja"
            os.system(f'open {url}')
            time.sleep(2)
            img_click()

# main関数の呼び出し
if __name__=="__main__":
    # プログラムのエントリーポイント
    main()

 これにより、単語リストを辞書に登録する作業を自動化することができる。実際に動作させてブックマークに登録する際の様子は、以下の動画を参考にして欲しい。

おわりに

 今回は、Pythonを使用し、画像認識や画面操作のライブラリを使用して、Dictionariesアプリを制御し、単語リストをブックマークに登録するRPAのプログラムを作成した。
 このようなRPAによる自動化は、単語のブックマーク登録だけでなく、辞書アプリから単語暗記アプリへの登録にも応用ができるため、興味がある方は試してみることをお勧めする。



関連記事