Стажировка по проекту
Создание ИИ-системы классификации записей из продуктовых чеков для дальнейшей оценки рациона питания
Компания: Сеченовский Университет, Непрерывное Медицинское Образование
Суть проекта
задача
для чего
вводные данные
Разработка модели классификации записей из чеков продуктовых магазинов для автоматизации анализа химического состава продуктов с использованием современных ИИ-методов

Проект направлен на создание удобного инструмента для автоматизированной обработки данных, сокращения времени на рутинные задачи и повышения точности анализа



Таблица записей, полученных из приложения «Проверка чеков ФНС» и размеченная по классам вручную студентами Сеченовского Университета, и таблица химического состава продукции, составленная на основе справочника под ред. И.М. Скурихина
выходные данные
Разработано несколько вариантов tg-ботов, принимающих данные из приложения «Проверка чеков ФНС», и выводящих данные в таблицу по форме от заказчика. Есть варианты десктоп интеграции через Gradio и Streamlit. Лучшие метрики точности классификации сильно несбалансированных данных от заказчика 90,8%. На сбалансированных данных точность классификации достигает 99%
Участники
1 команды проекта
  • Рубцов Антон
    Тимлид проекта
  • Каргальцев Владислав
    Помощник тимлида
    1. Анализ задачи и помощь студентам в подборе алгоритмов решения задач
    2. Создание блок-схемы проекта стажировки.
    3. Создание части технического задания о стандартизации предобработки данных
    4. Решение организационных задач в координации проекта
    5. Помощь тимлиду в проведении еженедельных встреч группы
  • Шелагурова Марина
    Начальник сектора по индикации и картографии, к.т.н.
    1. ООП в Python для очистки и обработки данных
    2. Обучение и оптимизация моделей SVM, BERT, LSTM, CNN, DNN (PyTorch, TensorFlow).
    3. Создание интерфейса на Gradio для пользователей для анализа чеков и их классификации
    4. Разработка телеграм-бота для обработки данных и взаимодействия с пользователем (Python, Flask)
    5. Интеграция базы данных SQLite для хранения и анализа данных чеков
    6. Оптимизация моделей и балансировка датасетов, анализ данных (Numpy, Pandas)
    7. Сводный анализ результатов и презентация проекта. Подготовка итоговых таблиц и презентаций, публикация научной статьи (LaTeX, Markdown)
  • Бахтиозин Андрей
    Ученик 11 IT-класса, программист
    1. Анализ и обработка данных чеков: разработка и доработка парсера для очистки данных, Python, Pandas
    2. Обучение и тестирование моделей: создание и обучение моделей Bert и Bert+Regression, PyTorch, Hugging Face
    3. Разработка пользовательских метрик: реализация F1-score, поклассовой точности и аналитических функций, NumPy, Matplotlib
    4. Генерация синтетических данных: использование OpenAI API для увеличения объема данных
    5. Классификация и перевод сокращений: переработка парсера и использование LLM для расшифровки, OpenAI, алгоритмы Python
    6. Разработка Telegram-бота: интеграция модели и парсера для интерактивной классификации, Python, aiogram
    7. Систематизация и визуализация: создание блок-схем и отчетов, Notion, Google Colab
  • Вологдин Станислав
    Инженер разработчик ПО
    1. Предобработка данных: очистка текста, лемматизация, исправление опечаток, удаление пробелов средствами Python, Regex
    2. Обучение и оптимизация моделей SVM, kNN, Bayes для классификации
    3. Тестирование векторизации: Bert, Word2Vec, FastText, добавление нейронных сетей RNN, CNN
    4. Улучшение точности классификации слабых классов с помощью балансировки данных и обработки ошибок разметки
    5. Разработка Telegram-бота с подключением базы данных и обученной модели
    6. Проектирование архитектуры базы данных для обновляемых чеков и интеграции модели
  • Казанцев Александр
    Руководитель CRM департамента Coral Travel
    1. Анализ и очистка данных: устранение пропусков, опечаток, стандартизация текста
    2. Автоматизация обработки данных с использованием Python, Pandas, NLTK, Regex
    3. Тестирование и обучение ML-моделей классификации LogisticRegression, подбор гиперпараметров через GridSearch
    4. Проведение экспериментов по балансировке датасета и улучшению точности классификации
  • Князева Валерия
    Инженер-математик
    1. Очистка данных и подготовка выборок: работа с Pandas, NumPy, Regex
    2. Аугментация данных: разработка алгоритмов увеличения выборки, тестирование на файле чеков
    3. Создание моделей классификации: использование SVM, LSTM, CNN, TensorFlow.Keras для обучения моделей
    4. Оценка классификационных метрик и оптимизация выходных данных: улучшение очистки, расширение выборок, тестирование альтернативных подходов
  • Бородин Алексей
    Инженер
    1. Анализ данных и их очистка: Pandas, NumPy, регулярные выражения, обработка текстовых данных
    2. Разработка классификаторов: SVM, LSTM, CNN, тестирование параметров, оптимизация моделей
    3. Создание интерфейса: Streamlit, разработка приложения для отображения и анализа данных
    4. Обработка изображений чеков: OpenCV, Pyzbar, сканирование и извлечение данных
    5. Автоматизация отчетов: Pandas, Excel, генерация report.xlsx, структурирование данных пользователей
    6. Визуализация результатов: Matplotlib, Streamlit, построение графиков для метрик и выводов
    7. Создание финального отчета в виде презентации о проекте
  • Аганин Александр
    Руководитель экспертной группы (экспертиза проектной документации)
    1. Сбор, предобработка и очистка данных с помощью Python, Pandas, Numpy, Power Query
    2. Разработка классификатора продуктов Scikit-learn, TfidfVectorizer и обучение модели классификации товаров из чеков
    3. Анализ данных и визуализация средствами Matplotlib, Seaborn, исследование разбалансировки данных и построение графиков
    4. Кластеризация данных: K-Means, DBSCAN, группировка товаров для уточнения структуры классификатора.
    5. Оценка качества моделей с помощью Sklearn, PCA, T-SNE, исследование точности моделей и тестирование на новых данных.
    6. Интеграция и автоматизация процессов (Flask, Excel) — создание таблиц и упрощение обработки данных для пользователей
    7. Создание финального отчета в виде PowerPoint презентации о проекте
  • Горбиков Дмитрий
    Специалист по контекстной рекламе
    1. Очистка и анализ данных: обработка и токенизация чеков, работа в Python (Pandas, Regex)
    2. Классификация товаров: разработка и оптимизация CNN, тестирование с Optuna
    3. Балансировка данных: синтез малочисленных классов, применение RandomOverSampler
    4. Тестирование моделей: сравнение CNN, SVM, BERT; анализ их точности и скорости работы
    5. Автоматизация классификации: проектирование ТГ-бота, внедрение REST API для вывода данных
    6. Презентация результатов: оформление отчёта в README.md в репозитории проекта, с графиками и тестами
  • Санакин Андрей
    Строитель
    1. Изучение вводных материалов и анализ данных Python, Pandas, Matplotlib
    2. Обработка датасета и подготовка данных через NumPy, Pandas, Scikit-learn
    3. Автоматизация сопоставления чеков и категорий с использованием Pandas, Regex
    4. Подбор моделей классификации данных: SVM, LSTM, RoBERT, DistilBERT, AutoML
    5. Оптимизация моделей через TPOT, Scikit-learn, Imbalanced-learn, с применением кросс-валидации
    6. Разработка телеграм-бота для обработки данных с использованием Python, TeleBot, NumPy, Pandas
    7. Создание итогового отчёта в формате онлайн Google-презентации
  • Любарский Сергей
    Предприниматель, CEO, CTO
    1. Анализ задачи и поиск путей решения
    2. Создание классификатора записей из чеков на платформе 1С предприятие
    3. Создание архитектуры MVP на платформе 1С предприятие
    4. Разработка телеграм-бота с функциями консультации по питанию
