Вы заново создаете список на каждой итерации строки. Создал его до l oop.
Кроме того, ваш return
никогда не будет достигнут, так как перед ним стоит строка break
. См. Ниже исправления с несколькими исправлениями стилей, аннотированными в комментариях.
def get_roles_text():
all_roles = [] # Move it up here. Also, [] is more idiomatic than list()
start = [107, 338, 215, 21]
while True: # No need for parens
im = pyautogui.screenshot(region=(start[0], start[1], start[2], start[3]))
# Leave out all those print() statements until you need them
text = tess.image_to_string(cv2.cvtColor(np.array(im), cv2.COLOR_BGR2GRAY))
if not text: # not text is an idiomatic way to say text == ''
return all_roles