
Хватит отправлять «голые» документы. Firemark наносит водяные знаки на изображения и PDF-файлы одной командой. Оптимизирован для борьбы с удалением водяных знаков с помощью ИИ. Написан на Rust.
Быстрый инструмент для нанесения водяных знаков на изображения и PDF-файлы в виде одного бинарного файла. Написан на Rust.
Каждый год миллионы людей становятся жертвами мошенничества с подделкой документов, которое начинается с простого обмена документами. Типичный сценарий: вы ищете квартиру для аренды. Арендодатель — или кто-то, выдающий себя за него, — просит копию вашего удостоверения личности, расчётный листок, налоговое уведомление. Вы отправляете их без пометок. «Арендодатель» исчезает, а ваши документы теперь используются для открытия банковских счетов, взятия кредитов или подделки личностей от вашего имени.
Нанесение водяного знака на каждый отправляемый документ — самая эффективная защита. Видимая надпись «Отправлено в агентство XYZ — март 2026 — только для заявки на аренду квартиры» делает документ бесполезным для любых других целей. Если произойдёт утечка, вы точно будете знать, откуда он пришёл.
firemark делает это легко: одна команда, любое изображение или PDF, 17 визуальных стилей, криптографические филигранные узоры, устойчивые к редактированию, и пакетная обработка целых папок.
До и после — одна команда, документ теперь отслеживаем и защищён от подделок.
Готовый бинарный файл (Linux и macOS, x86_64 и arm64) — загружает последний релиз в ~/.local/bin:
Бинарные файлы для Windows прилагаются к каждому релизу.
Из crates.io:
cargo install firemark
Из исходного кода:
git clone https://github.com/Vitruves/firemark.git
cd firemark
cargo install --path .
Создаётся один оптимизированный бинарный файл (~5 МБ).
# Нанесение водяного знака на одно изображение
firemark photo_id.png -m "Аренда квартиры — SCI Dupont — март 2026"
# Нанесение водяного знака на PDF
firemark tax_notice.pdf -m "КОНФИДЕНЦИАЛЬНО" -s "Не распространять"
# Нанесение водяного знака на всю папку рекурсивно
firemark ./documents/ -R -m "Отправлено в Агентство X" -t stamp
# Предварительный просмотр без записи файлов
firemark id_card.jpg -m "Черновик" -n
По умолчанию вывод сохраняется рядом с входным файлом как {name}-watermarked.{ext}. Используйте -o для явного указания пути вывода или -S для пользовательского суффикса.
firemark doc.pdf -t stamp -m "КОНФИДЕНЦИАЛЬНО" --border --color red
firemark накладывает криптографические филигранные узоры, вдохновлённые элементами защиты банкнот. Эти тонкие геометрические узоры чрезвычайно сложно удалить с помощью графических редакторов.
firemark id.png -m "Заявка на аренду" --filigrane moire
firemark id.png -m "Заявка на аренду" --filigrane none # отключить
По умолчанию каждый рендер недетерминирован. firemark применяет универсальные пост-рендерные возмущения (дрожание альфа-канала, субпиксельный цветовой шум, микроточки по краям, редкие пиксели-призраки) и рандомизацию для каждого рендера, так что ни один вывод не идентичен другому по пикселям — даже с одинаковыми настройками. Это не позволяет моделям ИИ-зрения выучить предсказуемый шаблон для вычитания.
Кроме того, по умолчанию встраиваются строки для защиты от состязательных инъекций, чтобы запутать инструменты удаления водяных знаков на основе ИИ. Отключите с помощью --no-anti-ai, если не хотите видимого текста подсказки:
firemark doc.png -m "КОНФИДЕНЦИАЛЬНО" --no-anti-ai
-m, --main-text Основной текст водяного знака
-s, --secondary-text Вторая строка текста
-t, --type Стиль водяного знака (см. таблицу выше)
-o, --output Путь к выходному файлу
-S, --suffix Пользовательский суффикс вывода (по умолчанию: "watermarked")
-c, --color Цвет — название или #RRGGBB (по умолчанию: синий)
-O, --opacity Непрозрачность 0.0–1.0 (по умолчанию: 0.5)
-r, --rotation Угол в градусах (по умолчанию: -45)
-p, --position center, top-left, top-right, bottom-left, bottom-right, tile
-f, --font Имя шрифта или путь к .ttf/.otf
-I, --image Наложить изображение в качестве водяного знака
--qr-data Встроить QR-код с пользовательскими данными
--qr-code-position Размещение QR-кода (по умолчанию: center)
--qr-code-size Размер QR-кода в пикселях (по умолчанию: auto)
--border Рисовать рамку вокруг водяного знака
--shadow Добавить тень
--filigrane Стиль филиграни (по умолчанию: guilloche)
--no-anti-ai Отключить защиту от состязательных инъекций (включена по умолчанию)
Полный список из более чем 70 флагов см. в CLI.md.
--pages Страницы для нанесения водяного знака (например, 1,3-5 или "all")
--skip-pages Страницы для пропуска
--behind Разместить водяной знак за содержимым
--no-flatten Сохранить слои отдельно (по умолчанию сведение)
--dpi Разрешение рендера (по умолчанию: 150)
# Обработка всех изображений и PDF в папке
firemark ./inbox/ -m "ВНУТРЕННЕЕ" -t tile
# Рекурсивно, 8 потоков, пользовательский суффикс
firemark ./docs/ -R -j 8 -m "Черновик" -S draft
# Пробный прогон — список того, что будет обработано
firemark ./docs/ -R -m "Черновик" -n
Файлы, уже имеющие водяной знак (с совпадающим суффиксом), автоматически пропускаются при повторных запусках.
Сохраняйте параметры в TOML-файле, чтобы избежать повторения флагов. См.
examples/config/firemark.toml для полного примера с двумя предустановками: ultra-secure (плотная плитка, полная филигрань, QR-отслеживание, удаление метаданных) и light (простой диагональный текст, без дополнительных опций).
# Глобальные значения по умолчанию
main_text = "КОНФИДЕНЦИАЛЬНО"
secondary_text = "{author} — {date}"
watermark_type = "diagonal"
color = "#1a3c6e"
opacity = 0.45
font_weight = "bold"
filigrane = "guilloche"
border = true
[preset.ultra-secure]
main_text = "КОНФИДЕНЦИАЛЬНО — {author}"
watermark_type = "tile"
color = "#CC0000"
opacity = 0.6
filigrane = "full"
anti_ai = true
qr_data = "firemark://{author}/{timestamp}/{uuid}"
strip_metadata = true
[preset.light]
main_text = "КОПИЯ"
watermark_type = "diagonal"
color = "#555555"
opacity = 0.3
filigrane = "none"
anti_ai = false
firemark doc.pdf --config firemark.toml
firemark doc.pdf --config firemark.toml --preset ultra-secure
firemark doc.pdf --config firemark.toml --preset light
firemark doc.pdf --save-preset mypreset # сохранить текущие флаги
firemark --list-presets # список доступных предустановок
Поддерживается преобразование между форматами (например, firemark photo.webp -o out.pdf).
MIT
curl -fsSL https://raw.githubusercontent.com/Vitruves/firemark/main/install.sh | sh
| Флаг | Стиль | Описание |
|---|
diagonal | Диагональная сетка | Повторяющийся диагональный текст на всю страницу (по умолчанию) |
stamp | Резиновая печать | Крупная центрированная печать с двойной рамкой |
stencil | Трафарет | Трафаретный шрифт на всю ширину |
typewriter | Пишущая машинка | Моноширинный текст как с пишущей машинки |
handwritten | Подпись | Подпись в стиле рукописного текста с подчёркиванием |
redacted | Зачёркивание | Чёрные полосы на всю ширину для зачёркивания |
badge | Щит | Эмблема в виде щита безопасности |
ribbon | Лента | Диагональная лента в углу |
seal | Печать | Круглая печать в нотариальном стиле |
frame | Рамка | Декоративная рамка на всю страницу |
tile | Плитка | Плотная равномерная сетка текста |
mosaic | Мозаика | Разбросанный случайный текст |
weave | Плетение | Переплетающаяся диагональная текстура |
ghost | Призрак | Сверхслабый тиснёный текст |
watercolor | Акварель | Мягкий размытый эффект акварели |
noise | Шум | Деформированный текст с пиксельным шумом |
halftone | Полутон | Текст в виде растровой сетки полутонов |
| Стиль | Описание |
|---|
guilloche | Синусоидальные волновые полосы (по умолчанию) |
rosette | Спирограф + угловые розетки |
crosshatch | Мелкая диагональная ромбовидная решётка |
border | Волнистая вложенная защитная рамка |
lissajous | Параметрические фигуры Лиссажу |
moire | Концентрические круги интерференции |
spiral | Спираль Архимеда |
mesh | Шестиугольная сетка сот |
plume | Плавные линии, напоминающие перья, разбросанные по поверхности |
constellation | Узлы-звёзды, соединённые тонкой геометрической сетью |
ripple | Перекрывающиеся эллиптические волновые фронты из случайных точек |
full | Все узоры вместе |
none | Отключить филигрань |
| Формат | Вход | Выход |
|---|
| PNG | да | да |
| JPEG | да | да |
| да | да | |
| WebP | да | да |
| TIFF | да | да |