46
26

More than 3 years have passed since last update.

寿司打を自動化してみた【RPA×OCR】

Last updated at Posted at 2020-01-26

はじめに

皆さんは寿司打というタイピングゲームをご存知でしょうか?

回転寿司のように問題が次々に流れてきて、それをどんどんタイピングして点数を稼いで行くというゲームになります。
寿司打紹介.png

おそらくタイピングゲームでは一番有名?なのではないでしょうか。
(私もブラインドタッチの練習をしていた頃に大変お世話になりました)

私が現在参画しているプロジェクトでは、飲み会の幹事をこの寿司打で決めるという面白い習慣があります。
新卒の子達が先輩にボコボコにされ、その子達が訓練を積んで、次の後輩達をボコボコにする(結果的にみんなタイピングが速くなる)という事ですね。

もはや本来の趣旨を外れているのですが、「これすぐ自動化できそうだな」と思ったので、RPA(UiPath)とOCRで自動化してみました。

■使用環境
OS:Windows
ブラウザ:Chrome
RPA:UiPath
OCR:UiPathデフォルトのtesseractエンジン

■開発時間
2時間程度

結果

最適化すればもっと速くなりそうですが、しっかりとタイプしてくれています。
ezgif.com-crop.gif
全体の動画は右記参照:寿司打を自動化してみた(YouTube)

アルゴリズムとしては、スクショを撮る→OCRで文字読み取り→読み取り結果をタイピングという単純なもので、正規表現でのマッチングとリプレイス、読み取りエラーのハンドリングを5箇所程度入れています。

最終スコアがどうなるか楽しみにしていたのですが、ここで一つ大きな誤算がありました。。
制限時間の減少速度を、連打ボーナスによる時間の増加が上回り、いつまでも終わらないのでスコアが出ないという状態になりました。
とりあえず放置してみた所、500円皿が100皿を超えたあたりでシステムエラー?によるポップアップが出て強制終了に。

スコアが出ないのはそれはそれで困るので、試しに強制終了となる手前でRPAを止めた所、合計300皿で12万円程度でした。これで新卒の子達に負ける心配はなさそうです。
寿司打.png
※380円皿は2週目(180皿)

まとめ

過去に使用した際の経験上、tesseractの読み取り精度を心配していたのですが、この程度の問題設定なら十分に読み取ってくれました。

最初Pythonでやろうかと思ったのですが、UiPathは画面をクリックすればセレクタを自動で取ってきてくれるので楽ですね。小中規模程度の実装なら、フローチャート形式で書ける可読性の高さのメリットも大きいです(後から見た時にすぐわかる)。

今回は割と問題設定が易しかったので、「これ自動化してみて欲しい」という面白い課題がありましたら教えて頂けると幸いです。

<参考>
Qiita記事
RPAは誰でも簡単に作れるという罠
VBAが組める人ならRPAは簡単に作れるという罠
UiPathのコーディングチェックツールを作ってみた【RPA】
RPAへの理解がぐっと深まる、RPAがよくこける理由
RPAのオススメ書籍
RPAの開発に向いている人、向いていない人
RPAの推進に必須なRPAOpsという考え方
【AI】Deep Metric Learning
【AI】Deep Learning for Image Denoising
Deep Convolutional Autoencoderベースの教師なし異常箇所検知

デモ
UiPathCodingChecker:UiPathのxamlファイルからコードを分析
AI Demos:DeepLearningによる手書き文字認識・異常検知・画像のデノイズ
寿司打自動化(YouTube):タイピングゲーム寿司打のRPA×OCRでの自動化

46
26
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
26