Участники
2 команды проекта
Команда реализовала следующие задачи:
- Классификация наименований продуктов
- Корректировка сокращений и неполных названий
- Регистрация покупок и анализ рациона
- Сбор данных о покупках (текст/чеки)
  • Химяк Павел
    Тимлид проекта
  • Аленникова Елена
    Помощник тимлида
  • Михалькевич Анелия
    Горный инженер, Аналитик данных
      1. Дата-аналитик и ML-инженер:
         - Провела анализ и предобработку данных.
         - Реализовала преобразование текстовых данных в числовые векторы с использованием метода TF-IDF.
         - Разработала, обучила и протестировала модели классификации (MLPClassifier, Logistic Regression, SVM, Naive Bayes).
         - Провела визуализацию данных для анализа и представления результатов.
         - Стек технологий: Python (pandas, numpy, scikit-learn, matplotlib, Plotly, seaborn), TF-IDF, Jupyter Notebook, Google Colab.
      2. Разработчик Telegram-бота:
         - Спроектировала и разработала Telegram-бота fine_diet_bot.
         - Интегрировала обученную модель классификации в функционал бота.
         - Стек технологий: Python (telebot, aiogram), интеграция с ML-моделями (pickle для сериализации моделей).
      3. Инженер-программист:
         - Программирование на Python с использованием современных инструментов разработки.
         - Ведение проекта через платформу GitHub (контроль версий, создание документации, отслеживание задач).
         - Стек технологий: Python, среды разработки: Google Colab, Jupyter Notebook, Anaconda, инструменты для контроля версий: GitHub.
      4. Автоматизация и интеграция:
         - Использование OpenAI ChatGPT для поддержки разработки и оптимизации кода.
         - Автоматизация отдельных этапов анализа и тестирования моделей.
         - Стек технологий: OpenAI API, Python (requests), GitHub (управление проектом)
  • Панфилов Дмитрий
    Инженер, специалист больших данных
     - Анализ и обработка данных, выбор подходов, разработка схемы оптимального построения решения и его развития.
      - Обучение моделей и выбор оптимального решения: ruRoBERTa-large, distilBERT, BERT-base. Достижение лучшего результата 93.09% для модели RoRuBERTa-large.
      - Создание пилотного решения на базе FastAPI и web-приложения на Gradio, проверка различных методов OCR и голосового ввода данных (транскрибации), проверка автоматической сортировки через LLM GigaChat.
      - Интеграция финального решения и демонстрация Телеграм-Бота (AIOGram) с функцией выбора модели и чтения информации о товарах из json-файлов или через изображение с QR-кодом.
  • Чапцов Данил
    Программист
      1. Data scientist:
         - Обучение модели ruBert для классификации товаров на съедобные / несъедобные.
         - Обучение модели ruBert для классификации продуктов по категориям.

      2. Разработчик Telegram-бота:
         - Создание Telegram-бота.
         - Интеграция моделей нейронных сетей в Telegram-бота.
  • Нарышкин Константин
    Защита информации
      1. Сбор и обработка данных: составление и очистка датасета из чеков.
      2. Разметка данных: создание и проверка корректности категорий для классификации товаров.
      3. Разработка и обучение моделей: настройка и обучение моделей для классификации продуктов. BERT.
      4. Оценка качества моделей: использование метрик (f1-score, precision, recall) для анализа производительности.
  • Герман Михаил
    Предприниматель
      - Data analyst:
        1. Первичная обработка датасета.
        2. Аугментация данных с помощью кастомных функций.
      - Data scientist:
        3. Обучение модели Bert, ruBert, DistilBert для бинарной классификации.
        4. Обучение модели Bert, ruBert, DistilBert для классификации продуктов по категориям.
      - Разработчик Telegram-бота:
        5. Создание Telegram-бота.
        6. Интеграция моделей нейронных сетей в Telegram-бота.
  • Кошкин Олег
    AI псециалист
      1. Бекэнд:
         - Создание векторной базы.
         - Функции дообогащения сокращенного или недостаточного текста.
         - Использование LLM (OpenAI) для классификации.
         - Модуль извлечения текста из изображений (чеков).
         - Модуль транскрибации аудио сообщений.
         - Использование FastAPI для подключения любого фронтенда.

      2. Фронтенд:
        Создание Телеграм бота:
           - Возможность ведения диалога с извлечением информации для классификации.
           - Многопользовательский интерфейс (изолированные диалоги).
           - Возможность использования аудио сообщений и фото для извлечения информации.
