сырой текст задания → плоская карточка: README.md

This commit is contained in:
2026-05-26 16:52:15 +00:00
parent 67ae648b86
commit a24a263449
@@ -1,12 +1,9 @@
# Сырой текст → плоская карточка # Сырой текст задания → плоская карточка
Простой скрипт, который берёт **сырой текст** задания (например, из PDF‑файла) и преобразует его в **плоскую карточку** – готовый к использованию шаблон для обучения. Проект преобразует **сырой текст** (описание задачи, требования и т.д.) в **плоскую карточку**, пригодную для визуализации в системах управления задачами (Jira, Trello, Notion и др.).
В проекте реализованы два основных файла: Он разбирает входной файл, выделяет ключевые элементы (название, описание, критерии приёмки, сроки) и генерирует готовую Markdown‑карточку.
| Файл | Что делает | > **Важно** – проект написан на Python 3.10+ и использует только стандартную библиотеку и небольшие сторонние пакеты для парсинга Markdown.
|------|------------|
| `extract_text.py` | Извлекает текст из PDF‑файла (или другого источника) и сохраняет его в `.txt`. |
| `flatten_card.py` | Читает сырой текст, разбивает его на логические блоки (описание, условия, примеры), форматирует и выводит «плоскую карточку» в консоль или в файл. |
--- ---
@@ -17,92 +14,121 @@
python -m venv .venv python -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\activate source .venv/bin/activate # Windows: .\.venv\Scripts\activate
# Установите зависимости из requirements.txt # Установите зависимости из файла requirements.txt
pip install -r requirements.txt pip install -r requirements.txt
``` ```
`requirements.txt` содержит: `requirements.txt` содержит:
```text ```text
PyPDF2==3.0.1 markdown==3.4.1
python-docx==0.8.11 # если понадобится работа с DOCX rich==13.7.0 # для красивого вывода в консоли (необязательно)
``` ```
--- ---
## 🚀 Запуск файлов ## 📁 Структура проекта
### 1️⃣ Извлечение текста из PDF | Файл | Описание |
|------|----------|
| `raw_to_card.py` | Главный скрипт, который читает сырой текст и выводит карточку. |
| `parse_raw_text.py` | Модуль парсинга – выделяет заголовки, списки, блоки кода и т.д. |
| `card_generator.py` | Формирует финальный Markdown‑файл с нужным шаблоном. |
| `tests/` | Юнит‑тесты для каждого модуля. |
---
## 🚀 Запуск
### 1️⃣ Простой запуск из командной строки
```bash ```bash
python extract_text.py --input path/to/assignment.pdf --output assignment.txt python raw_to_card.py --input task.txt --output card.md
``` ```
- `--input` путь к исходному файлу (PDF, DOCX и т.д.). - **--input** путь к файлу с сырой задачей (может быть `.txt`, `.md`).
- `--output` куда сохранить извлечённый текст. - **--output** куда сохранить готовую карточку (`.md`). Если опустить, вывод будет в stdout.
### 2️⃣ Форматирование в плоскую карточку ### 2️⃣ Запуск через `make`
```bash ```bash
python flatten_card.py --input assignment.txt --output card.txt make run INPUT=task.txt OUTPUT=card.md
``` ```
- `--input` – файл с сырым текстом. ### 3️⃣ Тестирование
- `--output` – путь, где будет сохранена «плоская» карточка.
Если опция не указана, результат выводится в консоль. ```bash
pytest tests/
```
--- ---
## 📄 Пример использования ## 📄 Пример использования
### Исходный PDF (`assignment.pdf`) **Входной файл (`task.txt`):**
``` ```text
Задание: Написать программу, которая считает сумму двух чисел. # Разработка API для обработки заказов
Условие:
- Вводятся два целых числа. Нужно создать REST‑API, которое будет принимать POST запросы с JSON‑объектом заказа и сохранять его в БД.
- Вывести их сумму.
Пример: ## Требования к функционалу
Ввод: 3 5 - Валидация входных данных.
Вывод: 8 - Ответ 201 при успешном создании.
- Ошибки возвращаются с кодами 400/422.
## Критерии приёмки
1. API принимает корректный JSON и сохраняет заказ.
2. При некорректном JSON клиент получает 400 со списком ошибок.
3. Тесты покрывают все ветви логики.
## Сроки
- Дедлайн: **20260630**.
``` ```
### Команды **Запуск:**
```bash ```bash
python extract_text.py --input assignment.pdf --output raw.txt python raw_to_card.py --input task.txt --output card.md
python flatten_card.py --input raw.txt --output card.txt
``` ```
### Полученная карточка (`card.txt`) **Выход (`card.md`):**
``` ```markdown
Задание: # Разработка API для обработки заказов
Написать программу, которая считает сумму двух чисел.
Условие: Нужно создать REST‑API, которое будет принимать POST запросы с JSON‑объектом заказа и сохранять его в БД.
- Вводятся два целых числа.
- Вывести их сумму.
Пример: ## Требования к функционалу
Ввод: 3 5 - Валидация входных данных.
Вывод: 8 - Ответ 201 при успешном создании.
- Ошибки возвращаются с кодами 400/422.
## Критерии приёмки
1. API принимает корректный JSON и сохраняет заказ.
2. При некорректном JSON клиент получает 400 со списком ошибок.
3. Тесты покрывают все ветви логики.
**Сроки:** 20260630
``` ```
--- ---
## 📚 Что дальше? ## 📚 Документация
* Добавить поддержку Markdown‑форматирования (`--format markdown`). - `parse_raw_text.py` – парсинг текста с помощью регулярных выражений и библиотеки `markdown`.
* Интегрировать с Anki для автоматической импорта карточек. - `card_generator.py` – шаблон карточки, который можно изменить в файле `templates/card_template.md`.
* Расширить парсер, чтобы корректно обрабатывать таблицы и списки.
Для более подробной информации смотрите комментарии внутри файлов.
--- ---
### Контрибьюторы ## 🤝 Вклад
Если хотите помочь – откройте issue или pull request. Если хотите улучшить проект:
Пожалуйста, соблюдайте стиль кода из `PEP8` и добавляйте тесты в папку `tests/`. 1. Форкните репозиторий.
2. Создайте ветку (`feature/имя-изменения`).
3. Добавьте тесты и отправьте Pull Request.
--- ---