← Все инструменты
🧹

Удалить объект из PDF — Умный ластик

Бесплатно удаляйте лишние печати, водяные знаки, подписи или логотипы из PDF файлов. Умное стирание без повреждения структуры документа.

+Загрузить PDF или фотоили перетащите файлы сюда🚀 Запустить инструмент бесплатно

Как это работает

01

Загрузите PDF

Откройте PDF-документ в браузере без загрузки на сервер.

02

Выделите объект для удаления

Нарисуйте прямоугольник вокруг печати, логотипа или водяного знака.

03

Сотрите и сохраните

Объект удаляется, фон восстанавливается. Экспортируйте итоговый PDF.

Почему pdfredX

🔒

Полная конфиденциальность

Файлы не покидают ваш браузер. Никакой загрузки на сторонние серверы.

Обработка на стороне клиента

Все вычисления выполняются локально — быстро, безопасно и бесплатно.

🆓

Без регистрации

Просто откройте браузер и приступайте. Никаких аккаунтов не нужно.

📱

На любом устройстве

Работает на ПК, планшете и смартфоне без установки.

Полезные материалы по теме

Как удалить объект из PDF: стереть штамп, логотип или подпись без следов онлайн
На отсканированном документе часто остаётся лишнее: чужой штамп, старый логотип, пятно, подпись, водяной знак. Замазать это чёрным прямоугольником — грубо и заметно. Инструмент «Умная замазка» в pdfredX убирает объект и **достраивает фон бумаги на его месте**, так что следа не остаётся. Всё происходит прямо в браузере, файл никуда не загружается.

На отсканированном документе часто остаётся лишнее: чужой штамп, старый логотип, пятно, подпись, водяной знак. Замазать это чёрным прямоугольником — грубо и заметно. Инструмент «Умная замазка» в pdfredX убирает объект и достраивает фон бумаги на его месте, так что следа не остаётся. Всё происходит прямо в браузере, файл никуда не загружается.


Шаг 01. Загрузить документ

Откройте pdfredx.com и перетащите PDF или скан в зону загрузки. Страница отрисовывается на Canvas локально через PDF.js — ни один байт не уходит на сервер. Нажмите 🖌 на карточке нужной страницы, чтобы открыть редактор.


Шаг 02. Выделить объект инструментом 🧹

В редакторе выберите инструмент 🧹 Умная замазка (Healing). Обведите прямоугольником то, что нужно убрать: штамп, логотип, подпись, пятно. Рамку берите чуть с запасом по чистому фону вокруг объекта — именно из этих краёв алгоритм возьмёт «материал» для достройки.

Правило простое: чем ровнее и однороднее фон вокруг объекта, тем чище результат. Печать на белом поле убирается почти идеально; объект поверх мелкого текста или узора — сложнее.


Шаг 03. Настроить силу проходов

За качество отвечает слайдер число проходов (fabHealPasses, от 1 до 8). Один проход — быстро, для мелких объектов на ровном фоне. Больше проходов — плавнее переход и меньше «шва» на границе, но обработка чуть дольше. Начните с 3 (значение по умолчанию) и увеличьте, если на месте объекта остаётся заметное пятно.

Не понравился результат — отмените (Ctrl+Z) и попробуйте с другой рамкой или числом проходов. Умная замазка — это восстановление фона, а не идеальная магия: иногда выгоднее сделать её в два приёма меньшими областями.


Шаг 04. Сохранить

Нажмите 💾 Сохранить — правка вшивается в страницу, затем «Создать PDF» соберёт итоговый файл через jsPDF и скачает напрямую из браузера. Важно: при сохранении страница сводится в единое изображение, поэтому исходные пиксели под удалённым объектом физически исчезают — объект не «прячется под слоем», а действительно стирается. Бесплатно, без регистрации.


Как это реализовано технически

Под капотом — классический инпейнтинг (достройка изображения), а не нейросеть. Приложение читает пиксели выделенной области через getImageData из lowerCanvasEl — это массив Uint8ClampedArray со значениями RGBA. Для каждого пикселя внутри рамки цвет вычисляется как взвешенная смесь четырёх краёв выделения (сверху, снизу, слева, справа): чем ближе край, тем больше его вклад. Так «чистый» фон бумаги как бы затекает внутрь и закрывает объект.

