Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Форматирование академических документов

Python Streamlit LLM python--docx

Приложение Streamlit для автоматического форматирования академических и юридических документов с поддержкой сносок по ГОСТ.

Как работает

flowchart LR
    UP[Загрузка .docx] --> P[Парсинг документа]
    P --> LLM{LLM: поиск цитат}
    LLM -->|нашёл| FN[Расстановка сносок<br>по списку литературы]
    LLM -->|fallback| RX[Поиск цитат регулярками]
    RX --> FN
    FN --> FMT[Форматирование по ГОСТ:<br>Times New Roman 14, интервал 1.5,<br>отступы, выравнивание]
    FMT --> OUT[Готовый .docx]
Loading

Практическая задача: студенты, аспиранты и юристы тратят часы на ручное оформление документов по ГОСТ — приложение делает это за минуты, а LLM находит неоформленные цитаты, которые человек пропускает.

Статус проверки

Компонент Статус
Форматирование по ГОСТ (шрифт 14, по ширине, интервал 1.5, отступы) ✅ проверено тестами
Поиск цитат (Фамилия, Год, с. N) регулярками ✅ проверено тестами
Поиск цитат через LLM ⚠️ работало на момент разработки, после обновления зависимостей не перепроверялось
Вставка сносок (bayoo-docx) ⚠️ требует именно bayoo-docx; с обычным python-docx не работает

Нашли проблему — создайте issue.

Возможности

  • Загрузка документов в формате .docx
  • Автоматическое форматирование основного текста:
    • Шрифт Times New Roman, размер 14 пт
    • Выравнивание по ширине
    • Межстрочный интервал 1.5
    • Отступ первой строки (настраиваемый, сейчас 1.5 см)
  • Поиск цитат и добавление сносок:
    • Использование LLM (сейчас GPT-4, ранее пробовали Gemini) через прокси-сервер (задается в .env) для поиска цитат по списку литературы, введенному вручную.
    • Резервный поиск цитат с помощью регулярных выражений, если список литературы извлекается из текста.
    • Форматирование сносок (шрифт 10 пт, интервал 1.0) с использованием библиотеки bayoo-docx.
  • Веб-интерфейс на Streamlit для загрузки файла и ввода/просмотра списка литературы.

Установка

  1. Клонируйте репозиторий:

    git clone https://github.com/DmitriiSednev/Automatic-text-formatting.git
    cd Automatic-text-formatting
  2. Создайте виртуальное окружение и активируйте его:

    python -m venv .venv
    # Windows
    .venv\Scripts\activate
    # Linux/Mac
    source .venv/bin/activate
  3. Установите зависимости (рекомендуется Python 3.11–3.12):

    pip install -r requirements.txt

    ⚠️ Для сносок используется bayoo-docx — форк python-docx с поддержкой footnotes. Не устанавливайте обычный python-docx в то же окружение: пакеты конфликтуют (оба занимают модуль docx), и сноски перестанут работать.

  4. Создайте файл .env в корневой директории проекта:

    # Можно скопировать .env.example (если он есть) или создать вручную
    # Пример содержимого .env:
    API_KEY="sk-ваш_ключ_api"
    BASE_URL="https://адрес_вашего_прокси" # Например, https://proxy.merkulov.ai

    Убедитесь, что в файле указаны API_KEY (для доступа к LLM через прокси) и BASE_URL (адрес самого прокси-сервера).

Использование

  1. Запустите приложение Streamlit:

    python -m streamlit run app.py
  2. Откройте браузер по указанному адресу (обычно http://localhost:8501).

  3. Загрузите документ .docx.

  4. При необходимости отметьте галочку "Ввести/редактировать источники вручную" и вставьте/отредактируйте список литературы (каждый источник с новой строки, по ГОСТ для сносок). Если источники не введены вручную, скрипт попытается извлечь их из документа.

  5. Нажмите "Обработать документ".

  6. Дождитесь завершения обработки и скачайте отформатированный документ.

Требования

  • Python 3.8+
  • Зависимости, перечисленные в requirements.txt

Замечания

  • Зависимости: Возможны предупреждения о конфликтах версий пакетов (например, между grpcio-status и protobuf). Текущая конфигурация (protobuf==3.20.3) выбрана для совместимости со Streamlit и должна работать, несмотря на предупреждение.
  • LLM через прокси: Стабильность работы LLM (особенно Gemini) через прокси может зависеть от доступности и конфигурации прокси-сервера. Текущая реализация использует GPT-4.
  • Форматирование сносок: Используется библиотека bayoo-docx, которая может иметь свои особенности в обработке сложных документов.

About

Streamlit app that formats academic/legal .docx to GOST standards; LLM finds citations and inserts footnotes automatically

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages