そのシリアルコードくれよ
みなさんは原神というゲームをやってますか?
やってるいらっしゃる方がいるなら下の画像のシリアルコードについては知ってると思います。(下の画像の赤丸で囲ったところです)
これわざわざ手打ちするのはめんどうですよね?
配信とゲームを行き来して確認するのはめんどうですよね?
なんならそれ以外のコピペできないやつを引っ張ってくるのもめんどくさいですよね?
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に入れてしまってまじでごめんなさい)