Проходов несколько (fabHealPasses): на каждом уже достроенные пиксели участвуют в расчёте соседних — переход становится глаже. Результат записывается обратно и обновляет фон страницы (fabBgUrl) — без добавления новых объектов Fabric, то есть замазка становится частью самой картинки.


Известные ограничения

Сложный фон. Алгоритм хорошо восстанавливает однородный фон (белая бумага, ровная заливка). Убрать объект с фотографии, узора или мелкого текста без заметного пятна — не всегда получится: неоткуда взять правильную текстуру.

Большие области. Замазка области больше ~400×400 px идёт в основном потоке и на слабом телефоне может «подвиснуть» на 0,5–1 секунду. Крупный объект выгоднее убирать частями.

Не выпрямляет и не дорисовывает содержимое. Инструмент закрывает объект фоном, а не восстанавливает то, что было под ним. Если под штампом был текст — он не появится.

Растровый результат. Правка вшивается в изображение страницы. Выделяемый текстовый слой на этой странице после сохранения станет частью картинки.


Если задача не убрать объект с восстановлением фона, а безвозвратно скрыть конфиденциальные данные чёрным блоком — это инструмент Замазать текст в PDF: он уничтожает пиксели под прямоугольником.

Попробуйте прямо сейчас — pdfredx.com, без регистрации, файл остаётся у вас.

Убрать печать или подпись из PDF, не загружая документ на чужой сервер
Вам нужно убрать из документа старую печать, чужую подпись, персональные данные или водяной знак — и получить чистую страницу. Задача деликатная: часто это договор, справка, медицинский бланк или кадровый документ. И вот тут важно, каким путём вы его чистите. Разберём честно, что происходит с файлом на сервере и в браузере.

Вам нужно убрать из документа старую печать, чужую подпись, персональные данные или водяной знак — и получить чистую страницу. Задача деликатная: часто это договор, справка, медицинский бланк или кадровый документ. И вот тут важно, каким путём вы его чистите. Разберём честно, что происходит с файлом на сервере и в браузере.


Куда улетает документ на серверных сервисах

Когда вы загружаете PDF в обычный онлайн-редактор, файл уходит на удалённую машину. Дальше — по политике конкретного сервиса, которую мало кто читает:

  • файл сохраняется во временном хранилище подрядчика (AWS, GCP, Azure);
  • обрабатывается на чужом сервере;
  • хранится от нескольких часов до нескольких суток «для надёжности»;
  • логируется вместе с метаданными — IP, время, имя и размер файла.

Для документа, из которого вы как раз убираете чувствительные данные, это парадокс: чтобы стереть одну печать, вы сначала отправляете весь оригинал — с этой печатью и всем остальным — на машину, которую не контролируете. Проверить, что копия удалена, невозможно.


Полная изоляция в браузере: как чистит документ pdfredX

pdfredX не загружает ваш файл ни на какой сервер. Это следствие архитектуры, которое можно проверить.

Файл читается локально. PDF.js 3.11.174 открывает документ во вкладке через FileReader и рисует страницы на Canvas. Сетевого запроса с вашим файлом нет.

Замазка считается в памяти вкладки. Умная замазка — это операции над пикселями (getImageData / putImageData) уже загруженного изображения. Всё локально, ничего не отправляется.

Объект действительно исчезает, а не прячется. При сохранении страница сводится в единое изображение через toDataURL. Пиксели удалённого объекта замещаются достроенным фоном — в экспортированном файле их физически нет. Это не чёрный прямоугольник поверх, который можно снять: восстанавливать нечего.

Сборка PDF — на клиенте. Готовый файл собирает jsPDF во вкладке и отдаёт браузеру на скачивание — в папку «Загрузки», а не на сервер и обратно.

Работает офлайн. Откройте инструмент, отключите интернет и почистите документ — всё продолжит работать. Сеть нужна только чтобы один раз загрузить приложение.


Пошагово, без отправки на сервер

