Человек готовит договор для внешней стороны, закрашивает в нём чёрным прямоугольником номер счёта, сохраняет в PDF, отправляет. Прямоугольник на месте, ничего не видно, всё в порядке.
Номер счёта при этом уезжает вместе с файлом. Целиком, в открытом виде — его достаёт любой инструмент, умеющий вытаскивать текст, и даже обычное выделение мышью в просмотрщике.
Так ошибаются и компании, и государственные ведомства — про такие документы регулярно пишут профильные издания. Причина одна: люди считают, что видят файл, а видят только его отрисованный слой.
PDF: прямоугольник рисуется поверх, а не вместо
Начну с этого случая: он встречается чаще остальных, и последствия у него дороже.
Воспроизвести можно за минуту, ничего не программируя. Пусть в документе три строки:
Договор №14/2026 Сумма: 4 350 000 руб. Счёт: 40702810900000012345
Реквизиты счёта показывать не хотим. Вставляем поверх третьей строки фигуру-прямоугольник, заливаем чёрным, убираем контур — на экране от строки остаётся чёрная полоса. Сохраняем как PDF или печатаем в PDF: механизм один и тот же у Word, LibreOffice, браузера и «Google Документов».
Получатель открывает файл в просмотрщике, ведёт мышью по этой чёрной полосе и жмёт «копировать». В буфере оказывается:
Счёт: 40702810900000012345
Та самая строка, которую закрывали. Мышь тут ни при чём: любой парсер PDF достаёт эту строку так же, потому что она лежит в файле как обычный текст.
Причина в том, как устроен PDF. В файле лежат объекты: отдельно текст с координатами, отдельно графика. Прямоугольник — это графический объект, нарисованный поверх, а текстовый объект под ним никуда не делся и продолжает лежать в содержимом. Просмотрщик рисует их в порядке наложения, а извлечение текста собирает текстовые объекты и на графику не смотрит вовсе.
Ровно то же самое происходит при заливке ячейки таблицы, белом шрифте на белом фоне и картинке поверх текста. Все три приёма прячут от глаза, а не из файла.
Заодно откройте у получившегося файла свойства — в любом просмотрщике это «Файл → Свойства документа». Там отдельные поля: заголовок, автор, приложение-создатель, дата создания. Заполняются они автоматически, при экспорте, и человек их обычно не видит.
Если печатали из браузера, туда попадёт имя движка печати и адрес исходной страницы — не страшно. А офисный пакет кладёт в эти же поля автора и название из свойств документа, так что получатель узнаёт имя сотрудника вместе с внутренним именем файла. Название вроде договор_итог_v7 рассказывает о переговорах больше, чем хотелось бы: версий было минимум семь, и последняя называется «итог».
Как надо. В PDF есть отдельная операция удаления, при которой объект вырезается из содержимого, а не закрывается сверху. В Acrobat это инструмент «Скрытие данных» (Redact), в бесплатных просмотрщиках он встречается редко — и вот это как раз причина, по которой люди рисуют прямоугольники.
Способ, доступный любому и не требующий специальных инструментов: превратить страницы в изображения и собрать PDF заново. Текст исчезает вместе со всей структурой, файл становится тяжелее и перестаёт искаться поиском, зато под закрашенным ничего нет. В редакторе это экспорт страниц в изображения и обратная сборка, а скриптом — четыре строки:
import fitz # pymupdf src, out = fitz.open('dogovor.pdf'), fitz.open() for page in src: pix = page.get_pixmap(dpi=200) out.new_page(width=page.rect.width, height=page.rect.height).insert_image(page.rect, pixmap=pix) out.save('dogovor_flat.pdf')
Проверка после любого из способов одна: открыть результат и попробовать выделить текст там, где его быть не должно.
DOCX: это zip-архив, и в нём лежит история
Файлы Office — обычные zip-архивы с набором XML внутри. Это легко проверить:
unzip -l dogovor.docx
Length Date Time Name --------- ---------- ----- ---- 98 2026-08-26 08:07 [Content_Types].xml 331 2026-08-26 08:07 docProps/core.xml 153 2026-08-26 08:07 word/comments.xml 205 2026-08-26 08:07 word/document.xml
Достать оттуда всё интересное — это десяток строк:
import zipfile, re z = zipfile.ZipFile('dogovor.docx') core = z.read('docProps/core.xml').decode() for tag in ('dc:creator', 'cp:lastModifiedBy', 'cp:revision'): m = re.search(f'<{tag}>(.*?)</{tag}>', core) print(f'{tag:<20}', m.group(1) if m else '—') doc = z.read('word/document.xml').decode() print('удалено при правках:', re.findall(r'<w:delText[^>]*>(.*?)</w:delText>', doc)) if 'word/comments.xml' in z.namelist(): c = z.read('word/comments.xml').decode() print('комментарии: ', re.findall(r'<w:t[^>]*>(.*?)</w:t>', c))
dc:creator Иванов С.П. cp:lastModifiedBy Petrova_A cp:revision 17 удалено при правках: ['цена 5 200 000'] комментарии: ['тут можно ещё уступить, запас есть']
Разберу построчно, что это значит для отправителя.
docProps/core.xml отдаёт автора, того, кто редактировал последним, и число сохранений. Имена сотрудников уезжают контрагенту просто так, без всякого умысла.
word/document.xml хранит текст вместе с правками, если режим отслеживания был включён. Удалённый фрагмент никуда не пропадает, он лежит в теге w:delText — и внешняя сторона узнаёт, что в предыдущей версии стояла другая цена. В переговорах это, мягко говоря, полезная информация, только не для вас.
word/comments.xml — комментарии на полях, даже если в редакторе их отображение выключено. Написанное для своих приезжает к тем, для кого точно не предназначалось.
Как надо. В Word есть штатный «Инспектор документов» — он вычищает свойства, комментарии, скрытый текст и историю правок. Но самый надёжный ответ проще: отправлять PDF, а не исходник, и перед этим принять или отклонить все правки, а не просто выключить их отображение.
Изображения: EXIF и то, что было до обрезки
Про EXIF знают почти все, а смотрят в него почти никогда. Смотрит утилита exiftool — она есть в репозиториях всех дистрибутивов и ставится под Windows одним файлом:
exiftool -Model -Software -DateTimeOriginal -GPSPosition photo.jpg
Camera Model Name : iPhone 13 Software : 16.5 Date/Time Original : 2026:08:20 14:31:07 GPS Position : 55 deg 45' 7.92" N, 37 deg 36' 56.16" E
Координаты — с точностью до дома, дальше их достаточно вставить в любую карту. Публикуя фотографию рабочего места или товара, вы публикуете и адрес.
Часть площадок метаданные вырезает при загрузке, часть — нет, а мессенджеры ведут себя по-разному в зависимости от того, отправлен файл как фото или как документ. Проверять надо не по чужим утверждениям, а на своём файле — эта команда показывает вообще все теги, которые в нём есть:
exiftool -a -G1 -s photo.jpg
Отдельная тема — обрезка. Многие редакторы, особенно встроенные, при обрезке не переписывают файл целиком, а дописывают изменения, оставляя исходные данные внутри. Несколько лет назад такая ошибка нашлась сразу в двух мобильных платформах: обрезанные скриншоты восстанавливались до исходного вида. Проблему тогда починили, но привычка проверять полезнее, чем вера в то, что везде всё исправлено.
Как надо. Пересохранить картинку через инструмент, который собирает файл заново, и убедиться, что метаданных нет:
exiftool -all= -overwrite_original photo.jpg exiftool -a -G1 -s photo.jpg # должны остаться только системные поля
Без -overwrite_original exiftool оставляет рядом исходник с суффиксом _original — и его легко случайно отправить вместо очищенного.
Что ещё уезжает, о чём не думают
Excel. Скрытые листы, скрытые столбцы, фильтр, который показывает десять строк из тысячи, и связанные исходные данные сводной таблицы. Всё это отправляется вместе с книгой. Отдельно — примечания и история изменений при совместной работе.
Презентации. Заметки докладчика едут вместе с файлом. Слайд, «удалённый» перетаскиванием за границы области, тоже никуда не девается.
Скриншоты. Самый недооценённый источник. На снимке рабочего экрана обычно видны: имя пользователя в заголовке окна, вкладки браузера с внутренними системами, всплывающее уведомление с фрагментом чужой переписки, календарь на завтра. Никакой техники для извлечения не нужно — достаточно посмотреть внимательно.
Минутная проверка перед отправкой
Не нужно ничего внедрять, достаточно завести привычку. Перед тем как отправить файл наружу:
Откройте PDF и попробуйте выделить текст под закрашенным местом. Выделяется — значит, он там есть.
Для документа Office посмотрите свойства (автор, организация) и убедитесь, что правки приняты, а не просто скрыты.
Для картинки прогоните exiftool и посмотрите, что в ней осталось.
И взгляните на имя файла — иногда самая интересная информация именно там.
Всё это занимает меньше минуты и закрывает большую часть того, на чём люди попадаются.
Что можно сделать на уровне компании
Если отправка документов наружу — регулярный процесс, ручные привычки не масштабируются. Тогда:
Чистка метаданных на почтовом шлюзе для исходящих вложений. Многие решения это умеют, и включается оно одной настройкой.
Правило «наружу уходит PDF». Исходник передаётся только там, где контрагенту действительно нужно с ним работать, и в этом случае — после инспектора документов.
Шаблоны без имён. Если в свойствах шаблона стоит организация и автор, они будут во всех документах, созданных из него.
И самое дешёвое: показать людям тот самый фокус с выделением текста под чёрным прямоугольником. Пятиминутная демонстрация на планёрке работает лучше любого регламента, потому что после неё человек проверяет сам, без напоминаний.
Комментарии (4)

N1X
26.08.2026 13:05Катя: привет,я с уга вернулась!
Ромка: прив!как оно там?
Катя: да замечательно!прикинь,я на нудистском пляже загорала!!!У меня даже фотка одна есть...
Ромка: вах)))Фстудию!
Катя: АГА!Хитрец!Ну ладно,я щас только все прикрой черными квадратиками!!!
Ромка: Ну давай...
Катя: Слуш,я тут не до конца с фотошопом разобралась...В какой формат лучше сохранить?
Ромка: Ну...Конечно же в PSD
Катя: А,хорошо,щас кину!!!
Ромка: Давай,жду с нетерпением!!!!!
Башорг, 2008 год...
Pavel_SD
А можно пояснить для общего развития, почему кто-то не хочет засветить номер счёта?
jbenderov Автор
Номер счета взять только для примера. В реальности там может быть номер паспорта, адрес прописки, номер дела и т.п.