OCRによるアプリ画面の数値の読み取り
OVERVIEW
OCRによりアプリ画面の数値を取得し記録するプログラムを作成しました。また、記録した数値を用いて平均値や分散等を計算し分析を行いました。
キャラクターごとにランダムでポイントを獲得できるPCゲームがあります。獲得したポイントを記録するためにOCR(光学文字認識)技術によりポイントの数値を記録するツールを作成しました。
プログラムはスクリーンショットの撮影、画像の前処理、OCRによる数値の取得、取得した数値のcsv形式で記録、の4段階で行われます。撮影以外の過程は自動かつ連続でおこなわれます。
以下はツールの入力画面です。
スクリーンショットの撮影は2枚の画像が必要なため、ボタンを分けることにより取り直しや撮影の順番の変更を可能にしています。
以下はスクリーンショットの例です。
OCRでは撮影したスクリーンショットからキャラクター名とポイントの数値を読み取ります。この際そのままOCRを行うと精度が悪くなる問題があるため、一度二値化による前処理を行ってからOCRを行い精度を向上させる工夫を行いました。
その上で読み取りミスによりキャラクター名を不正確に読み取ってしまう場合に備えてdifflib.matcher関数により読み取った文字列と正しいキャラクター名の一致率を調べ、最も近い名前のキャラクターにアサインするようにしています。
OCRで読みとった結果はキャラクターごとに並べ替え、csv形式で保存しました。
記録した数値を統計的に分析し、平均、分散、四分位点などを求めました。以下は箱ひげ図の形式で結果をまとめた図です。