01. Загрузите документ. Перетащите PDF в зону загрузки на pdfredx.com. FileReader читает файл локально — он не покидает устройство.

02. Уберите объект. Нажмите 🖌 на странице, выберите 🧹 Умную замазку, обведите печать или подпись, при необходимости увеличьте число проходов. Объект замещается фоном в памяти вкладки.

03. Сохраните и закройте. Нажмите 💾 Сохранить → «Создать PDF». jsPDF соберёт документ локально. После закрытия вкладки данные файла исчезают: ничего не остаётся ни в sessionStorage, ни в памяти.


Что мы гарантировать не можем — честный дисклеймер

Клиентская обработка защищает документ от ухода на внешние серверы, но это не щит от всех угроз, и обещать обратное было бы нечестно.

Вредоносное ПО или кейлоггер на устройстве. Если машина скомпрометирована, программа может читать файлы с диска в обход браузера.

Браузерные расширения с широкими правами. Расширение с доступом «читать данные на всех сайтах» теоретически видит содержимое вкладки. Для чувствительных документов работайте в профиле без сторонних расширений или в приватном окне.

Сохранённый файл остаётся на вашем диске. Если устройство не защищено шифрованием, конфиденциальные файлы могут быть прочитаны третьими лицами при физическом доступе.

Умная замазка — не криминалистическая очистка. Она убирает видимый объект и его пиксели из картинки. Но если под удаляемым объектом просвечивал текст или он частично перекрывал важные данные — оцените результат глазами перед публикацией.

Мы обеспечиваем изоляцию на уровне браузерной вкладки. Остальное — на стороне пользователя.


Уберите печати и подписи из документов без загрузки на сервер — pdfredx.com, бесплатно, без регистрации.

Инпейнтинг в браузере: как устроено бесшовное удаление объектов из PDF на Canvas
Убрать штамп со скана так, чтобы не осталось шва, — задача из области инпейнтинга (достройки изображения). Обычно её решают тяжёлые нейросети на сервере. Но для документов с однородным фоном бумаги работает и классический подход — интерполяция краёв, целиком на клиенте, без единого сетевого запроса. Разберём, как устроен инструмент `heal` в pdfredX: от `getImageData` до обновления фона, с честными ограничениями по памяти.

Убрать штамп со скана так, чтобы не осталось шва, — задача из области инпейнтинга (достройки изображения). Обычно её решают тяжёлые нейросети на сервере. Но для документов с однородным фоном бумаги работает и классический подход — интерполяция краёв, целиком на клиенте, без единого сетевого запроса. Разберём, как устроен инструмент heal в pdfredX: от getImageData до обновления фона, с честными ограничениями по памяти.


Архитектурный вызов и выбор подхода

Почему не нейросеть. Современные модели инпейнтинга (content-aware fill) дают отличный результат на фотографиях, но это сотни мегабайт весов и, как правило, серверный инференс. Для веб-инструмента, где главный посыл — приватность и работа без загрузки файла, тащить такую модель в браузер невозможно. А отправлять документ на сервер ради удаления печати противоречит самой идее.

Почему классическая интерполяция достаточна. Наш кейс — не восстановление лица на фото, а удаление объекта с однородного фона документа: белая бумага, ровная заливка, бланк. Здесь не нужно «придумывать» текстуру — достаточно аккуратно затянуть область цветом окружающего фона. С этим отлично справляется взвешенная интерполяция четырёх краёв, а стоит она копейки по вычислениям.

Почему на Canvas, а не над структурой PDF. Сканы растровые: страница — это изображение. PDF.js рендерит её в lowerCanvasEl, дальше мы работаем напрямую с пикселями через Canvas 2D API. Никакого парсинга структуры PDF.


Разбор алгоритма

Чтение пикселей

Отправная точка — сырые пиксели области. Их даёт getImageData: плоский массив Uint8ClampedArray, по 4 байта (R, G, B, A) на пиксель.

const ctx = fabCanvas.lowerCanvasEl.getContext('2d');
const img = ctx.getImageData(0, 0, W, H);
const d   = img.data;   // Uint8ClampedArray, длина W*H*4

