Skip to main content

TXT to DOCX converter with SFU formatting standards (СТУ 7.5-07-2021)

Project description

SFU Converter — конвертер TXT в DOCX по стандарту СФУ

SFU Converter превращает структурированный текстовый файл (.txt) в документ .docx, оформленный по стандарту Сибирского федерального университета (СФУ, СТУ 7.5-07). Вы пишете содержимое простыми текстовыми маркерами, а конвертер сам расставляет шрифты, поля, отступы, нумерацию, титульный лист, подписи к рисункам и таблицам, список источников и формулы.

Что умеет конвертер:

  • Несколько профилей оформления (лабораторные, курсовые, ВКР, отчёты по практике и др.).
  • Автоматический титульный лист и нумерация страниц.
  • Заголовки четырёх уровней, таблицы, рисунки, формулы, списки, сноски.
  • Библиография по ГОСТ и перекрёстные ссылки между объектами.
  • Проверка готового документа и диагностика ошибок в исходнике.

ВАЖНО!

Для сквозной генерации отчётов нужен DOCX-шаблон, в котором уже есть корректный титульный лист и содержание. В этом режиме конвертер не создаёт титульный лист и ToC автоматически, а добавляет только основное содержимое отчёта.

Пока генерация титульников и ToC не готова до конца и может не соответсовать СТУ

Используйте --skip-generated-front-matter

Содержание

Рабочие процессы

Сгенерировать документ можно двумя способами:

  • Flow 1 — веб-чат (ручной). Скопируйте один готовый промпт prompts/SFU_WEB_PROMPT.md в любой веб-чат с ИИ (Claude, ChatGPT, Gemini …). Он спросит тип документа и метаданные, выдаст .txt в синтаксисе V2, а вы сконвертируете его командами sfu-converter. Пошагово — docs/workflow-web.md.
  • Flow 2 — ИИ-агент (автоматический). Агент (Claude Code, Codex, OpenCode, Gemini CLI) сам пишет .txt, прогоняет lint, исправляет ошибки и конвертирует в .docx. Пошагово — docs/workflow-agent.md.

Оба способа спрашивают, кто пишет первые разделы (Цель/Задачи/Введение): вы даёте текст или ИИ генерирует его из темы. Установка для каждого агента — docs/installation.md.

Установка

Рекомендуемый способ — изолированная установка через pipx:

pipx install sfu-converter
# до выхода на PyPI — прямо из репозитория:
# pipx install git+https://github.com/bounchich1/sfu_converter
sfu-converter --help

Это всё, что нужно для конвертации .txt → .docx. Интеграция с ИИ-агентами (sfu-converter agents install для Claude Code и Codex, AGENTS.md/GEMINI.md для остальных) и полная матрица установки по инструментам — в docs/installation.md. Установка для разработки конвертера — в разделе Разработка.

Быстрый старт

  1. Создайте файл report.txt с разметкой версии 2:

    [DOC syntax=2 profile=lab_practical_project_reports language=ru]
    [META key=title value="Отчёт по лабораторной работе"]
    [META key=student value="Иванов И. И."]
    [META key=group value="КИ22-01"]
    
    [H level=1 title="Введение"]
    [P] Цель работы — разработать REST API для каталога товаров.
    
    [H level=1 title="Заключение"]
    [P] Поставленные цели достигнуты.
    
  2. Проверьте исходник на ошибки:

    sfu-converter lint --input report.txt --syntax-version 2
    
  3. Сгенерируйте документ:

     sfu-converter convert --input report.txt --output report.docx --profile lab_practical_project_reports --syntax-version 2 --template template1.docx --skip-generated-front-matter
    

Команды CLI

sfu-converter <команда> [параметры]
Команда Назначение
convert Преобразовать TXT в DOCX (или PPTX)
validate-docx Проверить готовый DOCX по профилю
parse Разобрать TXT в AST (JSON)
lint Проверить синтаксис TXT и правила профиля
list-profiles Показать доступные профили оформления
explain-syntax Вывести справку по синтаксису
export-schema Экспортировать JSON-схемы
export-coverage Вывести матрицу покрытия стандарта
agents Установить скиллы в AI-агенты (Claude, Codex)

