RINCODE
@RINCODE
Я новичок, еще учусь

Программа зависает?

Всем доброе утро, вчера я тестировал свою программу (В ней есть бесконечный цикл, создания скриншота, обработка текста на скриншоте, потом через translate русский текст переводится на английский и копируется в буфер обмена) в течении 20-40 минут программа работает хорошо, но позже она зависает. Можете помочь с этой проблемой?)
PS: много importov буду фиксить позже, но я не думаю, что это из-за них...
import time
import numpy as np
import pyscreenshot as ImageGrab
import cv2
import PIL
from PIL import Image
import pytesseract
import pyperclip
import  pyautogui as pg
import time
import os
import requests
from pprint import pprint
import translators as ts
filename = 'Image.png'
x = 1
time.sleep(10)
while True:
    try:
        time.sleep(4)
        while True:
            screen = np.array(ImageGrab.grab(bbox=(713,550,1400,586)))
            cv2.imwrite(filename,screen)
            x = x + 1
            print(x)
            if x == 2:
                cv2.destroyAllWindows()
                x = 0
                break
        ####################################
        pytesseract.pytesseract.tesseract_cmd = "C:\Program Files (x86)\Tesseract-OCR/tesseract.exe"
        tessdata_dir_config = r'--tessdata-dir "C:\Program Files (x86)\Tesseract-OCR\tessdata"'
        img = Image.open(filename)
        text = pytesseract.image_to_string(img, lang='rus', config=tessdata_dir_config)
        print('Текст',text)
        text = text.replace('','')
        text = text.replace('ь!', 'ы')
        text = text.replace('„','')
        text = text.replace('—', ' is')
        endtext = ts.google(text, from_language='ru', to_language='en')
        endtext = endtext.replace("'", '')
        endtext = endtext.replace(".", '')
        print(endtext)
        pyperclip.copy(endtext)
    except TypeError:
        print('Попытка краша программы была предотвращена! \n(¬‿¬) работаем дальше!')

Помогите пж))
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 3
longclaps
@longclaps
У тебя "программа" наполовину состоит из импортов, из них половина не используется.
Ты маньяк?
Ответ написан
@o5a
Много лишнего. Вместо numpy, pyscreenshot, cv2 можно использовать PIL. Не совсем понятно, зачем в цикле несколько раз делается скриншот, при том, что используется только 1. Если делается цикл, то объявление всяких констант лучше выносить за него.

Например так, вместо использования промежуточных модулей с сохранением файла и вложенного цикла.
import time
import pytesseract
from PIL import Image, ImageGrab

pytesseract.pytesseract.tesseract_cmd = "C:\Program Files (x86)\Tesseract-OCR/tesseract.exe"
tessdata_dir_config = r'--tessdata-dir "C:\Program Files (x86)\Tesseract-OCR\tessdata"'
time.sleep(10)
while True:
    try:
        time.sleep(4)
        # просто считываем с экрана и напрямую распознаем
        img = ImageGrab.grab(bbox=(713,550,1400,586))
        text = pytesseract.image_to_string(img, lang='rus', config=tessdata_dir_config)
    ...
Ответ написан
Комментировать
LaRN
@LaRN
Senior Developer
А сколько памяти потребляет скрипт, когда зависает? Может он всю оперативку выдаёт и от этого начинает тормозить?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы