Texterkennung und -analyse
Verfasst: Freitag 4. Juni 2021, 14:11
Hallo Liebe Community,
ich habe mich in den letzten Tagen mal an einem Stückchen Code versucht, leider nur mäßig erfolgreich und hoffe nun das ich hier Hilfe bekomme.
Zunächst einmal der Code den ich bisher habe:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
from PIL import Image
import pytesseract
import pyscreenshot as ImageGrab
import pyautogui
def run(sA, sV):
try:
while True:
ocr_text = ocr_proz('D:\screenshots\screenshot.png')
print("OCR TEXT ", ocr_text, "OCR TEXT END")
found = search(ocr_text, sA, sV)
if found == True:
break
else:
pyautogui.click(218, 366)
finally:
con = input("j to continue with "+ sA +" +"+ sV +" : ")
if con == "j":
run(sA, sV)
else:
main()
def ocr_proz(image):
img_grab(30, 190, 300, 280)
im = Image.open(image)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' #depends on installation dir
optext = pytesseract.image_to_string(im)
text = optext.replace("%","").replace(" ","").replace(",","").replace(".","").replace("\n\n","\n") #adjust to the characters used ingame (bug : '+5 gets converted too 45)
return text.lower()
def img_grab(X1, Y1, X2, Y2):
im = ImageGrab.grab(bbox=(X1, Y1, X2, Y2))
im.save('D:\screenshots\screenshot.png')
def main():
print("_____________\n\nAttributelist:\n_____________\n\nstr - int - sta - dex\nincreasedcriticaldamage - decreasedcastingtime\nattack - maxfp - maxmp - maxhp\nattackspeed - speed - criticalchance\n")
search_attr = input("Attribute : ") #attribute we are looking for
search_value = input("Min Values : ") #min value for the attribute
run(sA, sV)
def test_print():
im = Image.open('D:\screenshots\screenshot.png')
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' #depends on installation dir
optext = pytesseract.image_to_string(im)
text = optext.replace("%","").replace(" ","").replace(",","").replace(".","").replace("\n\n","\n") #adjust to the characters used ingame (bug : '+5 INT' gets converted too 45int)
print(text)
def test_img():
img_grab(30, 190, 300, 280)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Folgender Ablauf soll am durch das Script realisiert werden:
1. Am Anfang des Scriptes soll einen bestimmter Attribut ( z.B. STR) und ein dazugehöriger Mindestwert (z.B. 10) festgelegt werden
2. Screenshot von einem definierten Bereich des Bildschirms erstellen ( def img_grab(X1, Y1, X2, Y2) )
3. Text auf dem Bild auslesen ( def ocr_proz(image)
4. Die im 1. Schritt festgelegten Werte suchen (Attribut + Mindestwert oder höher )
5. Wenn 4. Positiv also am Beispiel STR +12 Script stoppen und auf eine Reaktion warten ( def run(sA, sV) )
5.2 Wenn 4. Negativ also z.b. STR+9 oder STA +20 einen Klick an einer definierten Stelle ausführen und dann wieder bei Schritt 2 beginnen
Aktuell bekomme ich immer den folgenden Fehlercode :
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
main()
File "C:\Users\Tom Pförtner\Desktop\hausaufgabe 4.py", line 47, in main
run(sA, sV)
NameError: name 'sA' is not defined
ich habe mich in den letzten Tagen mal an einem Stückchen Code versucht, leider nur mäßig erfolgreich und hoffe nun das ich hier Hilfe bekomme.

Zunächst einmal der Code den ich bisher habe:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
from PIL import Image
import pytesseract
import pyscreenshot as ImageGrab
import pyautogui
def run(sA, sV):
try:
while True:
ocr_text = ocr_proz('D:\screenshots\screenshot.png')
print("OCR TEXT ", ocr_text, "OCR TEXT END")
found = search(ocr_text, sA, sV)
if found == True:
break
else:
pyautogui.click(218, 366)
finally:
con = input("j to continue with "+ sA +" +"+ sV +" : ")
if con == "j":
run(sA, sV)
else:
main()
def ocr_proz(image):
img_grab(30, 190, 300, 280)
im = Image.open(image)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' #depends on installation dir
optext = pytesseract.image_to_string(im)
text = optext.replace("%","").replace(" ","").replace(",","").replace(".","").replace("\n\n","\n") #adjust to the characters used ingame (bug : '+5 gets converted too 45)
return text.lower()
def img_grab(X1, Y1, X2, Y2):
im = ImageGrab.grab(bbox=(X1, Y1, X2, Y2))
im.save('D:\screenshots\screenshot.png')
def main():
print("_____________\n\nAttributelist:\n_____________\n\nstr - int - sta - dex\nincreasedcriticaldamage - decreasedcastingtime\nattack - maxfp - maxmp - maxhp\nattackspeed - speed - criticalchance\n")
search_attr = input("Attribute : ") #attribute we are looking for
search_value = input("Min Values : ") #min value for the attribute
run(sA, sV)
def test_print():
im = Image.open('D:\screenshots\screenshot.png')
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' #depends on installation dir
optext = pytesseract.image_to_string(im)
text = optext.replace("%","").replace(" ","").replace(",","").replace(".","").replace("\n\n","\n") #adjust to the characters used ingame (bug : '+5 INT' gets converted too 45int)
print(text)
def test_img():
img_grab(30, 190, 300, 280)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Folgender Ablauf soll am durch das Script realisiert werden:
1. Am Anfang des Scriptes soll einen bestimmter Attribut ( z.B. STR) und ein dazugehöriger Mindestwert (z.B. 10) festgelegt werden
2. Screenshot von einem definierten Bereich des Bildschirms erstellen ( def img_grab(X1, Y1, X2, Y2) )
3. Text auf dem Bild auslesen ( def ocr_proz(image)
4. Die im 1. Schritt festgelegten Werte suchen (Attribut + Mindestwert oder höher )
5. Wenn 4. Positiv also am Beispiel STR +12 Script stoppen und auf eine Reaktion warten ( def run(sA, sV) )
5.2 Wenn 4. Negativ also z.b. STR+9 oder STA +20 einen Klick an einer definierten Stelle ausführen und dann wieder bei Schritt 2 beginnen
Aktuell bekomme ich immer den folgenden Fehlercode :
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
main()
File "C:\Users\Tom Pförtner\Desktop\hausaufgabe 4.py", line 47, in main
run(sA, sV)
NameError: name 'sA' is not defined