← Назад ко всем проектам

Личный проект4 мин чтения

ГДЗ - платформа готовых домашних заданий

ГДЗ - платформа готовых домашних заданий

Технологии

PythonAIChatGPTGeminiOCRTesseractPaddleOCRDoclingPix2TextGoogle Colab

Услуги

  • →Архитектура пайплайна ИИ-генерации контента (Python + ChatGPT + Gemini)
  • →Промпт-инжиниринг с учётом учебной программы по каждому предмету и классу
  • →Настройка мультиязычной платформы и SEO-конфигурация
  • →Автоматическая публикация в CMS и генерация sitemap
  • →Пайплайн валидации контента на образовательную корректность

Результаты

  • ✓Тысячи структурированных страниц с решениями домашних заданий для 3 локалей (RU, PL, UA)
  • ✓Автоматический пайплайн генерации - новый контент добавляется обновлением данных учебной программы
  • ✓Органический поисковый трафик с первого дня после запуска
  • ✓Три независимо развёрнутые платформы под конкретные локали

Задача

ГДЗ (готовые домашние задания) - устоявшаяся EdTech-категория на русскоязычных рынках. Возможность: выйти на польский и украинский рынки, где тот же спрос есть, но предложение скудное. Проблема: производство достаточного объёма качественного структурированного образовательного контента для ранжирования в поиске на масштабе - это огромная контент-операция, слишком медленная и дорогая, чтобы делать её вручную.

Исследование

Анализ структуры контента показал, что решения домашних заданий следуют предсказуемым шаблонам: предмет и затем класс, учебник, глава, упражнение и затем решение с пошаговым объяснением. Структура достаточно единообразна, чтобы генерировать её систематически. Переменная - качество: LLM требовали тщательного промптинга и валидации, чтобы выдавать образовательно корректные ответы, а не правдоподобную чепуху.

Рассмотренные варианты

  1. Нанять копирайтеров под каждую локаль - отклонено. Юнит-экономика не сходится на масштабе; разброс качества между авторами велик.
  2. Перевести существующий русский контент - частично использовано, но недостаточно. Польская и украинская школьные программы отличаются; прямой перевод даёт неверные ответы.
  3. ИИ-пайплайны генерации с промптингом с учётом учебной программы - выбрано. ChatGPT и Gemini со структурированными промптами, настроенными под предмет и класс, выдают точные пошаговые решения в нужном масштабе.

Решение

Пайплайны на Python принимают данные учебной программы (метаданные учебников, списки упражнений) и генерируют решения через API ChatGPT и Gemini. Результат валидируется по ожидаемым форматам ответов, структурируется в схему данных сайта и публикуется на соответствующем домене локали. SEO-метаданные генерируются вместе с контентом.

Реализация

Построен многоэтапный пайплайн: загрузка учебной программы, построение промпта под предмет/класс/упражнение и затем параллельная генерация LLM, валидация структурированного вывода и затем публикация в CMS. На каждом этапе есть обработка ошибок и очередь на проверку для пограничных случаев, которые помечает валидатор. Под разные типы предметов используются разные модели: Gemini хорошо справляется с математикой и естественными науками; ChatGPT-4o лучше работает с гуманитарными и языковыми предметами.

Запущены три платформы под конкретные локали: gdzclass.ru (RU), domowapraca.com (PL), padruchnik.com (UA). Каждый домен развёрнут независимо со своей SEO-конфигурацией под локаль, структурой внутренней перелинковки и генерацией sitemap.

OCR для учебников на казахском

Добавление новых учебников означает оцифровку большого количества страниц, и часть из них - на казахском. Доступные OCR-движки этот язык поддерживают весьма посредственно, так что на одном движке конвейер было не вытянуть.

Сработало комбинированное решение: Tesseract и PaddleOCR вместе, каждый закрывает то, где промахивается другой. Код на Python отлаживал в блокнотах Google Colab - так итерации идут быстрее, чем на локальной машине.

Распознавание страницы на казахском языке.

Результаты на форматированном тексте и таблицах - раскладках, на которых наивный OCR ломается первым.