Частые флаги: --syntax-version 2, --profile <имя>, --strict (предупреждения как ошибки), --output-format pptx, --template <путь> (шаблон титульного листа), --skip-generated-front-matter (не создавать титульный лист и содержание).

Документация по стандарту и roadmap

Полное описание синтаксиса версии 2 разбито на тематические страницы в папке docs/:

Сводные материалы по стандарту и развитию проекта: docs/sfu-standard-coverage-matrix.md и docs/technical requirements/08_migration_roadmap.md.

Готовый демонстрационный файл со всеми возможностями: examples/converter_v2_showcase_report.txt.

Профили оформления

sfu-converter list-profiles --format json
Профиль Назначение
common Общие базовые правила
lab_practical_project_reports Лабораторные, практические, проектные
practice_reports Отчёты по практике
research_reports Отчёты о НИР
coursework Курсовые проекты и работы
graduation_qualification_work ВКР (выпускная квалификационная работа)
small_written_works Рефераты, контрольные, РГЗ, эссе
graphic_and_demonstration_materials Графические и демонстрационные материалы
project_designations Обозначения проектов

Подробнее — в docs/v2-profiles.md.

Разработка

git clone https://github.com/bounchich1/sfu_converter
cd sfu_converter
python -m venv .venv
.venv\Scripts\activate        # Windows
source .venv/bin/activate     # macOS / Linux
pip install -e ".[dev]"

python -m pytest                                                              # тесты
python -m pytest --cov=sfu_converter --cov-branch --cov-report=term-missing   # покрытие

В режиме разработки команда доступна и как sfu-converter, и как python -m sfu_converter.cli. Портативные инструкции для агентов: AGENTS.md — источник правды, GEMINI.md генерируется из него командой python tools/sync_agent_docs.py (проверка в CI — --check).

Структура проекта:

src/sfu_converter/
  cli.py              # точка входа CLI
  parser/             # парсер TXT версии 2
  domain/             # узлы AST, правила оформления, диагностика
  application/        # сценарии композиции и конвертации
  infrastructure/     # рендерер DOCX, валидатор, титульные листы
  registry/           # реестр профилей и правил
  tools/              # проверка кириллицы в маркерах
docs/                 # вики и требования к оформлению
examples/             # примеры TXT-файлов
templates/            # шаблоны DOCX

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sfu_converter-0.3.0.tar.gz (7.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sfu_converter-0.3.0-py3-none-any.whl (206.6 kB view details)

Uploaded Python 3

File details

Details for the file sfu_converter-0.3.0.tar.gz.

File metadata

  • Download URL: sfu_converter-0.3.0.tar.gz
  • Upload date:
  • Size: 7.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sfu_converter-0.3.0.tar.gz
Algorithm Hash digest
SHA256 0512d84c26a6f3f5b4bbec8e937d20a8e13c86a39fbbd88886f8f8cf963ec242
MD5 aef4577c04b70f004fc6826edeed4d88
BLAKE2b-256 375ee92278b3e56186ed140c7745a5337d276a98925eda4a92c1040ead70a72d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sfu_converter-0.3.0.tar.gz:

Publisher: release.yml on bounchich1/sfu_converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sfu_converter-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: sfu_converter-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 206.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sfu_converter-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c5408725bef51f19ce471b26aaa7c7176328472028521d91e6234f8f10dbab81
MD5 35a47f38b81c89ef6c8cb9456b828647
BLAKE2b-256 6a1ef06c8969c1e251d3267fcd4af12130c419539f77f4a90fca5135b64de61d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sfu_converter-0.3.0-py3-none-any.whl:

Publisher: release.yml on bounchich1/sfu_converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page