Кейсы / Telegram-бот · RAG
LegalBot: проект апелляции из судебного PDF
Telegram-бот принимает судебный акт в PDF, извлекает текст, ищет нормы РФ и собирает черновик апелляции в DOCX. Открытый демо-MVP, не замена юриста.
Статус: демо / MVP
Как это выглядит
42 секунды: PDF → извлечение → нормы → черновик DOCX. Результат справочный, решение принимает человек.
Проблема
Судебный акт нужно прочитать в срок на апелляцию: текст в PDF или на скане, нормы искать вручную, черновик жалобы собирать с нуля. Это занимает время ещё до работы юриста.
Реализованное решение
LegalBot забирает PDF в Telegram, достаёт текст (PyMuPDF, для сканов — PaddleOCR), ищет фрагменты по базе норм (ChromaDB) и через GigaChat или запасные эвристики собирает проект жалобы в DOCX со ссылками на ГПК, АПК, КАС и другие кодексы. Временные файлы проходят через SecureTempFile.
Моя роль
Спроектировал пайплайн от загрузки акта до черновика, выбор стека извлечения и RAG, дисклеймер и открытый репозиторий для проверки.
Архитектура
Telegram (aiogram 3) → PDF → текст (PyMuPDF / PaddleOCR) → RAG (ChromaDB) + GigaChat или fallback → шаблон DOCX (python-docx, Jinja2) → файл пользователю.
Что работает сейчас
Локальный демо-MVP: бот принимает тестовый PDF, извлекает текст и отдаёт черновик жалобы. Промышленного внедрения у клиента нет.
Как проверить
Репозиторий github.com/dimitry8st-prog/JustBot: README, pytest/ruff/mypy, Docker. Проверка: текстовый PDF, скан, ответ без ключа модели (fallback), наличие ссылок на нормы в DOCX.
Ограничения и следующие шаги
Это открытое демо, не юридическая консультация и не замена адвоката. Модель может ошибиться в норме и в квалификации. Человек обязан проверить черновик до подачи. OCR зависит от качества скана. Без ключа GigaChat работает урезанный fallback.
Пилот на реальных актах с юристом в контуре проверки, набор эталонных документов и явный отказ, если уверенности нет.
Технологии
Python aiogram 3 PyMuPDF PaddleOCR ChromaDB GigaChat python-docx
