English: Functions | Algorithm | Usage | Notes
Русский: Функции | Алгоритм | Использование | Примечания
This project contains a Word-based proofreading helper for Russian editorial work. The main script opens a .docx file in Microsoft Word through pywin32, enables Track Changes, applies a set of technical fixes, and saves the result as a new reviewed document.
The current main script is review_word.py. It is intended for repetitive, mechanical cleanup before deeper editing.
- Opens the first
.docxfile in the project folder, or a file passed as a command-line argument. - Turns on Word review mode with the reviewer name
python proofreading. - Replaces
...with the ellipsis character…. - Replaces
[...]and[…]with<…>. - Collapses triple and double spaces into one space.
- Removes spaces after
«and before». - Normalizes dash usage in several basic cases:
- digit-dash-digit -> en dash
– - letter-dash-letter -> hyphen
- - stuck em dashes near letters -> spaced em dash
—
- digit-dash-digit -> en dash
- Adds a space before reference markers like
[1]when they are attached to a word. - Replaces the exact word
процентыwith%. - Adds a space before
%when it is attached to a digit. - Normalizes several abbreviations:
и т.д.->и т. д.и т.п.->и т. п.т.е.->то естьи пр.->и прочее
- Extracts proper nouns into a separate file.
- Replaces
ёwithе, except for detected proper nouns. - Highlights image-caption-like lines such as
Илл. 1. .... - Removes the word
Главаfrom the beginning of a paragraph. - Prints progress and total runtime in the terminal.
The script uses a two-stage workflow.
Stage 1: global technical cleanup
- Word
Find/Replaceis used for fast, simple fixes such as ellipses, spaces, and abbreviation cleanup. - Some context-sensitive rules are applied paragraph by paragraph with Python regular expressions, because Word pattern matching was unreliable for several cases.
Stage 2: streaming paragraph pass
- The script iterates over all paragraphs in the document.
- It collects candidate proper nouns from capitalized word sequences.
- It skips all-caps lines when building the proper-noun list.
- It replaces
ёonly in words that are not recognized as proper nouns. - It marks likely illustration captions.
- It removes leading
Главаwhen found at the start of a paragraph.
At the end, the script saves:
- a reviewed
.docxcopy with tracked changes proper_nouns.txtwith the extracted names
Install dependency:
pip install pywin32Run on the first .docx in the folder:
python review_word.pyRun on a specific file:
python review_word.py "MyDocument.docx"- Microsoft Word must be installed on Windows.
- The script edits through Word COM automation, so performance depends partly on Word itself.
- Some planned rules are intentionally disabled right now because they were unstable or too slow in real documents.
Этот проект содержит вспомогательный парсер для технической редактуры Word-документов. Скрипт открывает .docx через Microsoft Word и pywin32, включает режим исправлений, применяет набор механических правок и сохраняет результат как новый файл.
Основной файл проекта: review_word.py. Скрипт рассчитан на черновую техническую чистку перед более глубокой смысловой редактурой.
- Открывает первый
.docxв папке проекта или файл, переданный аргументом командной строки. - Включает режим исправлений Word с именем редактора
python proofreading. - Заменяет
...на знак многоточия…. - Заменяет
[...]и[…]на<…>. - Убирает тройные и двойные пробелы.
- Убирает пробел после
«и перед». - Нормализует тире в нескольких базовых случаях:
- цифра-тире-цифра -> среднее тире
– - буква-тире-буква -> дефис
- - прилипшее длинное тире рядом с буквами -> длинное тире с пробелами
- цифра-тире-цифра -> среднее тире
- Добавляет пробел перед ссылками вида
[1], если они слиты со словом. - Заменяет точную словоформу
процентына%. - Добавляет пробел перед
%, если знак процента прилип к цифре. - Нормализует несколько сокращений:
и т.д.->и т. д.и т.п.->и т. п.т.е.->то естьи пр.->и прочее
- Сохраняет список имён собственных в отдельный файл.
- Меняет
ёнае, кроме случаев, когда слово распознано как имя собственное. - Подсвечивает строки, похожие на подписи к иллюстрациям, например
Илл. 1. .... - Удаляет слово
Главав начале абзаца. - Печатает прогресс и общее время работы в терминал.
Скрипт работает в два этапа.
Этап 1: глобальная техническая чистка
- Для быстрых и простых замен используется Word
Find/Replace: многоточия, пробелы, часть сокращений. - Более чувствительные к контексту правила выполняются поабзацно через Python-регулярные выражения, потому что встроенный поиск Word оказался ненадёжным для ряда шаблонов.
Этап 2: потоковый проход по абзацам
- Скрипт проходит по всем абзацам документа.
- Из последовательностей слов с заглавной буквы собирает кандидатов в имена собственные.
- Строки, полностью набранные капсом, исключаются из этого списка.
- Замена
ёвыполняется только в словах, которые не попали в список имён собственных. - Дополнительно подсвечиваются возможные подписи к иллюстрациям.
- Если в начале абзаца найдено слово
Глава, оно удаляется.
В конце скрипт сохраняет:
- новую
.docx-копию с исправлениями в режиме рецензирования - файл
proper_nouns.txtсо списком найденных имён
Установка зависимости:
pip install pywin32Запуск для первого .docx в папке:
python review_word.pyЗапуск для конкретного файла:
python review_word.py "MyDocument.docx"- На Windows должен быть установлен Microsoft Word.
- Скрипт работает через COM-автоматизацию Word, поэтому скорость зависит не только от Python, но и от самого Word.
- Часть задуманных правил сейчас намеренно отключена, потому что на реальных документах они работали нестабильно или слишком медленно. Это в большей мере касается поиска и замены через встроенную функцию Word. Она сильно тормозит...