```python
import pytesseract
from PIL import ImageGrab
from pynput import keyboard
from pynput.keyboard import Key, Controller
import time
import threading
import cv2
import numpy as np

# Настройки области захвата
BOX_WIDTH, BOX_HEIGHT = 600, 150

# Инициализация контроллера клавиатуры один раз для повышения эффективности
keyboard_controller = Controller()

def capture_and_process():
    """Функция для захвата экрана, обработки изображения, визуализации и эмуляции нажатий клавиш."""
    try:
        # Захват скриншота
        screenshot = ImageGrab.grab()

        width, height = screenshot.size
        left = int((width - BOX_WIDTH) / 2)
        top = int((height - BOX_HEIGHT) / 2)
        right = left + BOX_WIDTH
        bottom = top + BOX_HEIGHT
        box = (left, top, right, bottom)
        cropped_image = screenshot.crop(box)

        # Визуализация области захвата
        visualize_capture(screenshot, box)

        # Оптимизация параметров OCR
        custom_config = r'--oem 3 --psm 6 -c tessedit_char_whitelist=0123456789'
        text = pytesseract.image_to_string(cropped_image, lang='eng', config=custom_config)
        digits = ''.join(filter(str.isdigit, text))
        print(f"Распознанные цифры: {digits}")

        if digits:
            # Эмуляция ввода цифр
            for num in digits:
                keyboard_controller.press(num)
                keyboard_controller.release(num)
                time.sleep(0.05)  # Уменьшение задержки для большей скорости

            # Эмуляция нажатия Enter
            keyboard_controller.press(Key.enter)
            keyboard_controller.release(Key.enter)

    except Exception as e:
        print(f"Ошибка при обработке скриншота: {e}")

def visualize_capture(screenshot, box):
    """Функция для отображения захваченного экрана с выделенной областью box."""
    try:
        # Конвертация PIL изображения в формат, совместимый с OpenCV
        screenshot_cv = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR)

        # Рисование прямоугольника вокруг области захвата
        cv2.rectangle(screenshot_cv, (box[0], box[1]), (box[2], box[3]), (0, 255, 0), 2)

        # Название окна
        window_name = "Захват экрана с выделенной областью"

        # Отображение изображения
        cv2.imshow(window_name, screenshot_cv)

        # Ожидание заданного времени или нажатия любой клавиши
        # Здесь окно будет отображаться на 2 секунды или до нажатия клавиши
        cv2.waitKey(2000)  # 2000 миллисекунд = 2 секунды

        # Закрытие окна
        cv2.destroyWindow(window_name)

    except Exception as e:
        print(f"Ошибка при визуализации: {e}")

def on_press(key):
    """Обработчик нажатий клавиш."""
    try:
        if key.char.lower() == 'n':
            # Использование отдельного потока для предотвращения блокировки слушателя
            threading.Thread(target=capture_and_process, daemon=True).start()
    except AttributeError:
        pass  # Игнорируем специальные клавиши

def main():
    """Основная функция для запуска слушателя клавиатуры."""
    with keyboard.Listener(on_press=on_press) as listener:
        listener.join()

if __name__ == "__main__":
    main()
```
Как сделать гибкую настройку положения бокса обнаружения и т.д