LoginSignup
1
0

そのシリアルコードよこせ

Last updated at Posted at 2023-12-14

そのシリアルコードくれよ

みなさんは原神というゲームをやってますか?
やってるいらっしゃる方がいるなら下の画像のシリアルコードについては知ってると思います。(下の画像の赤丸で囲ったところです)
serial_code.png

これわざわざ手打ちするのはめんどうですよね?
配信とゲームを行き来して確認するのはめんどうですよね?
なんならそれ以外のコピペできないやつを引っ張ってくるのもめんどくさいですよね?

Tesseract OCR使いましょう

Tesseract OCR

早速ですがコード紹介

from PIL import ImageGrab
import os,pyocr,pyperclip
def get_tool():
    os.environ["PATH"]+=";C:\Program Files\Tesseract-OCR"
    tools=pyocr.get_available_tools()
    tool=tools[0]
    return tool

def get_img_fromclip():
    try:
        img=ImageGrab.grabclipboard()
    except OSError:
        return None
    return img
if __name__ == "__main__":
    last_img=get_img_fromclip()
    tool=get_tool()
    while True:
        img = get_img_fromclip()
        if img is None or img == last_img:
            pass
        else:
            s = tool.image_to_string(
                img,
                lang='jpn+eng',
                builder=pyocr.builders.TextBuilder(tesseract_layout=6)
            )
            print(s)
            pyperclip.copy(s)
            last_img=img

処理としては

1.スクショを取る
2.それをプログラムが検知する
3.OCRする
4.その結果をクリップボードに格納する

こうするだけで簡単に画像をテキストにコピペできます。
(数年前に誰かが既に作ってそう)

余談

os.environ["PATH"]+=";C:\Program Files\Tesseract-OCR"

Q:これなに?
A:ほかのアプリケーションの依存関係がおかしくなるからTesseractのパスは実行時のみに入れるようにしてます

except OSError:

Q:これは?
A:クリップボードが空っぽだとエラーだすのでそれの回避

終わり

日本語対象にやると謎の空白が入りまくるのでそこらへんの修正は必要かもしれないです。まぁシリアルコードにそんなものはありませんが。

(いやこんな記事をAdvent Calenderに入れてしまってまじでごめんなさい)

1
0
0

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
1
0