сырой текст задания → плоская карточка: README.md
This commit is contained in:
+92
-119
@@ -1,137 +1,110 @@
|
|||||||
# Сырой текст задания → плоская карточка
|
# Сырой текст → плоская карточка
|
||||||
|
|
||||||
## Описание проекта
|
Простой скрипт, который берёт **сырой текст** задания (например, из PDF‑файла) и преобразует его в **плоскую карточку** – готовый к использованию шаблон для обучения.
|
||||||
Проект реализует конвертацию «сырого» текста задания (например, из формата Markdown или простого текста) в **плоскую карточку** – компактный формат, пригодный для отображения в чат‑ботах, веб‑страницах и мобильных приложениях.
|
В проекте реализованы два основных файла:
|
||||||
Основные возможности:
|
|
||||||
|
|
||||||
- Парсинг исходного текста с выделением заголовков, списков, цитат и т.д.
|
| Файл | Что делает |
|
||||||
- Генерация упрощённой карточки без лишних разметок.
|
|------|------------|
|
||||||
- Поддержка нескольких языков (английский/русский) через простую локализацию.
|
| `extract_text.py` | Извлекает текст из PDF‑файла (или другого источника) и сохраняет его в `.txt`. |
|
||||||
|
| `flatten_card.py` | Читает сырой текст, разбивает его на логические блоки (описание, условия, примеры), форматирует и выводит «плоскую карточку» в консоль или в файл. |
|
||||||
|
|
||||||
## Структура проекта
|
---
|
||||||
```
|
|
||||||
project/
|
|
||||||
├── src/
|
|
||||||
│ ├── parser.py # Парсер исходного текста
|
|
||||||
│ ├── card_generator.py # Генератор карточки
|
|
||||||
│ └── utils.py # Вспомогательные функции
|
|
||||||
├── tests/ # Тесты (необязательно)
|
|
||||||
├── 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 – добавьте `markdown`.
|
`requirements.txt` содержит:
|
||||||
|
|
||||||
## Запуск каждого файла
|
```text
|
||||||
|
PyPDF2==3.0.1
|
||||||
### 1. Парсер (`parser.py`)
|
python-docx==0.8.11 # если понадобится работа с DOCX
|
||||||
Парсер читает сырой текст и возвращает структуру данных (словарь/список).
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python src/parser.py <path_to_input_file>
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Пример:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python src/parser.py data/raw_task.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
Вывод в консоль будет выглядеть так:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"title": "Задача №1",
|
|
||||||
"body": [
|
|
||||||
{"type":"paragraph","text":"Выполните ..."},
|
|
||||||
{"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
|
|
||||||
```
|
|
||||||
|
|
||||||
## Пример использования
|
|
||||||
|
|
||||||
1. **Соберите сырой текст задания** в файл `raw_task.txt`:
|
|
||||||
```
|
|
||||||
# Задача 1
|
|
||||||
|
|
||||||
Напишите программу, которая выводит сумму двух чисел.
|
|
||||||
|
|
||||||
## Требования
|
|
||||||
|
|
||||||
- Ввод: два целых числа
|
|
||||||
- Вывод: их сумма
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **Запустите конвертацию**:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python src/main.py raw_task.txt card.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Результат (`card.txt`)**:
|
|
||||||
```
|
|
||||||
Задача 1
|
|
||||||
Напишите программу, которая выводит сумму двух чисел.
|
|
||||||
|
|
||||||
Требования:
|
|
||||||
- Ввод: два целых числа
|
|
||||||
- Вывод: их сумма
|
|
||||||
```
|
|
||||||
|
|
||||||
## Тесты (необязательно)
|
|
||||||
|
|
||||||
Если в проекте есть папка `tests`, запустите:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pytest tests/
|
|
||||||
```
|
|
||||||
|
|
||||||
## Лицензия
|
|
||||||
|
|
||||||
MIT License – см. файл `LICENSE`.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Важно:**
|
## 🚀 Запуск файлов
|
||||||
- Все пути указываются относительно корня проекта.
|
|
||||||
- При работе с большими файлами используйте потоковую обработку (`open(..., 'r', encoding='utf-8')`).
|
|
||||||
|
|
||||||
Если возникнут вопросы – откройте issue в репозитории!
|
### 1️⃣ Извлечение текста из PDF
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python extract_text.py --input path/to/assignment.pdf --output assignment.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
- `--input` – путь к исходному файлу (PDF, DOCX и т.д.).
|
||||||
|
- `--output` – куда сохранить извлечённый текст.
|
||||||
|
|
||||||
|
### 2️⃣ Форматирование в плоскую карточку
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python flatten_card.py --input assignment.txt --output card.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
- `--input` – файл с сырым текстом.
|
||||||
|
- `--output` – путь, где будет сохранена «плоская» карточка.
|
||||||
|
Если опция не указана, результат выводится в консоль.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 Пример использования
|
||||||
|
|
||||||
|
### Исходный PDF (`assignment.pdf`)
|
||||||
|
|
||||||
|
```
|
||||||
|
Задание: Написать программу, которая считает сумму двух чисел.
|
||||||
|
Условие:
|
||||||
|
- Вводятся два целых числа.
|
||||||
|
- Вывести их сумму.
|
||||||
|
Пример:
|
||||||
|
Ввод: 3 5
|
||||||
|
Вывод: 8
|
||||||
|
```
|
||||||
|
|
||||||
|
### Команды
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python extract_text.py --input assignment.pdf --output raw.txt
|
||||||
|
python flatten_card.py --input raw.txt --output card.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
### Полученная карточка (`card.txt`)
|
||||||
|
|
||||||
|
```
|
||||||
|
Задание:
|
||||||
|
Написать программу, которая считает сумму двух чисел.
|
||||||
|
|
||||||
|
Условие:
|
||||||
|
- Вводятся два целых числа.
|
||||||
|
- Вывести их сумму.
|
||||||
|
|
||||||
|
Пример:
|
||||||
|
Ввод: 3 5
|
||||||
|
Вывод: 8
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 Что дальше?
|
||||||
|
|
||||||
|
* Добавить поддержку Markdown‑форматирования (`--format markdown`).
|
||||||
|
* Интегрировать с Anki для автоматической импорта карточек.
|
||||||
|
* Расширить парсер, чтобы корректно обрабатывать таблицы и списки.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Контрибьюторы
|
||||||
|
|
||||||
|
Если хотите помочь – откройте issue или pull request.
|
||||||
|
Пожалуйста, соблюдайте стиль кода из `PEP8` и добавляйте тесты в папку `tests/`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Автор:** *[Ваше имя]*
|
||||||
|
**Дата создания:** 2026‑05‑26
|
||||||
Reference in New Issue
Block a user