Задать вопрос
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(¬‿¬) работаем дальше!')

Помогите пж))
  • Вопрос задан
  • 203 просмотра
Подписаться 1 Сложный Комментировать
Пригласить эксперта
Ответы на вопрос 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
А сколько памяти потребляет скрипт, когда зависает? Может он всю оперативку выдаёт и от этого начинает тормозить?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
31 янв. 2025, в 00:16
43000 руб./за проект
30 янв. 2025, в 21:33
5000 руб./за проект
30 янв. 2025, в 19:55
7000 руб./за проект