Введение
Питание является одним из фундаментальных аспектов жизни человека, а для школьников — особенно. В период активного роста, физического и умственного развития, организм ребенка требует сбалансированного и регулярного поступления питательных веществ. Школьная столовая выступает ключевым звеном в системе организации здорового питания подрастающего поколения. Именно здесь учащиеся проводят значительную часть своего дня, и от того, насколько качественно, полезно и вкусно организовано здесь питание, напрямую зависят их здоровье, успеваемость и самочувствие. Данная работа посвящена разработке автоматизированной системы питания в школьной столовой.
Актуальность данной темы состоит в том, что вопрос питания в школе давно перестал быть просто вопросом утоления голода. Сегодня это сложная проблема, находящаяся на стыке здоровья, экономии денежных средств и педагогики. С одной стороны — требования СанПиНов и врачей о сбалансированном рационе, с другой — предпочтения самих школьников, тяготеющих к фастфуду и ограниченный бюджет. Разработка данной системы позволит показать какой должна быть идеальная школьная столовая в XXI веке, докажет, что она способна накормить, воспитать вкус и при этом угодить всем.
Проблема школьных столовых — это не просто вопрос "вкусно / не вкусно". Это вопрос, в котором пересекаются недофинансирование, устаревшие нормативы, отсутствие гибкости и современной культуры питания. Решение требует комплексного подхода: от пересмотра механизмов финансирования и совершенствования инфраструктуры до внедрения цифровых систем, гибкого меню и налаживания диалога между школами, родителями и учениками. Только так столовая сможет превратиться из места "обязательной трапезы" в комфортное и здоровое пространство, которое действительно нравится детям.
Цель проекта: разработать прототип кассы самообслуживания для школьной столовой.
Для достижения данной цели были поставлены следующие задачи:
Изучить принципы работы технологии распознавания лиц (Face ID).
Изучить принципы работы компьютерного зрения для идентификации объектов (продуктов).
Проанализировать существующие аналогичные системы.
Разработать алгоритм работы системы.
Реализовать программный код для прототипа системы.
Протестировать прототип и выявить возможные проблемы и перспективы его внедрения.
Глава 1. Теоретическая часть. Технологии, лежащие в основе проекта.
1.1 Что такое Face ID и как работает технология?
Face ID — это технология распознавания лица. Она используется для безопасной разблокировки смартфонов (например, iPhone), планшетов (iPad), а также для авторизации платежей, входа в приложения и т.д. Если говорить просто, это ваш «цифровой лицевой пропуск».
Основная идея: ваше лицо уникально, и устройство может использовать его как ключ.
В основе Face ID лежит не обычная камера, а сложная система датчиков, которая называется TrueDepth Camera. Она проецирует и анализирует невидимые точки на вашем лице, чтобы создать его точную 3D-карту.
Когда вы настраиваете Face ID, система делает следующее:
Проецирует сетку точек: Специальный датчик (точечный проектор) освещает ваше лицо более чем 30 000 невидимых инфракрасных точек.
Считывает карту: Инфракрасная камера считывает, как эти точки ложатся на контуры вашего лица — его изгибы, впадины (например, переносицу) и выпуклости (например, нос).
Создает 3D-модель: На основе этих данных система строит точное глубинное изображение — уникальную цифровую карту вашего лица. Это не просто фотография, а сложная математическая модель.
Далее полученная 3D-модель вашего лица немедленно шифруется и сохраняется в специальном защищенном чипе внутри устройства — Secure Enclave.
Когда вы пытаетесь разблокировать устройство:
Система снова проецирует на ваше лицо сетку из инфракрасных точек и создает новую 3D-карту.
Сравнивает в реальном времени: Новая карта в зашифрованном виде сравнивается с эталонной картой, хранящейся в Secure Enclave.
Принимает решение: если совпадение достаточно точное (и при этом вы смотрите на экран) — устройство мгновенно разблокируется.
Основными Ключевыми особенностями для безопасности является то, что Face ID спроектирован так, чтобы его было очень сложно обмануть:
3D, а не 2D: Он не сработает с фотографией, изображением на экране или даже с качественной маской, потому что анализирует объем и глубину, а не просто картинку.
Требует внимания: По умолчанию функция требует, чтобы вы смотрели на экран (это видно по значку замка). Это не даст разблокировать телефон, пока вы спите, или если кто-то просто направит его на вас.
Адаптивность: Система постепенно учится и узнает вас, даже если вы меняетесь — отрастили бороду, надели очки или сменили прическу.
Работа в темноте: Поскольку используется инфракрасный свет, Face ID отлично работает даже в полной темноте.
Face ID — это быстрый, удобный и очень безопасный способ защитить свои данные, превратив уникальные черты вашего лица в надежный цифровой ключ.
1.2 Компьютерное зрение и искусственный интеллект для распознавания продуктов.
Распознавание продуктов питания представляет собой сложную и актуальную задачу компьютерного зрения (Computer Vision), находящую применение в различных системах контроля питания и логистике. Процесс включает несколько технологических этапов, от сбора данных до классификации объектов, и основан на методах глубокого обучения.
Использование компьютерного зрения (Computer Vision, CV) и искусственного интеллекта (ИИ) для распознавания продуктов — это быстроразвивающаяся технология, которая находит применение в самых разных сферах.
1.3 Анализ существующих решений.
В современном мире имеется масса существующих решений, которые мы применяем или могли бы применять в школьной столовой. Давайте рассмотрим самые актуальные из них.
Возьмем, к примеру системы в супермаркетах (например, "Пятерочка"): сканер штрих-кодов — это неудобно для столовой, так как нужно клеить код на каждую тарелку, это очень сильно замедляет процесс и заставляет привлекать к этому дополнительную рабочую силу.
Кассы с взвешиванием: работают по коду товара, но не подходят для готовых комплексных обедов. А если взять системы бесконтактной оплаты по карте (как в "Вкусно — и точка"): хорошо, но требует наличия карты, которую можно забыть или потерять, а в случае со школьником вообще ее не иметь.
Таким образом мы можем прийти к выводу, что комбинированная система (лицо + продукты) является более инновационной и удобной именно для формата школьной столовой.
Глава 2. Практическая часть
Для того чтобы воплотить свой задуманный проект я изучил различные интернет-ресурсы, узнал о работе и возможностях существующей системы питания в школьной столовой, а после приступил к выполнению поставленных передо мной задач проекта.
Практическая реализация проекта должна начаться с формулировки основной гипотезы: возможно ли создать на основе доступных технологий работоспособную систему автоматического распознавания продуктов питания, которая могла бы функционировать в условиях школьной столовой. Для проверки этой гипотезы нужно создать аппаратно-программный комплекс, способный идентифицировать различные категории продуктов питания и заменить кассира в школьной столовой.
Моей главной задачей будет написать такую программу, которая бы не ошибалась и работала быстро, ведь на перемене всего 10–15 минут и никто не хочет стоять в длинной очереди.
Что я буду использовать:
Ноутбук – самый обычный.
Веб-камеру – простую, как для скайпа.
Программа для кодинга – в основном Python, потому что для него есть много бесплатных библиотек, которые помогают компьютеру видеть и понимать изображения.
Весь процесс работы заключается в следующих этапах:
2.1 Идентификация ученика с использованием Face ID
В основе решения используется библиотека компьютерного зрения OpenCV, классические алгоритмы детектирования и распознавания лиц. Ключевым компонентом является алгоритм LBPH (Local Binary Patterns Histograms) для распознавания лиц. Он проводит анализ особенностей лица, создает наборы признаков и сравнивает текущий образ с обученной моделью.
Это один из самых простых алгоритмов. Для реализуемого мной MVP (прототипа) выбор был сделан в пользу этого варианта в связи с небольшими требованиями к производительности рабочего места, высокой скоростью работы и возможностью работы на простом компьютере без видеопроцессора. Но на небольшом объеме людей (моя семья) показал хороший результат.
При регистрации в системе нового пользователя происходит обучение системы: добавляется 500 различных снимков пользователя, которые хранятся в каталоге пользователя. В рабочем режиме система постоянно ищет лица на камере и определяет по своей базе данных наиболее похожего пользователя. (Приложение 1).
Для окончательного понимания насколько выбранная мной технология подходит для поставленной задачи требуется тестирование на большом объеме данных более 500 человек. Понимаю, что здесь могут возникнуть сложности с качеством распознавания и скоростью работы.
Возможные изменения / эксперименты:
подобрать расположение камеры при котором лицо будет максимально крупным и будет определяться максимально точно
обеспечить качественный свет
использование более качественной камеры или камеры специально подходящей для face ID
В приложении 2 приведен код процедуры по регистрации пользователя.
2.2 Определения еды по изображению
Первоначально для определения еды (списка готовых блюд), которые находятся на подносе, я планировал использовать нейросеть развернутую и обученную локально на моем компьютере, аналогично тому как работает Face ID. В этом случае работники столовой должны при появлении нового блюда в меню провести обучении нейросети (выполнить несколько фото с разных ракурсов, указать калорийность блюда, состав БЖУ, цену …).
Я провел эксперимент и столкнулся с тем, что распознавание работает отлично на отдельных компонентах (огурец, пюре, макароны, котлета), но, когда я начал комбинировать их между собой и размещать на подносе много блюд, перекрывая ими друг друга, я столкнулся с ошибками. Тогда я решил попробовать использовать нейросеть размещенную в облаке. Такого опыта у меня еще не было.
Однозначным преимуществом такого подхода является огромная база знаний. Облачная нейросеть может сразу посчитать калорийность, разложить БЖУ и дать рекомендации по правильному питанию. При этом не требует от сотрудников столовой никакой дополнительной подготовки.
Проводя эксперименты, я отправлял фото в разные чаты генеративных сетей и по результатам моих экспериментов лучший результат показала нейросеть фирмы OpenAI.
Следующим этапом я выполнил интеграцию нейросети в мою программу с использованием библиотеки OpenAI. Как оказалось работа с приложением через API сильно отличалась от работы через чат, к которому мы все привыкли.
Далее мне пришлось определиться с используемой моделью. Я остановился на модели GPT-4o mini. Данная модель является одной из самых простых и бюджетных. Позволяет передавать для обработки изображения и текст, а в ответ получать текстовую информацию. Это как раз подходило для моего проекта.
Для интеграции мне потребовалось выполнить отдельную регистрацию в системе, выбрать модель для использования, сгенерировать специальный API ключ (аналог обычного пароля, но для использования в программном коде) и пополнить баланс лицевого счета (здесь потребовалась помощь родителей). Без особых сложностей я нашел в интернете примеры работы с данной библиотекой и смог передавать информацию и получать проанализированные ответы.
Следующей сложностью стало то, что ответы были каждый раз разными, содержали верную, но не структурированную информацию: иногда я получал список еды, с указанием калорийности каждого блюда, в следующем ответе список блюд был через запятую, а калорийность была указана на весь набор, иногда ответ содержал комментарии по поводу каких-то других объектов которые попадали в кадр.
Для решения данной проблемы я разобрался с промптом - инструкцией, которую пользователь вводит в искусственный интеллект (ИИ) для получения ответа или выполнения задачи. Выяснилось, что от правильно составленного, качественного промпта сильно зависит то, насколько точным будет результат, будь то текст, изображение или другой контент.
Промпт который остался в работе:
На изображении школьный обед ребёнка.
Проанализируй только еду, без описаний внешнего вида.
Требую выдать результат строго в формате:
1) Список еды:
- [Название продукта 1]
- [Название продукта 2]
...
2) Калорийность: [число] ккал
3) Оценка по 5-балльной шкале: [число]
4) Рекомендации: [краткий текст]
Не используй другой формат, только указанный.
В Приложении 3 приведен код процедуры по отправке изображения в нейросеть и получению ответа.
В целом мне понравился подход использования облачной нейросети в моем проекте. Ниже приведены основные его преимущества и недостатки.
Преимущества:
точность определения блюд
не требуется предварительная подготовка данных к использованию (обучение модели, загрузка фото)
система позволяет легко расширить функционал
легкость интеграции в мое решение
Недостатки:
система не работает без интернета
система OpenAI является иностранной
требуется связать наименования блюд определенных нейросетью со школьным меню (предполагаю, что доработка промпта должна помочь)
Развитие возможные изменения / эксперименты:
использование российских аналогов нейросетей
размещение нейросети на собственных серверах (единый сервер для всех школ позволит создать и обучить наиболее полную и точную нейросеть, либо размещение сервера в каждой школе позволит работать при отсутствии интернета)
тестирование системы на реальных данных в столовой
2.3 Отправка писем пользователям
Когда процесс идентификации ученика и определения блюд завершен родителям ученика отправляется электронное письмо содержащее фото ученика и подноса с едой, списком блюд, количеством калорий, оценкой выбранной еды и рекомендациями по питанию.
При регистрации ученика программа сразу просит указать адрес электронной почты одного из родителей, чтобы отправить информационное письмо об обеде.
Для отправки писем я зарегистрировал адрес электронной почты на сервисе mail.ru.
Образец письма и указание почты в программе вы можете увидеть в Приложении 4, а в Приложении 5 приведен код процедуры по отправке электронного письма.
Сейчас я активно работаю над 2 задачами - созданием интерфейса для пользователей, чтобы использование программы было интуитивно понятно и удобно. В приложении 6 можно увидеть примеры скринов экрана, которые я уже создал. Для разработки интерфейса использую библиотеку tkinter.
Так же одной из задач, о которой я изначально не думал, стала необходимость создания базы данных (таблиц с данными) для хранения информации. У меня уже созданы все необходимые таблицы (меню с ценами, список школьников и список обедов). На основании этих данных формируется отчет о истории питания школьника в столовой. Для этой задачи я использую библиотеку sqlite3.
Уверен, что во время проекта смогу продемонстрировать новую версию программы.
Заключение
В ходе работы была изучена теория компьютерного зрения и Face ID, проанализированы существующие системы и разработан проект автоматизированной кассы для школьной столовой.
Результаты:
Создана подробная схема работы системы
Разработан прототип кассы самообслуживания в школьной столовой
Протестированы технологии необходимые для реализации проекта
На мой взгляд, разработанная система имеет практическую ценность и может значительно улучшить организацию питания в школьной столовой, сделав процесс быстрым, удобным и современным.
Скорость: расчет занимает 3-5 секунд. Отсутствие очередей.
Удобство: не нужно носить с собой деньги или карты. Система безналичной оплаты минимизирует риски, связанные с наличными деньгами и картами (кражи, потери).
Гигиена: отсутствие контакта с деньгами и картами.
Контроль: родители могут видеть, что покупает ребенок. Родители видят историю покупок ребенка, могут устанавливать лимиты расходов, ограничивать покупку определенных продуктов (например, сладостей). Это формирует доверие и финансовую дисциплину.
Учет: автоматическое ведение статистики по продажам. Система автоматически формирует все виды отчетности для столовой, бухгалтерии и контролирующих органов, сводя к нулю человеческие ошибки и экономя время персонала.
Задачи, которые я поставил перед собой в данной работе выполнены.
Я считаю, что данная система имеет большой потенциал, поэтому у меня есть идеи по дальнейшему развитию системы:
Интеграция кассы с бухгалтерией для выгрузки информации о начисленной сумме за питание по каждому ученику. И отправке информации родителям по итогам месяца. Списание денежных средств будет происходить по следующему сценарию: сумма через программу будет направляться в бухгалтерию школы и далее общая сумма будет выставляться отдельным счетом под статьей «Питание».
Развитие возможностей по правильному питанию детей: указание данных по ребенку (пол, вес) для получения индивидуальных рекомендаций по питанию.
Создание мобильного приложения, в котором родители будут видеть ежедневно информацию о питании ребенка. В приложении можно реализовать много функционала формировать данные за любой период времени.
Ниже привожу примерные возможности, которые могут быть реализованы:
Посмотреть статистику питания ребенка:
качество питания ребенка (средняя оценка за период)
рекомендации на основании длительного периода, а не 1 обеда в конкретный день (количество калорий, витаминов и других полезных веществ)
отображать общие данные по питанию ребенка за день, в случае если он питается в школьной столовой несколько раз в день. Например отображать норму от полученных витаминов в день
вести учет питания ребенка не только в школе
установка запретов на покупку в столовой определенных продуктов (аллергенов для ребенка)
Оплата питания:
посмотреть расходы на питание ребенка
произвести оплату
узнать задолженность или переплату
Геймификация процесса: сделать процесс питания интересным для учеников, тем самым приучая их к правильному питанию. Например, сделать призы или награждения для учеников, которые получили максимальный средний бал за питание в течение месяца. Устраивать соревнования по правильному и сбалансированному питанию среди учеников.
Использовать нейросеть для анализа качества питания в школьных столовых, собирая статистику по всей стране. Информировать руководство школ в случае нарушений в столовых (например, изменение размера порций). Проводить аналогичные соревнования между школами по качеству питания учеников.
Список источников
Документация OpenCV [Электронный ресурс] - Режим доступа: URL (дата обращения: 18.12.2025)
Компьютерное зрение для начинающих [Электронный ресурс] // Образовательный портал Stepik. - Режим доступа: URL (дата обращения: 12.12.2025)
Как работают нейронные сети // Научно-популярный журнал «Квант». — 2025. - №12. - С. 45-56
Технологии Face ID [Электронный ресурс] // Официальный сайт Apple. - Режим доступа: URL (дата обращения: 12.12.2025)
Система бесконтактных магазинов [Электронный ресурс] // Официальный сайт Amazon Go. - Режим доступа: URL (дата обращения: 12.12.2025)
Современные технологии распознавания лиц [Электронный ресурс] // Материалы международной конференции по искусственному интеллекту. - Режим доступа: URL (дата обращения: 10.12.2025)
Python для начинающих [Электронный ресурс] // Официальный сайт Python. - Режим доступа: URL (дата обращения: 18.12.2025)
Приложения
Приложение 1. Идентификация пользователя.
Приложение 2. Процедура регистрации нового пользователя.
Приложение 3. Отправка изображения в нейросеть для анализа.
Приложение 4. Пример электронного письма.
Приложение 5. Процедура отправки электронного письма.
def send_email_with_report(
to_email: str,
user_name: str,
analysis_text: str,
face_frame,
food_frame
):
if not to_email:
print("❌ У пользователя не указан email — письмо не отправлено.")
return
msg = EmailMessage()
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
msg["Subject"] = f"Отчётошкольномобеде ({timestamp})"
msg["From"] = SENDER_EMAIL
msg["To"] = to_email
body = (
f"Здравствуйте, {user_name}!\n\n"
f"Отчёт о школьном обеде ребёнка:\n\n"
f"{analysis_text}\n\n"
f"Дата и время: {timestamp}\n"
)
msg.set_content(body)
# --- прикрепляем изображение с Face ID камеры ---
try:
success_face, buffer_face = cv2.imencode(".jpg", face_frame)
if success_face:
face_bytes = buffer_face.tobytes()
msg.add_attachment(
face_bytes,
maintype="image",
subtype="jpeg",
filename="face_camera.jpg"
)
else:
print("⚠️ Не удалось закодировать изображение лица для письма.")
except Exception as e:
print("⚠️ Ошибка при подготовке фото лица:", e)
# --- прикрепляем изображение с камеры еды ---
try:
success_food, buffer_food = cv2.imencode(".jpg", food_frame)
if success_food:
food_bytes = buffer_food.tobytes()
msg.add_attachment(
food_bytes,
maintype="image",
subtype="jpeg",
filename="food_camera.jpg"
)
else:
print("⚠️ Не удалось закодировать фото еды для письма.")
except Exception as e:
print("⚠️ Ошибка при подготовке фото еды:", e)
# --- отправкаписьма ---
try:
context = ssl.create_default_context()
with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT, context=context) as server:
server.login(SENDER_EMAIL, SENDER_PASSWORD)
server.send_message(msg)
print(f"