Skip to content

Commit 9a206c6

Browse files
committed
Initial commit: DocStripper v1.0.0 - Batch document cleaner
0 parents  commit 9a206c6

File tree

8 files changed

+891
-0
lines changed

8 files changed

+891
-0
lines changed

.gitignore

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
.Python
7+
8+
# DocStripper
9+
.strip-log
10+
*.bak
11+
12+
# IDE
13+
.vscode/
14+
.idea/
15+
*.swp
16+
*.swo
17+
18+
# OS
19+
.DS_Store
20+
Thumbs.db

CHANGELOG.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# CHANGELOG
2+
3+
Все изменения в проекте документируются в этом файле.
4+
5+
## [1.0.0] - 2024-12-20
6+
7+
### Добавлено
8+
- Начальный релиз DocStripper
9+
- Поддержка файлов .txt, .docx, .pdf
10+
- Удаление повторяющихся строк
11+
- Удаление номеров страниц
12+
- Удаление типичных заголовков и подвалов (Page X of Y, Confidential, DRAFT)
13+
- Удаление пустых строк
14+
- Режим dry-run для пробного запуска
15+
- Система логирования операций (.strip-log)
16+
- Функция отката изменений (--undo)
17+
- Статистика обработки (количество удаленных строк, дубликатов и т.д.)
18+
- Создание резервных копий (.bak файлы)
19+
- Поддержка UTF-8 и Latin-1 кодировок
20+
- Обработка ошибок с понятными сообщениями
21+
- CLI help (--help)
22+
23+
### Технические детали
24+
- Использует только стандартную библиотеку Python 3.9+
25+
- Для PDF использует pdftotext (subprocess) с graceful fallback
26+
- Для DOCX использует zipfile + xml.etree.ElementTree
27+
- Кросс-платформенная поддержка (Windows, macOS, Linux)
28+
29+
30+

LICENSE.txt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
MIT License
2+
3+
Copyright (c) 2024 DocStripper
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
22+
23+
24+

README.md

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
# DocStripper
2+
3+
Batch document cleaner — удаляет мусор из текстовых документов.
4+
5+
## Описание
6+
7+
DocStripper — это CLI-утилита для массовой очистки текстовых файлов от визуального мусора:
8+
- Повторяющиеся строки
9+
- Номера страниц
10+
- Заголовки и подвалы (например, "Page 3 of 12", "Confidential")
11+
- Пустые строки
12+
13+
Утилита работает полностью офлайн, используя только стандартную библиотеку Python.
14+
15+
## Требования
16+
17+
- Python 3.9 или выше
18+
- Для обработки PDF: рекомендуется установить `pdftotext` (входит в пакет `poppler-utils`)
19+
20+
### Установка pdftotext
21+
22+
**macOS:**
23+
```bash
24+
brew install poppler
25+
```
26+
27+
**Ubuntu/Debian:**
28+
```bash
29+
sudo apt-get install poppler-utils
30+
```
31+
32+
**Windows:**
33+
Скачайте Poppler для Windows с [официального сайта](https://github.com/oschwartz10612/poppler-windows/releases/)
34+
35+
## Установка
36+
37+
1. Клонируйте репозиторий:
38+
```bash
39+
git clone https://github.com/yourusername/DocStripper.git
40+
cd DocStripper
41+
```
42+
43+
2. Сделайте файл исполняемым (опционально):
44+
```bash
45+
chmod +x tool.py
46+
```
47+
48+
## Использование
49+
50+
### Базовое использование
51+
52+
Очистить один файл:
53+
```bash
54+
python tool.py document.txt
55+
```
56+
57+
Очистить несколько файлов:
58+
```bash
59+
python tool.py file1.txt file2.txt file3.docx
60+
```
61+
62+
Очистить все текстовые файлы в текущей директории:
63+
```bash
64+
python tool.py *.txt
65+
```
66+
67+
### Режим dry-run (пробный запуск)
68+
69+
Посмотреть, что будет изменено без фактического изменения файлов:
70+
```bash
71+
python tool.py --dry-run document.txt
72+
```
73+
74+
### Откат изменений
75+
76+
Восстановить файлы из последней операции:
77+
```bash
78+
python tool.py --undo
79+
```
80+
81+
### Примеры использования
82+
83+
**Пример 1: Очистка одного документа**
84+
```bash
85+
python tool.py messy_document.txt
86+
# Обработает файл и создаст резервную копию messy_document.txt.bak
87+
```
88+
89+
**Пример 2: Массовая обработка документов**
90+
```bash
91+
python tool.py *.txt *.docx
92+
# Обработает все .txt и .docx файлы в текущей директории
93+
```
94+
95+
**Пример 3: Проверка перед очисткой**
96+
```bash
97+
python tool.py --dry-run important_report.pdf
98+
# Покажет статистику без изменения файла
99+
```
100+
101+
**Пример 4: Обработка PDF файла**
102+
```bash
103+
python tool.py report.pdf
104+
# Извлечет текст и очистит его (требуется pdftotext)
105+
```
106+
107+
**Пример 5: Откат последней операции**
108+
```bash
109+
python tool.py --undo
110+
# Восстановит все файлы из последней операции
111+
```
112+
113+
**Пример 6: Обработка с выводом статистики**
114+
```bash
115+
python tool.py document1.txt document2.txt
116+
# После обработки покажет:
117+
# - Количество обработанных файлов
118+
# - Удаленных строк
119+
# - Свернутых дубликатов
120+
# - Удаленных пустых строк
121+
# - Удаленных заголовков/подвалов
122+
```
123+
124+
## Поддерживаемые форматы
125+
126+
- `.txt` — текстовые файлы (UTF-8, Latin-1)
127+
- `.docx` — документы Microsoft Word (извлечение текста через XML)
128+
- `.pdf` — PDF документы (требуется `pdftotext`)
129+
130+
## Что удаляется
131+
132+
1. **Повторяющиеся строки** — последовательные одинаковые строки
133+
2. **Номера страниц** — строки, содержащие только числа
134+
3. **Заголовки и подвалы** — паттерны типа:
135+
- "Page X of Y"
136+
- "Page X"
137+
- "Confidential"
138+
- "DRAFT"
139+
4. **Пустые строки** — строки, содержащие только пробелы
140+
141+
## Логирование и откат
142+
143+
Все операции записываются в файл `.strip-log` в формате JSON. Каждая операция включает:
144+
- Список обработанных файлов
145+
- Пути к резервным копиям (.bak)
146+
- Статистику изменений
147+
- Временную метку
148+
149+
Используйте `--undo` для восстановления последней операции.
150+
151+
## Выходные коды
152+
153+
- `0` — успешное выполнение
154+
- `1` — ошибка (файл не найден, ошибка чтения и т.д.)
155+
156+
## Ограничения
157+
158+
- DOCX файлы обрабатываются как простой текст (форматирование теряется)
159+
- PDF файлы требуют наличия `pdftotext` в системе
160+
- Сложное форматирование может быть потеряно при извлечении текста
161+
162+
## Лицензия
163+
164+
MIT License — см. файл LICENSE.txt
165+
166+
## Автор
167+
168+
DocStripper — инструмент для автоматической очистки документов.
169+

RELEASE_LEDGER.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"releases": [
3+
{
4+
"version": "1.0.0",
5+
"date": "2024-12-20",
6+
"name": "DocStripper — Batch document cleaner",
7+
"schema_signature": "CLI_TOOL",
8+
"hash_salt": "222a49fa07"
9+
}
10+
]
11+
}
12+

0 commit comments

Comments
 (0)