Участники
3 команды проекта
  • Белоус Павел
    Тимлид проекта
  • Сачко Владимир
    Помощник тимлида
  • Савченко Даниил
    Программист ГАУК Забайкальская краевая филармония им. О.Л. Лундстрема
    1. Подготовка датасета для обучения LLM различных конфигураций, включая стратификацию и аугментацию, анализ данных (Pandas)
    2. Обучение и оптимизация моделей LLAMA, Random Forest.
    3. Оптимизация процесса обучения Llama с Flash Attention
    4. Разработка телеграм-бота для обработки данных и взаимодействия с пользователем (Python)
    5. Интеграция базы данных Postrege sql для хранения данных чеков для каждого пользователя
    6. Поиск OCR решений, интеграция LLAMA-vision для распознавания чеков
    7. Сводный анализ результатов и презентация проекта
  • Сидоренко Александр
    Главный инженер проектов. Проектирование и ввод в эксплуатацию нефтегазоперерабатывающих и нефтехимических производств.
    1. Исследовательская и экспериментальная часть работы:
    Отработка гипотез и экспериментирование с моделями BERT, SentenceTransformer, T5, GPT-2. Применение TF-IDF, для учета семантики. Создание синтетических образцов для обогащения датасета, анализ и аугментирование полученных синтетических данных Применение методов кластеризации ML: DBSCAN, HDBSCAN. Отработка методов объединения категорий на основе их схожести: с применением PCA, на основе частоты n-грамм, иерархической кластеризации AgglomerativeClustering.
    2. Практическая часть для production:
    Предварительная обработка и нормализация данных датасета. Разработка модели классификации на основе сетки BERT. Применение различных подходов и методов для усиления весов минорных классов в процессе обучения сетки. Подготовка тестового материала и тестирование на реальных данных полученной конфигурации сетки, интерпретация результатов, обеспечение воспроизводимости результатов
  • Дубровина Оксана
    Предприниматель в сфере оптовой торговли и производства / аналитик / дизайнер
    1. Написание кода для разделения наименования товаров без пробелов на отдельные слова с помощью предварительно сгенерированного словаря, анализ данных (pandas, numpy, matplotlib).
    2. Разработка собственной методики аугментации датасета, эксперименты балансировки датасета различными методами. Формирование итогового аугментированного датасета для обучения модели (rapidfuzz, difflib, sklearn, imblearn).
    3. Предложила идею формировать эмбеддинг названия товара в целом с помощью фреймворка Sentence Transformers, предназначенного для семантического поиска, эксперименты сравнения моделей.
    4. Обучение нейросетевых моделей для классификации продуктовых категорий и классификации съедобное/несъедобное с использованием эмбеддингов для семантического поиска. Тестирование моделей на реальных данных с расчетом уверенности отнесения к классу (Keras, TensorFlow).
    5. Написание кода проверки качества обученной НС модели на тестовых данных (метрики precision, recall, f1-score по каждому классу).
    6. Эксперименты с дообучением модели для увеличения точности отдельных классов.
    7. Эксперименты с классификацией алгоритмами Random Forest, SVM.
    8. Эксперименты c векторным сходством эмбеддингов (SimilarityFunction, DistanceMetric, KMeans)
  • Жидовинов Никита
    Инженер-разработчик
    1. Анализ и очистка предоставленного датасета (Python, Pandas)
    2 .Тестирование Zero-shot классификации товаров и классификации на основе косинусного сходства (GTE, E5, nomic, paraphrase, SBERT)
    3. Обучение классификаторов на основе модели GTE (Pytorch)
    4. Дообучение модели GTE для повышения качества Zero-shot классификации (SentenceTransformer)
    5. Встраивание дообученной модели GTE в tg-бот
  • Семенов Федор
    Software Developer
    1. Разработка телеграм бота и внедрение пайплайнов для классификации и распознавания продуктов в чеках
    2. Эксперименты с различными модельными архитектурами для классификации продуктов с использованием Optuna для тюнинга гиперпараметров
  • Зубреева Ольга
    Ведущий Системный аналитик в Альфа-Банк
    1. Разработка телеграмм бота
    2. Эксперименты с различными модельными архитектурами для классификации продуктов (Для классификации текста - SentenceTransformer, модели -Random Forest, Logistic Regression, Gradient Boosting, была применена Балансировка обучающей выборки с помощью SMOTE, попытка с косинус. сходством и тп)
  • Солошенко Сергей
    Животновод
    1. Попытка встраивания сервиса “Проверка чека” в будущее решение. Получение json- файла данными продуктов с помощью считывания QR-кода. Считывание данных с помощью OSR pytesseract.
    2. Эксперименты аугментирования малочисленных категорий путем поиска похожих товаров в базе данных штрих-кодов товаров https://github.com/papyrussolution/UhttBarcodeReference/releases
    3. Эксперименты с локально установленной llama 3.2 по определению ключевого слова в названии продукта
    4. Написал скрипт по подготовке датасета в формат для решения на базе FNET
  • Назаров Денис
    CTO в компании-разработчике SaaS, PaaS решений
    1. Разработка MVP решения на базе LLM
    2. Дальнейшее развитие направления LLM
    3. Разработка MVP решения на базе FNet
    4. Анализ и улучшение разработанных решений на базе ML
    5. Анализ и улучшение разработанных решений на базе BERT
    6. Консультации по дополнительным техническим вопросам

  • Поляков Александр
    Lead Developer в IT аутсорс компании
    1. Разработка подхода к решению задач
    2. Проверка гипотез применимости подхода с использованием LLM
    3. Консультирование