Оцифровка книг

Одной из задач была оцифровка учебников для распознавания. Мы купили оригиналы и отсканировали их, но качество сканов оставляло желать лучшего, поэтому каждую страницу прогоняли через нейросеть, которая кратно повышала качество изображения. С результатом OCR работал уже гораздо увереннее.

Исходный скан страницы теста на казахском: размытые, неровные буквы
Та же страница после нейросетевого апскейла: чёткий ровный текст, готовый к OCR

До и после повышения качества

Выбор инструментов OCR

Мы рассмотрели несколько подходов и перебрали множество библиотек для распознавания текста: Tesseract, PaddleOCR, Docling и Pix2Text с отдельными моделями для формул и таблиц. Обычный текст оказался самой простой частью. Особым челленджем стали таблицы и формулы: сначала модель разметки должна найти их на странице, а формулы возвращались в LaTeX, который на отсканированной математике часто ломался.

Конфигурация Pix2Text с отдельными моделями для разметки, формул, текста и таблиц
Отсканированная страница по математике с разметкой OCR: формулы распознаны в LaTeX, многие с ошибками

Настройка Pix2Text и страница с формулами, на которой он спотыкался

Таблицы и казахский язык

С таблицами было больше всего заморочек. Победить их удалось комбинированным решением: одна модель распознавала шаблон таблицы, а другая читала содержимое каждой ячейки. Сложности добавлял язык: большинство книг были на казахском, а Tesseract и PaddleOCR поддерживают его лишь частично, поэтому и для самого текста пришлось собирать комбинированное решение, где каждый движок закрывает пробелы другого.

Таблица на скане: модель разметки выделяет сетку и каждую ячейку как отдельную область
Отладчик Python: Tesseract возвращает казахские слова с оценкой уверенности для каждого

Распознавание структуры таблицы и вывод Tesseract на казахском тексте

Такие страницы были сущим кошмаром: на одной странице сразу формула, таблица, иллюстрация и казахский текст. Итоговый конвейер обрабатывал их комбинированно. Иллюстрации детектились и сохранялись отдельными картинками, формулы переводились в нотацию LaTeX, а таблицы распознавались отдельным процессом, который сначала считывал структуру, а затем сканировал каждую ячейку.

Страница казахского учебника по комбинаторике: формулы, таблица перестановок букв, чертёж с хордами и текст на одной странице
Страница, где всё сразу

Результат

Тысячи структурированных страниц контента опубликованы для трёх локалей без пропорционального роста штата. Органический поисковый трафик начал накапливаться с первых недель после запуска по мере индексации страниц. Архитектура пайплайна позволяет добавлять новые классы, предметы или учебники, просто обновив входные данные учебной программы - без изменений кода.

Проекты

Traffic Connect - оркестрация ИИ-контента для сайтов на WordPress

Traffic Connect - оркестрация ИИ-контента для сайтов на WordPress

До: генерацию статей с помощью ИИ нужно было вести на множестве сайтов на WordPress, и управлять ею из одного места было нельзя. После: одна админ-панель ставит задачи в очередь для каждого сайта, а сайт сам забирает свои задачи через плагин. Систему я собрал с нуля примерно за месяц.

PREZA - сайты школьных презентаций с более чем 80 000 сгенерированных PDF

PREZA - сайты школьных презентаций с более чем 80 000 сгенерированных PDF

До: сайтам школьных презентаций нужны были десятки тысяч готовых файлов, сделать которые вручную было невозможно. После: грабберы, парсеры и автоматическая многопоточная генерация дали больше 80 000 PDF, которые хранятся в холодном S3 Selectel и опубликованы на preza.kz и preza.top.

AtomPk Grabber - выгрузка списка товаров в CSV по требованию

AtomPk Grabber - выгрузка списка товаров в CSV по требованию

До: партнёру нужно было раз за разом вручную собирать список товаров с сайта в CSV. После: исполняемый файл, который запускается двойным кликом, сам обходит каталог и пишет CSV - без установки Python и без настройки.

Открыт для работы по контракту

Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.

Записаться на 30-минутный звонок