N予備校をgpt君にやってもらいたかった
初投稿なので読みずらいところがあるかもです。皆さんめんどくさいオンラインな課題ありますよね
そのような課題はgpt君やらせましょう!!!
なので課題というほど大層なものではないのですがN予備校というものを自動攻略したいと思います。
環境はm2のpython3.10です。
使用したライブラリなどは
Name | Version |
---|---|
Pyocr | 0.8.3 |
Pillow | 9.4.0 |
Openai | 0.27.2 |
そしてコードです。
main.py
from PIL import Image
from PIL import ImageGrab
import sys
import pyocr
import pyocr.builders
import gpt3
screenshot = ImageGrab.grab(bbox=(1370, 220, 2550, 700))
screenshot.save('SC.png')
tools = pyocr.get_available_tools()
if len(tools) == 0:
print("No OCR tool found")
sys.exit(1)
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))
txt = tool.image_to_string(
Image.open('SC.png'),
lang='jpn',
builder=pyocr.builders.TextBuilder()
)
print(txt)
print("")
print("ここから下はgptくんの回答です--------------")
print (gpt3.gpt3Q(txt))
このmain.pyがやってる事は、画面のスクショを撮ってOCRで画像に含まれる文字を起こして
起こした文字をgpt君に投げるだけです。
唐突に出てきたgpt3ライブラリ(自作)のソースは
gpt3.py
import openai
import os
# APIキーを設定
apikey="API_KEY"
openai.api_key = apikey
# GPT-3を呼び出す
def gpt3Q(q):
response = openai.Completion.create(
engine="davinci",
prompt=q,
temperature=0.5,
max_tokens=10
)
return response.choices[0].text
ほぼ全部gpt書いてもらいましたが、大体動かないです。
でもgpt君にエラー内容を投げたらほぼ解決してくれます
たまに無理な時もあります
実行してみよう
_人人人人人人人人人_
> 存在しない回答 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
を出して来ます。
なぜこうなってしまったのか
理由として考えられるのは1. gpt君には問題が難しい説
2. gpt君には問題の回答はこれしかなかった説
3. gpt君には問題の答え方が定義されていなかったから出来なかった説
が考えられました。一番解決に近そうなのは3の答え方を教えてあげるのが良さそうです。
なのでocrした文を送る前に"答え方.txt"的なのを送ってあげましょう。
やる気になったら"答え方.txt"を書きます
いやうちの学校の課題N予備校じゃないんだが
って感じの人も多いと思います。その場合は
screenshot = ImageGrab.grab(bbox=(X, Y, X, Y))
この項目のX,YでOCR用のスクショ範囲を指定しているのでその範囲さえ弄ればいいと思います
XY座標はpynputとpyautoguiを使ったこちらを使えば良いですよ。
左クリックした座標をprintしてくれます、止めたい時はCTRL+Cで止まります。
clicktoXY.py
from pynput import mouse
import pyautogui
def on_click(x, y, button, pressed):
if pressed:
print(pyautogui.position())
return True
with mouse.Listener(
on_click=on_click) as listener:
listener.join()
もし間違っていたりしたらコメントなどで教えて頂ければ嬉しいです。
参考にさせていただいた記事