import gradio as gr from tensorflow.keras.models import load_model from tensorflow.keras.preprocessing.image import img_to_array from PIL import Image import numpy as np # Загрузка модели model = load_model("digit_recognizer_model.h5") # Функция для обработки изображения и предсказания def predict_digit(image): # Преобразование изображения image = image.convert("L") # Конвертация в градации серого image = image.resize((28, 28)) # Изменение размера на 28x28 image = img_to_array(image) # Преобразование в numpy-массив image = image.reshape(1, 28, 28, 1) # Преобразование в формат (1, 28, 28, 1) image = image / 255.0 # Нормализация # Предсказание prediction = model.predict(image) # Получение вероятностей классов predicted_class = np.argmax(prediction) # Класс с наибольшей вероятностью return f"Предсказанное число: {predicted_class}" # Интерфейс Gradio interface = gr.Interface( fn=predict_digit, inputs=gr.Image(type="pil"), # Используем только `type="pil"` для передачи изображения outputs="text", # Вывод в виде текста title="Распознавание цифр" ) # Запуск приложения if __name__ == "__main__": interface.launch()