Выделение пользователя задаёт прямоугольник [x0, y0] … [x1, y1] — область, которую нужно затянуть фоном.

Взвешенная смесь четырёх краёв

Для каждого пикселя внутри выделения цвет собирается из четырёх граничных пикселей — на пересечении его строки и столбца с краями рамки. Вклад каждого края обратно пропорционален расстоянию до него: близкий край «весит» больше.

for (let y = y0; y < y1; y++) {
  for (let x = x0; x < x1; x++) {
    const i = (y * W + x) * 4;

    const dl = x - x0 + 1, dr = x1 - x;      // расстояния до левого/правого края
    const dt = y - y0 + 1, db = y1 - y;      // до верхнего/нижнего
    const wl = 1/dl, wr = 1/dr, wt = 1/dt, wb = 1/db;
    const wsum = wl + wr + wt + wb;

    for (let c = 0; c < 3; c++) {            // R, G, B
      const left  = d[(y * W + x0) * 4 + c];
      const right = d[(y * W + x1) * 4 + c];
      const top   = d[(y0 * W + x) * 4 + c];
      const bot   = d[(y1 * W + x) * 4 + c];
      d[i + c] = (left*wl + right*wr + top*wt + bot*wb) / wsum;
    }
  }
}

Это градиентная заливка по четырём опорным точкам: у краёв цвет почти совпадает с фоном, в центре — усреднённый. На ровной бумаге глазом шва не видно.

Несколько проходов

Один проход даёт видимый градиент, если область большая. Поэтому проходов несколько (слайдер fabHealPasses, 1–8): на каждом следующем проходе уже пересчитанные пиксели участвуют в расчёте соседних, и заливка «разглаживается», подстраиваясь под локальные неровности фона. Больше проходов — глаже переход, но дольше счёт. Три прохода — разумный дефолт.

Запись результата и обновление фона

Готовый массив возвращается на холст, страница пересобирается в новый фон:

ctx.putImageData(img, 0, 0);
fabBgUrl = fabCanvas.lowerCanvasEl.toDataURL('image/jpeg', 0.92);

Ключевой момент: замазка обновляет фоновое изображение (fabBgUrl), а не добавляет объект Fabric поверх. Поэтому результат нельзя случайно сдвинуть или удалить как отдельный слой — он стал частью самой страницы. При сохранении saveFab всё сводится в единое изображение через toDataURL({ multiplier }), и исходные пиксели под областью в экспорт не попадают.


Компромиссы производительности и лимиты по памяти

Главный поток. Двойной цикл по пикселям выполняется синхронно в основном потоке. Для области 200×200 при трёх проходах это 120 тысяч итераций — незаметно. Но область больше ~400×400 px на слабом мобильном устройстве даёт «фриз» на 0,5–1 секунду: UI не отвечает, пока крутится цикл.

tick(16) между тяжёлыми шагами. Чтобы вкладка не выглядела зависшей, между тяжёлыми операциями вставляется уступка потоку (await tick(16) — пауза примерно в один кадр). Это не ускоряет счёт, но возвращает управление браузеру: успевает перерисоваться оверлей, не срабатывает детектор «страница не отвечает».

Цена проходов. Время растёт линейно с числом проходов и с площадью. fabHealPasses = 8 на большой области — уже ощутимо. Поэтому дефолт — 3: баланс между гладкостью шва и отзывчивостью.

Память. getImageData на области — это копия пикселей в Uint8ClampedArray. Для локального выделения это мелочь; проблема не в замазке, а в общем числе страниц-изображений документа в памяти вкладки.


Что улучшим в следующих версиях

Вынос в Web Worker через OffscreenCanvas — убрать фриз на больших областях, как только стабилизируется поддержка в Safari.

Учёт текстуры фона — сейчас интерполируется только цвет; добавление лёгкого шума под текстуру бумаги сделает заливку незаметной и на неидеально ровном фоне.

Авто-подбор рамки по контрасту объекта — чтобы не приходилось вручную обводить с запасом.


Хотите проверить на реальном скане — загрузите документ на pdfredx.com и уберите штамп. Без регистрации, без загрузки файлов на сервер.

🚀 Запустить инструмент бесплатно