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

This commit is contained in:
2026-05-26 16:49:54 +00:00
parent 8a180a3b91
commit 6e95a3e530
@@ -1,118 +1,137 @@
# Сырой текст задания → плоская карточка # Сырой текст задания → плоская карточка
## Описание проекта ## Описание проекта
Проект предназначен для преобразования **сырого текста** (например, из файла `.txt` или `md`) в **плоскую карточку** – компактный формат, пригодный для импорта в системы обучения, флеш-карточки и т.п. Проект реализует конвертацию «сырого» текста задания (например, из формата Markdown или простого текста) в **плоскую карточку** – компактный формат, пригодный для отображения в чат‑ботах, веб‑страницах и мобильных приложениях.
Ключевая идея: взять исходный текст задания, разбить его на логические части (вопросы/ответы), добавить метаданные (теги, уровень сложности) и вывести результат в виде простого CSV‑файла. Основные возможности:
> **Важно** – проект не содержит графического интерфейса. Всё делается через командную строку. - Парсинг исходного текста с выделением заголовков, списков, цитат и т.д.
- Генерация упрощённой карточки без лишних разметок.
- Поддержка нескольких языков (английский/русский) через простую локализацию.
## Структура репозитория ## Структура проекта
``` ```
. project/
├── src/ ├── src/
│ ├── main.py # точка входа, обрабатывает CLI │ ├── parser.py # Парсер исходного текста
── processor.py # логика преобразования текста в карточки ── card_generator.py # Генератор карточки
├── tests/ # unit‑тесты (необязательно) │ └── utils.py # Вспомогательные функции
├── requirements.txt # зависимости проекта ├── tests/ # Тесты (необязательно)
── README.md ── requirements.txt # Зависимости
└── README.md # Это файл
``` ```
## Установка зависимостей ## Установка зависимостей
```bash ```bash
# Создайте виртуальное окружение (рекомендуется) # Создайте виртуальное окружение (рекомендовано)
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` содержит только стандартные библиотеки, но если вы захотите добавить поддержку Markdown‑парсинга или NLP‑модулей – просто добавьте нужный пакет. `requirements.txt` содержит только стандартные библиотеки, но если понадобится парсинг Markdown – добавьте `markdown`.
## Запуск проекта ## Запуск каждого файла
### 1. Преобразование одного файла ### 1. Парсер (`parser.py`)
Парсер читает сырой текст и возвращает структуру данных (словарь/список).
```bash ```bash
python src/main.py --input raw_task.txt --output flat_card.csv python src/parser.py <path_to_input_file>
``` ```
- `--input` – путь к файлу с сырым текстом задания. Пример:
- `--output` – куда будет сохранён CSV‑файл.
#### Параметры (опциональные)
| Флаг | Описание |
|------|----------|
| `--tags TAG1,TAG2` | Добавить теги, разделённые запятой. |
| `--difficulty LEVEL` | Указать уровень сложности (`easy`, `medium`, `hard`). |
### 2. Массовый запуск
Если у вас несколько файлов в каталоге `tasks/`, можно использовать цикл:
```bash ```bash
for f in tasks/*.txt; do python src/parser.py data/raw_task.txt
python src/main.py --input "$f" \
--output "cards/$(basename "${f%.*}").csv" \
--tags math,algebra
done
``` ```
### 3. Проверка работы Вывод в консоль будет выглядеть так:
```json
После выполнения вы получите CSV‑файл вида: {
"title": "Задача №1",
```csv "body": [
question,answer,tags,difficulty {"type":"paragraph","text":"Выполните ..."},
"What is the derivative of x^2?","2x","math,calculus","easy" {"type":"list","items":["Пункт 1", "Пункт 2"]},
... ...
]
}
```
### 2. Генератор карточки (`card_generator.py`)
Генерирует плоскую карточку из структуры, полученной парсером.
```bash
python src/card_generator.py <path_to_parsed_json> <output_file>
```
Пример:
```bash
python src/card_generator.py data/parsed.json data/card.txt
```
### 3. Полный скрипт (`main.py`)
Если в проекте есть `main.py`, он объединяет оба шага.
```bash
python src/main.py <path_to_raw_text> <output_file>
```
Пример:
```bash
python src/main.py data/raw_task.txt data/card.txt
``` ```
## Пример использования ## Пример использования
Предположим, у вас есть файл `example_task.txt` со следующим содержанием: 1. **Соберите сырой текст задания** в файл `raw_task.txt`:
``` ```
Вопрос: Какой результат умножения 7 и 6? # Задача 1
Ответ: 42
Теги: математика, арифметика Напишите программу, которая выводит сумму двух чисел.
Уровень сложности: средний
## Требования
- Ввод: два целых числа
- Вывод: их сумма
``` ```
Запустите скрипт: 2. **Запустите конвертацию**:
```bash ```bash
python src/main.py --input example_task.txt --output example_card.csv python src/main.py raw_task.txt card.txt
``` ```
Полученный CSV будет выглядеть так: 3. **Результат (`card.txt`)**:
```
Задача 1
Напишите программу, которая выводит сумму двух чисел.
```csv Требования:
question,answer,tags,difficulty - Ввод: два целых числа
"Какой результат умножения 7 и 6?","42","математика, арифметика","средний" - Вывод: их сумма
``` ```
Теперь файл `example_card.csv` можно импортировать в любую систему флеш‑карточек (Anki, Quizlet и др.). ## Тесты (необязательно)
## Тесты Если в проекте есть папка `tests`, запустите:
Если вы хотите проверить корректность работы:
```bash ```bash
pytest tests/ pytest tests/
``` ```
(Требуется пакет `pytest`, добавьте его в `requirements.txt` при необходимости.) ## Лицензия
## Вклад MIT License см. файл `LICENSE`.
1. Сделайте форк репозитория.
2. Создайте ветку с вашим изменением (`git checkout -b feature/…`).
3. Запуште и откройте Pull Request.
--- ---
**Автор:** *[Ваше имя]* **Важно:**
**Дата создания:** 26052026 - Все пути указываются относительно корня проекта.
- При работе с большими файлами используйте потоковую обработку (`open(..., 'r', encoding='utf-8')`).
Если возникнут вопросы – откройте issue в репозитории!