Извлечение встроенных изображений из PDF в исходном качестве

Изображения из PDF без растрирования: извлечение в исходном качестве

Из PDF-документа извлекаются отдельные фотографии, прозрачная графика и диаграмма

PDF может хранить фотографию не как видимый прямоугольник на странице, а как отдельный растровый объект со своим разрешением, цветовым пространством, сжатием и маской прозрачности. Правильная выгрузка достаёт этот объект из структуры документа. Конвертация страницы в JPG решает другую задачу: программа заново отрисовывает весь лист вместе с текстом, полями и фоном. Поэтому сначала нужно определить тип содержимого, а уже затем выбирать инструмент.

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

Извлечение объекта и растрирование страницы: в чём разница

У страницы PDF нет обязательного «фонового изображения». Она собирается из команд рисования: текста, линий, кривых, заливок, растровых XObject-объектов, прозрачных масок и вложенных форм. Когда программа показывает страницу на экране, она объединяет эти элементы в итоговый вид. Команда «PDF в JPG» обычно повторяет именно этот процесс и создаёт снимок всей страницы в заданном разрешении.

Извлечение встроенной картинки работает иначе. Программа находит растровый объект, читает его байты и сохраняет отдельно либо декодирует в выбранный формат. В первом случае можно получить исходный JPEG или JPEG 2000 практически без повторного сжатия. Во втором программа может перевести CMYK в RGB, применить профиль, добавить альфа-канал из отдельной маски и записать PNG или TIFF. Оба варианта полезны, но результат у них различается.

  • Нужна исходная фотография. Ищите команду «Извлечь изображения», «Export all images», «Extract Image» или программный доступ к xref.
  • Нужна страница целиком. Используйте экспорт страниц в JPG, PNG или TIFF; это соседняя, но отдельная операция.
  • Нужен фрагмент скана. У сканированной страницы часто есть один большой растр. Сначала выгружается вся страница, затем нужная область обрезается без дополнительного масштабирования.
  • Нужна схема, состоящая из линий и текста. Это может быть векторная графика, которую обычный экстрактор растров не найдёт. Её открывают в векторном редакторе или сохраняют как область страницы с контролируемым DPI.

Быстрая проверка: увеличьте страницу до 800–1600%. Если текст и контуры остаются идеально гладкими, они, вероятно, векторные. Если вся страница распадается на пиксели одинаково, перед вами скан. Если фотография пикселизуется, а подписи вокруг неё остаются резкими, фотография, скорее всего, хранится отдельным растровым объектом.

Диагностика PDF перед выгрузкой

Текстовый документ с отдельными фотографиями

Это наиболее удобный случай. Текст выделяется курсором, фотографии имеют собственные границы, а пакетные экстракторы обычно находят их без OCR. Начните с команды массовой выгрузки. Если программа возвращает десятки мелких элементов, отсортируйте папку по ширине, высоте или размеру файла: среди полезных кадров часто оказываются пиктограммы, фоновые текстуры и повторяющиеся логотипы.

Скан книги, договора или журнала

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

Файл с запретом копирования

Откройте свойства документа и найдите раздел безопасности. Ограничения могут запрещать копирование содержимого, изменение или извлечение страниц. Не пытайтесь обходить установленный владельцем запрет. Запросите разрешённую копию или пароль у автора. Если документ ваш и пароль известен, снимите ограничения штатной командой, сохраните рабочую копию и только после этого запускайте выгрузку.

Документ с электронной подписью

Само чтение и сохранение отдельных изображений обычно не меняет PDF, пока вы не записываете изменения в исходный файл. Но открытие в редакторе и последующее сохранение может изменить байты документа и сделать подпись недействительной. Работайте с дубликатом, не нажимайте «Сохранить» в исходном PDF и проверяйте статус подписи до и после действий.

Интерактивная форма

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

Повреждённый или частично загружаемый файл

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

Подготовка: как не потерять оригинал и не перепутать результаты

  1. Скопируйте PDF. Рабочий файл переименуйте, добавив дату или пометку «copy». Подписанный оригинал оставьте только для чтения.
  2. Создайте пустую папку результата. Не сохраняйте картинки рядом с другими изображениями: так проще проверить число файлов и удалить неудачную попытку.
  3. Запишите диапазон страниц. Если нужны страницы 18–24, укажите это до запуска пакетной операции. У разных программ нумерация интерфейса начинается с 1, а у скриптов индекс часто начинается с 0.
  4. Определите требование к формату. JPEG удобен для фотографий без прозрачности. PNG подходит для альфа-канала и интерфейсной графики. TIFF полезен в печатном процессе. Сохранение исходных байтов предпочтительно, когда важна идентичность с вложенным объектом.
  5. Проверьте свободное место. Один PDF может содержать сотни объектов, а декодированный PNG иногда значительно больше встроенного JPEG.
  6. Не включайте увеличение разрешения. Параметр 600 DPI при экспорте страниц не создаёт деталей. При извлечении объектов лучше сохранять фактические пиксельные размеры.

Для контрольной проверки заранее выберите одну заметную фотографию, один объект с прозрачностью и одну небольшую пиктограмму. После пакетной операции найдите все три. Такой набор быстрее выявляет пропуски, потерю альфа-канала и слишком агрессивный фильтр минимального размера.

Способ 1. PDF Commander: выгрузить все картинки или сохранить одну

В PDF Commander есть отдельная команда пакетного извлечения. Она подходит для документа, где изображения действительно встроены как растровые объекты. Не выбирайте «PDF в JPG»: эта функция создаёт изображения страниц и добавит к фотографии текст, поля и фон листа.

  1. Запустите программу и нажмите «Открыть PDF». Выберите рабочую копию документа. После загрузки пролистайте несколько страниц и убедитесь, что фотографии отображаются без ошибок.
Стартовое окно PDF Commander с кнопкой открытия PDF-документа
Сначала откройте документ через кнопку «Открыть PDF» или перетащите файл в окно программы.
  1. Откройте меню «Файл» → «Инструменты» → «Извлечь изображения». Команда относится ко всему документу; выделять фотографию на странице перед запуском не требуется.
Меню Файл в PDF Commander с командой извлечения изображений
Для пакетной выгрузки откройте «Файл», затем «Инструменты» и выберите «Извлечь изображения».
  1. В окне сохранения укажите отдельную папку и базовое имя. Не выбирайте папку, где уже лежат одноимённые файлы: автоматическая нумерация может затруднить сравнение двух попыток.
  2. Подтвердите операцию и дождитесь окончания. Большой каталог или PDF с сотнями страниц может обрабатываться заметно дольше обычного открытия документа.
Диалог сохранения извлечённых изображений в PDF Commander
Укажите папку назначения и базовое имя файлов, не заменяя исходный PDF.

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

Окно PDF Commander с сообщением о завершённом извлечении изображений
После обработки программа сообщает число сохранённых объектов; сравните его с ожидаемым количеством.

Как сохранить только одну картинку

Если нужен один доступный объект, перейдите на нужную страницу, щёлкните по изображению правой кнопкой мыши и выберите команду сохранения изображения. Этот путь быстрее пакетной выгрузки, но работает только тогда, когда программа распознаёт картинку как отдельный объект. Для скана контекстное меню относится ко всей странице или не показывает нужную команду.

Контекстное меню изображения в PDF Commander с командой сохранения
Для одного доступного объекта щёлкните по нему правой кнопкой и выберите сохранение изображения.

Проверка результата

Откройте самый крупный файл в просмотрщике изображений и посмотрите его свойства. Сравните пиксельные размеры с реальным назначением фотографии. Если картинка получилась размером с лист и содержит текст, был выгружен скан страницы. Если у PNG появился однотонный фон вместо прозрачности, базовый объект и маска могли быть сохранены отдельно; в таком случае используйте Acrobat с экспортом в PNG или программный способ с объединением маски.

Для документа с ограничениями сначала проверьте раздел безопасности. Если команда недоступна, не заменяйте её кадрированием под видом исходной выгрузки. Кадрирование или снимок дают отрисованную область и зависят от масштаба, поэтому их следует явно считать запасным вариантом.

Способ 2. Adobe Acrobat Pro: пакетный экспорт с фильтром мелких объектов

Acrobat Pro удобен, когда требуется выгрузить все растровые изображения, задать формат и исключить пиктограммы меньше выбранного порога. В актуальном интерфейсе команда открывается через верхнюю панель «Преобразовать» либо через «Все инструменты» → «Экспорт PDF».

  1. Откройте PDF и выберите «Все инструменты». Нажмите плитку «Экспорт PDF». Если открыта компактная панель, используйте «Преобразовать» — обе дороги приводят к настройкам экспорта.
Панель всех инструментов Adobe Acrobat Pro с плиткой Export PDF
Откройте «Все инструменты» и запустите «Экспорт PDF», а не конвертацию страниц через печать.
  1. Выберите категорию «Изображение» и формат: JPEG, JPEG 2000, PNG или TIFF.
  2. Включите флажок «Экспортировать все изображения». Это ключевой параметр. Без него Acrobat сохраняет страницы целиком в выбранном графическом формате.
Панель экспорта Adobe Acrobat Pro с форматом изображения и флажком Export all images
Выберите тип изображения и обязательно включите «Экспортировать все изображения», иначе будут растрированы страницы.
  1. Откройте настройки значком шестерёнки. Проверьте качество сжатия, профиль и преобразование цвета, разрешение при необходимости декодирования, а также поле исключения изображений меньше заданного размера.
  2. Для полного аудита поставьте «Без ограничений» или минимальный порог. Для каталога с множеством служебных значков разумно начать с 32–64 пикселей, затем повторить выгрузку без фильтра, если пропала нужная миниатюра.
  3. Нажмите «Экспорт», выберите пустую папку и подтвердите сохранение.
Настройки экспорта изображений Adobe Acrobat Pro с качеством цветом и минимальным размером
В настройках задайте качество, управление цветом, разрешение и порог отсечения мелких объектов.

Acrobat экспортирует растровые изображения, но не превращает в отдельные файлы векторные контуры. Диаграмма, собранная из линий, текста и заливок, не появится как единая PNG-картинка. Для неё нужен векторный редактор либо контролируемая отрисовка выбранной области.

Формат выбирайте по содержимому. JPEG подходит для фотографий, но не хранит прозрачность. PNG удобен для объектов с маской, схем и скриншотов. TIFF может сохранить больше данных для полиграфии, но создаёт тяжёлые файлы. Если важно получить байты в исходном кодировании, сравните Acrobat с PyMuPDF: программа экспорта способна декодировать и повторно записать объект в выбранный формат.

Что делать, если выгрузилось слишком много файлов

Сначала отсортируйте папку по размеру. Удалять всё маленькое автоматически нельзя: небольшая печать, QR-код или важная пиктограмма может быть нужным объектом. Создайте таблицу с шириной, высотой и размером файла либо повторите экспорт с аккуратным порогом. Если один логотип встречается на каждой странице, он может быть записан один раз или несколько раз в зависимости от структуры PDF и механизма экспорта.

Способ 3. Icecream PDF Editor: извлечь изображения с выбранных страниц

Этот вариант полезен, когда известен диапазон страниц и не требуется обрабатывать весь документ. Команда находится в режиме управления страницами и отделена от сохранения самих страниц в PDF, изображение или текст.

  1. Откройте документ и перейдите в Manage pages / «Управление страницами».
  2. Щёлкните по нужным миниатюрам. Для непрерывного диапазона используйте Shift, для отдельных страниц — Ctrl. Проверьте, что выделение не осталось на соседней странице.
  3. Откройте меню Extract и выберите Images from the selected pages, то есть изображения с выбранных страниц.
Режим Manage pages в Icecream PDF Editor с пунктом Images from the selected pages
В режиме управления страницами откройте меню Extract и выберите изображения с отмеченных страниц.
  1. Укажите папку и формат. В показанном диалоге доступны JPEG/JPG, PNG, WebP, TIFF и BMP. Для объекта с прозрачностью используйте PNG; JPEG выбирайте только для непрозрачной фотографии.
  2. Запустите обработку и откройте папку результата. Если число файлов равно числу выбранных страниц, внимательно проверьте содержимое: возможно, каждая страница представляла собой один скан.
Диалог Extract images в Icecream PDF Editor со списком выходных форматов
Выберите каталог и формат; для прозрачности предпочтителен PNG, для фотографий допустим JPEG или WebP.

Выбор формата означает, что программа может декодировать и заново записывать растровые данные. Это удобно для совместимости, но не гарантирует побайтовое совпадение с вложенным JPEG. Для контроля сравните разрешение, цветовой режим и визуальные границы. Особенно внимательно проверьте тонкие полупрозрачные края и изображения из печатного макета CMYK.

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

Способ 4. PDF Candy: онлайн или локально

PDF Candy предлагает отдельный инструмент извлечения изображений, поэтому его не следует заменять соседней операцией PDF to JPG. Онлайн-вариант удобен для несекретных файлов и разовой задачи. Локальная версия предпочтительнее для документов с персональными данными, коммерческими материалами или большим объёмом.

Онлайн-вариант

  1. Откройте инструмент Extract Images from PDF.
  2. Нажмите Add file(s) или перетащите PDF в область загрузки.
  3. Дождитесь анализа. Не закрывайте вкладку, пока не появится экран результата.
  4. Скачайте отдельные файлы либо общий ZIP-файл. Сразу распакуйте его в пустую папку и проверьте расширения.
Страница PDF Candy Extract Images from PDF с кнопкой добавления файла
В онлайн-версии откройте инструмент извлечения изображений и добавьте PDF кнопкой Add file(s).

Локальная версия

  1. Запустите PDF Candy Desktop и найдите плитку Extract images.
  2. Добавьте PDF, укажите доступный диапазон и каталог назначения.
  3. Запустите извлечение. После окончания откройте папку через кнопку программы или файловый менеджер.
Окно PDF Candy Desktop с выделенным инструментом Extract images
В локальной версии найдите плитку Extract images, добавьте документ и сохраните найденные объекты в отдельную папку.

Сервис может возвращать JPEG, PNG, TIFF и другие распространённые варианты в зависимости от конкретного объекта и режима. Не переименовывайте расширение вручную: смена «.jpg» на «.png» не меняет кодирование. Если нужен единый формат, сначала сохраните результаты, затем выполните отдельную конвертацию копий.

Перед онлайн-загрузкой оцените чувствительность документа. Паспортные данные, медицинские сведения, закрытые договоры и внутренние макеты лучше не передавать стороннему веб-инструменту. Даже при заявленном автоматическом удалении локальная обработка уменьшает число участников, имеющих доступ к файлу.

Способ 5. PDF24 Creator: отдельный инструмент Extract PDF images

В PDF24 легко перепутать две соседние операции: PDF to Images создаёт изображения страниц, а Extract PDF images ищет вложенные растровые объекты. Для текущей задачи выбирайте именно вторую плитку.

  1. Откройте PDF24 Toolbox и найдите Extract PDF images.
  2. Добавьте документ. В веб-варианте используется окно выбора или перетаскивание; в локальном наборе файл можно открыть из проводника.
  3. Запустите обработку. При нескольких документах не смешивайте результаты: создайте отдельную папку для каждого PDF.
Окно PDF24 Toolbox с плиткой Extract PDF images
В наборе PDF24 выберите отдельный инструмент извлечения изображений, а не PDF to Images.
  1. После сообщения о завершении скачайте комплект и распакуйте ZIP-файл.
  2. Откройте несколько файлов разных размеров. Проверьте, не являются ли самые большие элементы страницами целиком и не записались ли маски отдельно как чёрно-белые изображения.
Экран PDF24 после обработки документа инструментом Extract images
После завершения задания скачайте комплект файлов и отдельно проверьте крупные изображения и прозрачность.

PDF24 полезен как быстрый кроссплатформенный вариант, но итог всё равно нужно проверять. Наличие десяти файлов ещё не означает, что найдено десять фотографий: PDF может содержать миниатюры, фоновые паттерны, маски, изображения только для печати и повторные копии одного объекта.

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

Способ 6. Sejda PDF Editor: сохранить каждое найденное изображение отдельным файлом

У Sejda есть отдельный модуль Extract images from PDF. Он доступен в браузере и в настольной версии. Начальный экран у вариантов похож, но путь передачи данных различается: веб-инструмент отправляет документ на обработку, Desktop выполняет операцию локально.

Sejda Desktop

  1. Откройте список инструментов и выберите Extract images from PDF.
  2. Нажмите Upload PDF files и укажите рабочую копию.
  3. Подтвердите извлечение и сохраните результат в отдельную папку.
Инструмент Sejda Extract images from PDF в настольном варианте
В Sejda Desktop откройте Extract images from PDF и выберите документ кнопкой Upload PDF files.

Sejda в браузере

  1. Откройте одноимённый веб-инструмент и нажмите Upload PDF files.
  2. Выберите локальный файл. Не загружайте документ с закрытыми данными, если для него доступен настольный вариант.
  3. После обработки скачайте результат и сразу проверьте, что файлы открываются.
Онлайн-инструмент Sejda Extract images from PDF с кнопкой загрузки
В веб-версии используется тот же отдельный инструмент; конфиденциальные документы лучше обрабатывать локально.

Если сервис возвращает меньше изображений, чем видно в документе, вероятны три причины. Во-первых, несколько видимых экземпляров ссылаются на один объект. Во-вторых, часть графики векторная. В-третьих, страница является сканом, и все элементы уже объединены в один растр. Определите причину до повторного запуска другого сервиса: одинаковые экстракторы часто дадут одинаковый набор.

Для объекта с мягкой тенью проверьте край на контрастном фоне. Белый или чёрный прямоугольник вокруг картинки означает потерю маски. В такой ситуации выгрузите PNG через инструмент, который объединяет базовое изображение и SMask, либо используйте скрипт из способа 11.

Способ 7. Coolmuster PDF Image Extractor: пакет файлов и точный диапазон страниц

Coolmuster рассчитан на пакетную работу: можно добавить отдельный PDF или папку, отметить документы, ограничить страницы и задать общий каталог вывода. Это удобно для серии отчётов с одинаковой структурой.

  1. Нажмите Add File для одного или нескольких документов либо Add Folder для каталога. В списке оставьте флажки только у файлов, которые должны быть обработаны.
Окно Coolmuster PDF Image Extractor со списком добавленных PDF
Добавьте один файл кнопкой Add File или целую папку кнопкой Add Folder и отметьте нужные документы.
  1. В правой части выберите All, Current или Range. Для диапазона введите номера страниц так, как показано в интерфейсе, и нажмите подтверждение рядом с полем.
  2. Укажите Output Folder. Для каждого исходного документа лучше заранее создать подпапку, иначе одинаковые имена могут перемешаться.
  3. Нажмите Start.
Панель Coolmuster PDF Image Extractor с диапазоном страниц и папкой вывода
Задайте All, Current или Range, затем укажите Output Folder до запуска обработки.

После завершения появляется сообщение Finished. Нажмите Show in folder и проверьте, что обработаны именно выбранные страницы. Для большого пакета сравните число исходных PDF и число созданных подпапок.

Сообщение Finished в Coolmuster PDF Image Extractor и кнопка Show in folder
После сообщения Finished откройте папку результата и сверьте диапазон страниц с настройкой.

Инструмент ориентирован на удобную выгрузку растров и часто используется с JPEG/JPG. Поэтому он менее подходящ для задачи, где критичны исходное кодирование, альфа-канал или печатный профиль. Если прозрачный объект получил фон, повторите работу в формате PNG через другой инструмент. Если фотография визуально нормальна, но стала заметно меньше по размеру, сравните её на 100% и проверьте, не было ли повторного сжатия.

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

Способ 8. PDFelement Pro: извлечь выбранный объект через режим Edit

PDFelement подходит, когда нужна конкретная фотография и её можно выбрать как объект. Путь через режим редактирования отличается от экспорта страниц: программа показывает рамку объекта и контекстную команду Extract Image.

  1. На главном экране нажмите Open files и выберите PDF.
Главное окно PDFelement с кнопкой Open files
Откройте PDF через Open files и дождитесь полной загрузки миниатюр страниц.
  1. Перейдите на вкладку Edit. Включите режим редактирования, при котором элементы страницы получают рамки.
  2. Щёлкните по нужной фотографии. Если выделяется вся страница, это скан, а не отдельный объект.
Документ в PDFelement с активной вкладкой Edit и режимом редактирования
Перейдите на вкладку Edit и включите режим, в котором изображение определяется как отдельный объект.
  1. Щёлкните по изображению правой кнопкой и выберите Extract Image.
  2. В диалоге сохранения задайте папку, понятное имя и формат. Не сохраняйте поверх другого результата.
Контекстное меню изображения в PDFelement с пунктом Extract Image
Щёлкните по объекту правой кнопкой и выберите Extract Image, затем задайте имя и формат файла.

Доступные форматы могут включать JPEG, PNG, GIF, TIFF и BMP. Практический выбор остаётся тем же: PNG для прозрачности и графики с резкими границами, JPEG для непрозрачной фотографии, TIFF для дальнейшего печатного процесса. GIF не подходит для полноцветной фотографии из-за ограниченной палитры.

Если контекстная команда отсутствует, проверьте режим Edit и ограничения безопасности. Не путайте OCR с извлечением: распознавание делает текст скана редактируемым, но не разделяет фотографию и бумажный фон внутри одного растрового листа.

Способ 9. Adobe Photoshop: выбрать Images в окне Import PDF

Photoshop умеет открывать PDF двумя принципиально разными способами. Режим Pages растрирует страницы. Режим Images показывает найденные растровые объекты. Для текущей задачи нужен второй вариант.

  1. Выберите File → Open и укажите PDF.
  2. В окне Import PDF переключитесь на Images. Не оставляйте Pages по умолчанию.
  3. Щёлкните по нужной миниатюре. Для нескольких объектов удерживайте Shift. Размер миниатюры можно изменить только для удобства выбора; это не меняет пиксели.
  4. Нажмите OK.
Диалог Import PDF в Adobe Photoshop с выбранным режимом Images
В окне Import PDF переключитесь с Pages на Images и выделите нужные миниатюры.

Выбранные объекты открываются как отдельные документы во вкладках. Сохраните каждый через File → Save a Copy или Export → Export As. Перед сохранением проверьте режим цвета, глубину, наличие прозрачного фона и размеры изображения.

Несколько извлечённых изображений открыты в отдельных вкладках Adobe Photoshop
Каждый выбранный объект открывается в своей вкладке; сохраните файлы по одному в подходящем формате.

Photoshop удобен, если после выгрузки требуется ретушь, цветокоррекция или подготовка прозрачности. Но это не лучший выбор для побайтового извлечения. Открытие в редакторе может преобразовать цветовой режим, развернуть профиль и записать новый файл. Не включайте изменение размеров при импорте и храните отдельную копию до редактирования.

Если в списке Images отсутствует видимая схема, вероятно, она векторная или уже входит в единый скан. Переключение на Pages даст её как отрисованную страницу, но это нужно обозначать как растрирование, а не как получение исходного объекта.

Способ 10. Adobe Acrobat Reader: сохранить один объект или сделать снимок области

Бесплатный Reader подходит для единичной картинки, если документ разрешает копирование и объект доступен для выбора. Это ручной способ: для десятков изображений лучше использовать пакетный инструмент.

  1. Откройте PDF и активируйте инструмент выбора.
  2. Щёлкните по изображению. При успешном распознавании вокруг него появляется рамка.
  3. Откройте контекстное меню. Выберите Save Image As, если команда доступна, либо Copy Image, затем вставьте содержимое в графический редактор и сохраните.
Контекстное меню изображения в Adobe Acrobat Reader с командами Copy Image и Save Image As
Выделите доступное изображение и используйте Copy Image или Save Image As, если эти команды разрешены.

При вставке из буфера не создавайте холст вручную меньшего размера. Новый документ должен принять размеры содержимого. Сохраняйте в PNG, если у объекта есть прозрачность или резкие линии. Для обычной фотографии используйте JPEG с высоким качеством, но помните, что повторная запись может добавить потери.

Take a Snapshot как запасной путь

Если объект не выбирается, откройте Edit → Take a Snapshot, обведите нужную область и вставьте её в редактор. Это уже снимок отрисованной страницы: качество зависит от масштаба и параметров рендеринга, а текст или фон внутри рамки попадут в картинку. Перед снимком увеличьте масштаб, но не обещайте исходное разрешение.

Меню Edit в Adobe Acrobat Reader с командой Take a Snapshot
Команда Take a Snapshot копирует отрисованную область страницы и применяется только как запасной вариант.

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

Способ 11. PyMuPDF: автоматическая выгрузка с xref, дедупликацией и масками

Скрипт полезен для сотен документов, повторяемого контроля и сложной структуры PDF. PyMuPDF позволяет получить список изображений страницы, прочитать xref, извлечь байты и узнать расширение. Один и тот же xref может использоваться на многих страницах, поэтому его нужно сохранять один раз.

  1. Установите Python и пакет PyMuPDF в отдельном виртуальном окружении.
  2. Положите рабочую копию PDF рядом со скриптом или укажите полный путь.
  3. Запустите код ниже. Он создаёт папку, перебирает страницы, пропускает повторные xref и записывает байты с расширением, которое сообщает библиотека.
from pathlib import Path
import hashlib
import pymupdf

src = Path("document.pdf")
out = Path("extracted")
out.mkdir(exist_ok=True)

doc = pymupdf.open(src)
seen_xrefs: set[int] = set()

for page_no, page in enumerate(doc, start=1):
    for image_no, item in enumerate(page.get_images(full=True), start=1):
        xref, smask = item[0], item[1]
        if xref in seen_xrefs:
            continue
        seen_xrefs.add(xref)

        info = doc.extract_image(xref)
        if not info:
            continue

        data = info["image"]
        ext = info["ext"]
        digest = hashlib.sha256(data).hexdigest()[:12]
        name = out / f"p{page_no:04d}_x{xref}_{digest}.{ext}"
        name.write_bytes(data)

        # Если smask > 0, прозрачность хранится отдельно.
        # Объединение маски описано ниже, исходный файл не удаляйте.

doc.close()

Консольный отчёт удобно расширить печатью номера страницы, xref, ширины, высоты, цветового пространства и smask. Так можно заранее увидеть, где находятся сотни мелких элементов и какие объекты требуют объединения с прозрачностью.

Консольный вывод скрипта PyMuPDF с количеством найденных изображений по страницам
Скрипт выводит число объектов на каждой странице; повторные xref следует отсеивать до записи файлов.

Как восстановить прозрачность из SMask

В списке page.get_images(full=True) второе значение элемента — xref мягкой маски. Если оно больше нуля, базовое изображение может выглядеть как прямоугольник без прозрачности. Для восстановления создайте Pixmap из базовых байтов, Pixmap из маски и объедините их:

base = pymupdf.Pixmap(doc.extract_image(xref)["image"])
mask = pymupdf.Pixmap(doc.extract_image(smask)["image"])
with_alpha = pymupdf.Pixmap(base, mask)
with_alpha.save(out / f"x{xref}_with_alpha.png")

Сохраняйте и исходный объект, и PNG с объединённой маской. Первый нужен для проверки кодирования, второй — для практического использования прозрачности. Если размеры базового изображения и маски не совпадают, не растягивайте маску автоматически: сначала проверьте, не относится ли она к другому ресурсу.

Проверка папки

Отсортируйте файлы по расширению и размеру. Не удивляйтесь JPEG, JPX, PNG и бинарным маскам в одном документе. Создайте хеш каждого файла: одинаковый хеш означает идентичные байты, даже если имена и страницы отличаются.

Папка Windows с набором изображений извлечённых скриптом PyMuPDF
Проверьте расширения, размеры и дубли в папке, а маски прозрачности объедините с базовыми объектами.

Для повреждённого PDF обход страниц может завершиться раньше времени. Альтернативный технический путь — перебирать xref документа и вызывать extract_image() для каждого номера, пропуская пустые ответы. Такой режим способен найти объект, который не достижим через нормальное дерево страниц, но требует строгой фильтрации масок и проверки принадлежности.

Что происходит с разрешением, форматом, цветом и масками

Пиксельные размеры важнее DPI

Встроенное изображение имеет ширину и высоту в пикселях. На странице оно может быть растянуто до любого физического размера. Запись 300 DPI в метаданных не добавляет пиксели и не определяет качество сама по себе. Для исходной выгрузки сначала сравнивайте фактические размеры, например 2400×1600, а уже затем вычисляйте пригодность для печати.

Если картинка 1200×800 размещена шириной 10 сантиметров, её эффективное разрешение около 305 пикселей на дюйм. Если тот же объект растянут на 30 сантиметров, эффективное разрешение заметно ниже, хотя файл остаётся тем же. Экстрактор должен вернуть 1200×800, а не произвольно увеличить изображение.

JPEG, JPEG 2000, PNG и TIFF

PDF может хранить JPEG-поток непосредственно. Инструмент, который записывает исходные байты, обычно сохраняет его быстро и без нового ухудшения. При выборе PNG программа декодирует JPEG и создаёт другой файл: пиксели могут выглядеть одинаково, но объём станет больше, а исходное сжатие не восстановится.

JPEG 2000 часто встречается в сканах и печатных документах. Не каждый просмотрщик удобно открывает JP2/JPX, поэтому практическая копия в PNG или TIFF может быть нужна. Оригинальный поток всё равно стоит сохранить отдельно, если важна экспертиза или повторная обработка.

PNG хранит альфа-канал и подходит для графики с прозрачностью. TIFF полезен для больших сканов и профессиональных цепочек, но параметры сжатия и число каналов нужно проверять. BMP почти всегда создаёт большой файл и редко даёт преимущество, кроме совместимости со старым ПО.

Мягкая маска и маска-трафарет

Прозрачность в PDF нередко находится в отдельном объекте SMask. Базовое изображение содержит цвет, а маска — степень непрозрачности каждого пикселя. Простой экстрактор может сохранить два файла: цветной прямоугольник и чёрно-белую маску. Корректный экспорт в PNG объединяет их в RGBA.

Маска-трафарет работает иначе: она может задавать форму, которую страница окрашивает текущим цветом. Такой объект без контекста иногда выглядит как одноцветная картинка. Чтобы воспроизвести вид страницы, нужно учитывать команды рисования и цвет, а не только байты маски.

RGB, CMYK, Gray и ICC-профили

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

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

Повторное использование одного объекта

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

Обрезка на странице не обязательно меняет картинку

Видимая область может быть ограничена clipping path. Внутри PDF при этом остаётся полное изображение, включая скрытые края. Настоящее извлечение вернёт полный растр, а снимок страницы — только видимую часть. Это особенно важно для фотографий, которые дизайнер обрезал рамкой в макете.

Растровая фотография, векторная схема и скан: разные рабочие процессы

Отдельная растровая фотография

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

Схема из векторных объектов

Экстрактор растров может вернуть только внедрённые фрагменты, но пропустить линии, стрелки и подписи. Откройте нужную страницу в редакторе, который понимает векторный PDF, выделите группу объектов и экспортируйте в SVG, PDF или PNG. При экспорте в PNG задайте размер или DPI один раз и не увеличивайте готовый файл.

Векторная схема может включать встроенные фотографии. Тогда полезно сохранить два результата: исходные растры отдельными файлами и композицию целиком из векторного редактора. Они решают разные задачи.

Сканированная страница

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

OCR не увеличивает качество картинки. Он добавляет распознанный текстовый слой и облегчает поиск. Перед OCR сохраняйте скан в исходном разрешении; после распознавания не заменяйте им графический оригинал.

Фотография, нарезанная на плитки

Некоторые оптимизаторы делят большой растр на несколько прямоугольных объектов. Экстрактор выдаёт набор плиток. По отдельности они выглядят как фрагменты. Для восстановления расположения нужны матрицы трансформации страницы либо рендер области. Не склеивайте плитки только по именам: порядок сохранения не всегда совпадает с визуальным порядком.

Особые случаи: защита, подпись, формы и повреждения

Документ просит пароль на открытие

Без пароля программа не может прочитать структуру и извлечь объекты. Получите пароль законным способом. После открытия сохраняйте результат в отдельную папку. Не записывайте пароль в имя файла, командную строку общего журнала или публичный скриншот.

Открывается, но копирование запрещено

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

Электронная подпись

Извлечение во внешнюю папку не требует сохранения PDF. Закройте документ без записи изменений. Если редактор предлагает оптимизацию, восстановление или обновление структуры, откажитесь для оригинала и применяйте это только к копии. Состояние подписи проверяйте в приложении, которое умеет валидировать её цепочку.

PDF-форма и значки кнопок

Внешний вид поля может храниться в Appearance Stream. Обычный список изображений страницы не всегда включает ресурсы этого потока. Если логотип внутри кнопки не найден, откройте форму в редакторе объектов или используйте программный обход ресурсов аннотаций. Для визуальной копии конкретного состояния формы допустим рендер страницы, но он не является исходным значком.

Вложения внутри PDF

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

Повреждённая таблица xref

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

Пустой результат при видимых картинках

Проверьте, не является ли страница единым сканом, а графика — векторной. Затем отключите фильтр минимального размера. Если нулевой результат сохраняется, попробуйте программный обход xref. Не делайте вывод о неисправности по одной программе.

Как проверить полученные файлы

1. Количество

Сравните число файлов с ожидаемыми уникальными объектами, а не только с числом фотографий на страницах. Повторы, маски и миниатюры объясняют расхождение. Создайте список по страницам для контрольных кадров.

2. Пиксельные размеры

Откройте свойства изображения. Запишите ширину и высоту. Если фотография в документе выглядит крупной, а файл имеет 120×80 пикселей, возможно, вы получили миниатюру. Найдите другой объект с тем же сюжетом или отключите фильтрацию.

3. Прозрачность

Покажите PNG на тёмном и светлом фоне. Белый прямоугольник по краям означает отсутствие альфа-канала. Серый ореол может появиться, если цветные пиксели уже были смешаны с белым фоном до извлечения.

4. Цвет

Сравнивайте в приложениях с поддержкой профилей. Различие между CMYK-оригиналом и RGB-просмотром не всегда является ошибкой. Проверьте встроенный ICC-профиль, число каналов и намерение преобразования.

5. Сжатие

Увеличьте изображение до 200–400% и посмотрите на мелкие контрастные детали. Новые блоки JPEG вокруг текста и линий указывают на повторное сжатие. Для критичной задачи сохраните исходный поток через программный инструмент.

6. Полнота кадра

Настоящее извлечение может вернуть скрытые края, обрезанные рамкой на странице. Это не ошибка. Сохраните полный объект как мастер-копию, а видимую обрезку создайте отдельно.

7. Дубли

Сравните SHA-256 или другой устойчивый хеш. Одинаковые хеши можно объединить в один файл, сохранив таблицу страниц, где объект встречается. Визуально похожие изображения с разным хешем не удаляйте автоматически: одно может иметь другой профиль, маску или разрешение.

8. Открываемость

Проверьте файлы минимум в двух просмотрщиках. Редкий JPEG 2000 или CMYK JPEG может корректно извлечься, но не открыться в простом приложении. Сохраните оригинал и сделайте совместимую копию, не заменяя мастер-файл.

Типичные ошибки и точные исправления

В папке лежат целые страницы

Причина: выбран экспорт PDF в JPG/PNG без флажка извлечения всех изображений. Исправление: вернитесь в инструмент, включите «Экспортировать все изображения» или выберите отдельную плитку Extract images.

Получились только чёрно-белые силуэты

Причина: сохранены маски прозрачности, а не цветные объекты. Исправление: найдите связанные xref и объедините базовый растр с SMask либо экспортируйте в PNG приложением, которое делает это автоматически.

Картинка имеет белый фон

Причина: выбран JPEG или потеряна маска. Исправление: повторите экспорт в PNG. Если фон уже смешан с пикселями, восстановить идеальные полупрозрачные края автоматически может быть невозможно.

Цвета стали тусклыми или слишком насыщенными

Причина: преобразование CMYK/RGB без правильного профиля. Исправление: сохраните исходный поток, проверьте ICC-профиль и выполните управляемое преобразование в редакторе.

Файл стал больше в десять раз

Причина: встроенный JPEG декодирован в PNG или несжатый BMP. Исправление: это не обязательно потеря качества. Для хранения фотографии используйте исходный JPEG; PNG оставьте только там, где нужна прозрачность или графика без потерь.

Нет диаграммы, хотя она видна

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

Одна фотография разбита на несколько файлов

Причина: плиточная оптимизация или отдельные слои. Исправление: используйте данные размещения для сборки либо экспортируйте видимую область страницы. Не склеивайте на глаз до сохранения отдельных частей.

Программа сохраняет сотни одинаковых логотипов

Причина: каждый вызов объекта записан отдельно или PDF содержит дубли. Исправление: вычислите хеши и удалите только побайтово одинаковые копии, сохранив список страниц.

Нужная картинка пропала после фильтра мелких объектов

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

Контекстное меню не показывает сохранение

Причина: объект не выделен, страница является сканом, активен не тот режим или действуют ограничения. Исправление: включите выбор/редактирование, проверьте безопасность и попробуйте пакетный экстрактор. Снимок используйте только с явным пониманием потери исходного качества.

После работы подпись стала недействительной

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

Скрипт записал один и тот же объект много раз

Причина: отсутствует набор уже обработанных xref. Исправление: добавляйте xref в seen_xrefs и при необходимости дополнительно сравнивайте хеш байтов.

Скрипт пропустил видимое изображение

Причина: объект находится во вложенной форме, аннотации, нестандартном потоке либо страница повреждена. Исправление: используйте расширенный обход ресурсов или перебор xref и сравните с рендером страницы.

Какой способ выбрать

Ситуация Оптимальный путь Главная проверка
Нужно быстро достать все картинки на Windows PDF Commander или Acrobat Pro Выбрана команда извлечения, а не экспорт страниц
Нужны изображения только с нескольких страниц Icecream PDF Editor или Coolmuster Диапазон страниц указан верно
Нельзя устанавливать приложение PDF Candy, PDF24 или Sejda в браузере Документ не содержит закрытых данных
Нужна одна выбираемая фотография PDF Commander, PDFelement или Acrobat Reader Выделяется отдельный объект, а не лист целиком
После выгрузки требуется ретушь Photoshop в режиме Images Выбран Images, а не Pages
Сотни PDF и повторяемый процесс PyMuPDF Есть дедупликация xref и обработка SMask
Векторная схема Векторный редактор или рендер области Не выдавать растр страницы за исходный объект
Скан с фотографией внутри Извлечение растра страницы и обрезка копии Сохранены исходные пиксельные размеры скана
Подписанный PDF Любая операция без сохранения документа Оригинал закрыт без изменений
Объект с прозрачностью PNG через Acrobat либо PyMuPDF с SMask Край проверен на светлом и тёмном фоне

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

Частые вопросы

Можно ли извлечь картинку без потери качества?

Да, если она хранится отдельным растровым объектом и инструмент сохраняет исходный поток либо корректно декодирует его без масштабирования. Для JPEG предпочтительно извлечение байтов. Для объекта с маской практический результат часто сохраняют в PNG.

Почему изображение из PDF меньше, чем выглядит на странице?

Размер на странице задаётся матрицей масштабирования. Маленький растр можно растянуть визуально. Экстрактор возвращает фактические пиксели, поэтому файл может быть меньше ожидаемого и при этом полностью соответствовать содержимому PDF.

Почему фотография после извлечения стала больше по объёму?

Вероятно, сжатый JPEG был записан как PNG или BMP. Увеличение размера файла не означает появление деталей. Сравните пиксельные размеры и формат.

Можно ли достать все изображения из скана?

Из скана обычно извлекается одна картинка страницы. Отдельные фотографии внутри неё не существуют как самостоятельные PDF-объекты. Их нужно обрезать из выгруженного растра.

Зачем сохранять маску отдельно?

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

Почему один и тот же логотип встречается на каждой странице, а файл только один?

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

Почему экстрактор выгрузил фон и пиктограммы?

Он перечисляет растровые ресурсы, а не понимает редакционную ценность каждого элемента. Используйте порог размера осторожно или фильтруйте после выгрузки.

Что лучше для прозрачной картинки: JPEG или PNG?

PNG. JPEG не хранит альфа-канал. Если сохранить прозрачный объект в JPEG, пустые области будут заполнены выбранным фоном.

Можно ли получить векторную схему как SVG?

Обычный экстрактор растров — нет. Откройте страницу в редакторе, который понимает векторный PDF, выделите нужные объекты и экспортируйте их. Сложные эффекты и шрифты после импорта нужно проверить.

Поможет ли OCR разделить фотографию и текст на скане?

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

Как понять, что картинка пересжата?

Сравните размер, формат и вид мелких контрастных деталей. Новый JPEG часто показывает дополнительные блоки и ореолы. Побайтовое сравнение возможно только при сохранении исходного потока.

Как извлечь картинки только со страниц 20–30?

Используйте инструмент с выбором страниц, например Icecream или Coolmuster. В скрипте проверяйте номера страниц до обхода объектов. Помните о разнице между нумерацией интерфейса с 1 и индексами с 0.

Можно ли работать с PDF, защищённым паролем?

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

Изменится ли электронная подпись?

Выгрузка во внешнюю папку сама по себе не меняет документ. Подпись может стать недействительной, если редактор пересохранит PDF. Закройте оригинал без сохранения.

Почему программа не находит картинку в кнопке формы?

Значок может находиться в потоке внешнего вида аннотации, а не в ресурсах страницы. Нужен редактор формы или программный обход ресурсов виджетов.

Как удалить точные дубли?

Вычислите SHA-256 каждого файла и объединяйте только совпадающие хеши. Совпадающий сюжет при разном хеше может иметь другое разрешение, профиль или маску.

Нужно ли задавать 300 или 600 DPI?

Для извлечения исходного объекта обычно нет: важны его пиксели. DPI нужен при растрировании страницы или при расчёте физического размера печати.

Что делать с JPX или JPEG 2000?

Сохраните оригинальный файл, затем сделайте совместимую копию в PNG или TIFF. Не удаляйте исходный поток после конвертации.

Почему после PNG появился цветной ореол по краю?

Возможна неправильная интерпретация предварительно умноженной прозрачности или смешивание с фоном до экспорта. Сравните другой экстрактор и вариант с ручным объединением SMask.

Какой способ самый точный для технической проверки?

Программное извлечение с сохранением байтов, xref, smask, размеров, расширения и хеша. Для повседневной работы удобнее графический инструмент, но его результат стоит сравнить с техническим при спорных объектах.

Контрольный чек-лист перед использованием картинок

  • PDF не был изменён, а подписанный оригинал закрыт без сохранения.
  • Использовалась команда извлечения объектов, если требовались именно встроенные картинки.
  • Пиксельные размеры каждого важного файла записаны и проверены.
  • Прозрачность проверена на двух контрастных фонах.
  • Цветовой профиль и режим известны для печатных материалов.
  • Векторные схемы не потеряны из-за применения только растрового экстрактора.
  • Дубли удалены по хешу, а не по похожим именам.
  • Для скана сохранён полный растр страницы до обрезки.
  • Оригинальные потоки сохранены отдельно от совместимых PNG или TIFF.
  • Права на дальнейшее использование изображений проверены.

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

Пошаговый протокол для многостраничного документа

Когда PDF содержит сотни страниц, запуск первого попавшегося экстрактора без предварительного плана создаёт трудно проверяемую папку. Работу лучше разделить на короткую пробу, основную выгрузку и контрольное сравнение. Такой порядок экономит время и позволяет понять, где программа меняет формат или теряет маски.

Проба на трёх типовых страницах

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

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

Основная выгрузка

Создайте каталог с именем документа и подпапки original-streams, usable-png, page-renders и review. В первую помещайте байтовые объекты, во вторую — версии с восстановленной прозрачностью, в третью — только действительно нужные отрисованные страницы, в четвёртую — спорные элементы. Такое разделение не позволяет случайно принять снимок страницы за исходную фотографию.

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

Контрольное сравнение

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

Если один инструмент даёт PNG с прозрачностью, а другой — цветной файл и отдельную серую маску, оба результата могут описывать один объект. Объедините маску с базовым растром, затем сравните итоговые пиксели. Не удаляйте промежуточные файлы до завершения проверки.

Фиксация исключений

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

Как распознавать служебные и необычные объекты

Миниатюры и предварительные копии

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

Фоновые текстуры

Небольшой узор может многократно повторяться по странице. Экстрактор сохранит один маленький квадрат, хотя визуально фон занимает весь лист. Это корректно: повтор создаётся командами размещения. Для повторного дизайна полезен сам тайл; для копии внешнего вида страницы нужен рендер.

Однопиксельные и очень узкие изображения

Объект шириной один пиксель может служить градиентом, полосой или технической маской. Не считайте его повреждённым автоматически. Посмотрите, где xref используется на странице и с каким масштабом. Узкий растр, растянутый на сотни пикселей, может формировать разделитель или фон.

Чёрные прямоугольники

Чёрный результат часто является маской, изображением в необычном цветовом пространстве или объектом с инвертированной декодирующей функцией. Откройте сведения о числе компонентов и проверьте связь со smask. Если объект используется как stencil, его цвет задаётся командами страницы и в самом файле отсутствует.

Негативные изображения

Некоторые потоки содержат инвертированный диапазон Decode. Простой экстрактор сохраняет байты без применения этой инструкции, поэтому файл выглядит негативом. Для практической копии примените корректное декодирование или экспортируйте через приложение, которое учитывает параметры объекта. Сырой поток сохраните отдельно.

Раздельные цветовые каналы

В специализированных печатных PDF встречаются изображения, связанные с дополнительными красками или масками. Обычное преобразование в RGB может потерять смысл отдельного канала. Для полиграфической задачи фиксируйте ColorSpace и профиль, а окончательную конвертацию выполняйте в управляемой цветовой среде.

Встроенный значок с несколькими состояниями

Кнопка формы может иметь обычное, наведённое и нажатое состояние. Они хранятся раздельно и могут отличаться. Если нужен полный комплект интерфейса, проверьте все состояния Appearance Stream, а не только то, которое видно при открытии документа.

Изображение внутри Form XObject

Страница может вызывать вложенную форму, а уже внутри неё находится растр. Некоторые простые алгоритмы находят только прямые ресурсы страницы. Современные библиотеки обычно обходят вложения, но при пропуске нужно рекурсивно проверять ресурсы Form XObject.

Объекты, находящиеся за пределами CropBox

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

Имена файлов, метаданные и воспроизводимость

Автоматические имена вида image-1.jpg удобны только для короткой операции. В большом проекте они не показывают документ, страницу и объект. Надёжная схема включает краткое имя PDF, номер страницы, xref или порядковый номер, размеры и при необходимости пометку маски: report_p0042_x187_2400x1600.jpeg.

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

Расширение должно соответствовать кодированию

Определяйте тип по данным или ответу библиотеки, а не по желаемому названию. JPEG с расширением PNG остаётся JPEG и может неправильно обрабатываться некоторыми системами. Для преобразования откройте файл декодером и запишите новый поток в выбранном формате.

Метаданные изображения

При извлечении могут потеряться EXIF, XMP и комментарии, потому что PDF хранит растровые данные отдельно от исходного файла камеры. Отсутствие даты съёмки после выгрузки не доказывает ошибку. Если метаданные критичны, запросите исходный JPG у владельца документа.

Хеш исходного потока и хеш пикселей

Хеш файла отвечает на вопрос, совпадают ли байты. Два JPEG с одинаковой картинкой, но разными таблицами сжатия, имеют разные хеши. Для сравнения визуального содержимого можно декодировать оба файла в одинаковое пространство и вычислить хеш массива пикселей. Эти две проверки дополняют друг друга.

Журнал действий

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

Сравнение двух результатов без субъективной оценки

Шаг 1. Приведите файлы к сопоставимому виду

Не сравнивайте CMYK JPEG и RGB PNG только по размеру файла. Сначала запишите их исходные свойства, затем создайте временные копии в одном цветовом пространстве и с одинаковой глубиной. Оригиналы не изменяйте.

Шаг 2. Проверьте геометрию

Ширина и высота должны совпадать для одного объекта. Если различие ровно в два раза, один инструмент мог применить масштаб или выбрать миниатюру. Если размеры отличаются на несколько пикселей, проверьте, не добавлена ли рамка и не была ли применена обрезка.

Шаг 3. Сравните альфа-канал

Для PNG проверьте наличие четвёртого канала и диапазон его значений. Полностью непрозрачный альфа-канал не восстанавливает мягкую тень. Сравните край на шахматном фоне и посмотрите, есть ли плавные значения между 0 и 255.

Шаг 4. Постройте разностное изображение

После приведения к одинаковому RGB вычислите абсолютную разницу пикселей. Полностью чёрная разница означает совпадение. Слабый равномерный сдвиг может быть следствием профиля; блоки вокруг контрастных границ указывают на разное JPEG-сжатие; заметный контур по периметру — на различную обработку прозрачности.

Шаг 5. Проверьте скрытые края

Один результат может содержать полный растр, а другой — видимую обрезку. Наложите их с учётом области страницы. Полный объект предпочтителен как мастер-копия, но для повторения макета потребуется сохранить координаты clipping path.

Шаг 6. Зафиксируйте решение

Выберите мастер-файл по задаче: байтовый оригинал для хранения, PNG с маской для дизайна, TIFF с профилем для печати или рендер области для композиции. Не объявляйте один вариант «лучшим» без указания критерия.

Сценарии, в которых выбор инструмента меняется

Каталог товаров

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

Научная статья

График может быть векторным, подписи — текстом, а микрофотография — растром. Сохраните микрофотографию экстрактором, график откройте как векторную страницу, а композицию целиком экспортируйте отдельно. Для измерений не используйте снимок экрана без масштаба.

Презентация, сохранённая в PDF

Фон, фотографии и прозрачные тени часто хранятся раздельно. Извлечение вернёт элементы, но не их расположение. Если требуется восстановить слайд, дополнительно сохраните страницу целиком или импортируйте её в редактор с сохранением объектов.

Отсканированный журнал

Каждая страница, как правило, единый JPEG или JPEG 2000. Выгрузите листы, определите фактическое разрешение, затем обрезайте фотографии. Автоматическое разделение колонок не восстанавливает скрытые части кадров, закрытые текстом или рамкой.

Технический чертёж

Линии, размеры и надписи чаще векторные. Растровый экстрактор может найти только вставленный логотип или подложку. Для точной геометрии используйте векторный импорт и проверяйте единицы измерения, шрифты и толщины линий.

Заполненная форма

Подпись от руки может быть аннотацией, изображением, внешним видом поля или частью плоского растра после печати в PDF. Сначала определите тип. Сохранение одной видимой области не гарантирует получение исходного штриха или прозрачного объекта.

Электронная книга

Обложка может храниться в высоком разрешении, а иллюстрации — повторно использоваться в тексте. Удаляйте дубли по хешу и сохраняйте таблицу глав или страниц. Встроенные шрифтовые глифы и декоративные векторы не появятся среди растров.

Печатный макет

Ожидайте CMYK, ICC-профили, обрезку по рамке и изображения за пределами видимой области. Для передачи в дизайн храните исходный поток, профиль и полный растр. RGB-копию создавайте отдельно для экрана.

Дополнительная техническая проверка структуры PDF

Когда графическая программа даёт спорный результат, полезно проверить документ независимым анализатором. Цель не в том, чтобы заменить удобный интерфейс, а в том, чтобы подтвердить число объектов, их размеры, кодирование и связи с масками.

Список изображений по страницам

Для каждого листа запишите xref, smask, ширину, высоту, число компонентов и имя ресурса. Если один xref встречается на нескольких страницах, это повторное использование. Если на странице видна фотография, но в списке нет подходящего растра, проверьте вложенные Form XObject и аннотации.

Перебор таблицы xref

При повреждённой структуре обход страниц может пропустить доступные потоки. Последовательный вызов extract_image() для допустимых xref помогает найти дополнительные объекты. Пустой ответ означает, что запись не является изображением. Результаты нужно сопоставлять со страницами отдельно.

Проверка фильтров

PDF-поток может использовать DCTDecode, JPXDecode, FlateDecode, CCITTFaxDecode, JBIG2Decode или сочетание фильтров. DCT обычно соответствует JPEG, JPX — JPEG 2000, Flate часто применяется к PNG-подобным данным или маскам. Название фильтра помогает понять, почему размер и расширение отличаются.

DecodeParms и Decode

Параметры предиктора, числа цветов и битов влияют на декодирование. Массив Decode может инвертировать значения или задавать нестандартный диапазон. Если байтовый файл выглядит неправильно, проблема может быть не в потоке, а в неучтённой инструкции PDF.

Матрица размещения

Размер объекта на странице определяется текущей матрицей преобразования. Из неё можно вычислить масштаб, поворот и отражение. Это важно для плиток, скрытых краёв и случаев, когда один растр показывается в разных размерах.

Границы страницы

MediaBox задаёт физическую область носителя, CropBox — видимую область, BleedBox и TrimBox — выпуск и конечную обрезку. Объект за CropBox может быть частью печатного макета. Не удаляйте его, пока не проверите остальные границы.

Результат проверки

Сводка должна отвечать на пять вопросов: сколько уникальных растров есть; сколько визуальных вхождений; какие объекты имеют маски; какие элементы векторные; какие страницы являются едиными сканами. После этого выбор инструмента становится однозначным.

Контроль качества для разных типов изображений

Фотография с плавными градиентами

Откройте файл при масштабе 100%, затем 300%. На первом просмотре оцените общий цвет и отсутствие обрезки, на втором — блоки JPEG в тенях, ореолы вокруг контрастных деталей и полосы в градиентах. Если исходный поток JPEG сохранён без изменения, новые артефакты появиться не должны. При повторной записи сравните результат с байтовой копией.

Скриншот интерфейса или схема с мелким текстом

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

Логотип с прозрачностью

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

Чёрно-белый текстовый скан

Проверьте, не превратился ли 1-битный растр в размытый серый JPEG. Для документов с чистым текстом полезно сохранить оригинальный поток и отдельную совместимую TIFF- или PNG-копию. При рендере страницы отключите нежелательное сглаживание, если задача связана с распознаванием или измерением штрихов.

CMYK-фотография

Запишите профиль, число каналов и способ отображения до конвертации. Сравнение в приложении без управления цветом может вводить в заблуждение. Создавайте RGB-версию только как производную копию, фиксируя профиль назначения. Для печати не заменяйте исходный CMYK-файл автоматически.

Изображение с мелкой печатью или QR-кодом

Не применяйте фильтр минимального размера до первой полной выгрузки. После сохранения проверьте, что модульный рисунок QR-кода не размыт и считывается. Для печати важны фактические пиксели и отсутствие повторного JPEG-сжатия; увеличение изображения после извлечения не восстанавливает квадратные модули.

Панорама или очень широкий объект

Некоторые просмотрщики показывают широкую картинку уменьшенной, из-за чего её можно ошибочно принять за миниатюру. Ориентируйтесь на пиксельные размеры и соотношение сторон. Проверьте, не разделён ли объект на полосы и не отражён ли матрицей размещения.

Изображение, повёрнутое на странице

Растровый объект может храниться без поворота, а ориентация задаётся матрицей страницы. Экстрактор вернёт файл в собственной ориентации. Это нормально. Сохраните мастер-копию без поворота, а для повторения макета примените поворот к отдельной версии.

Что делать, если ни один интерфейсный инструмент не дал ожидаемый файл

  1. Проверьте тип страницы. Выделяется ли текст, пикселизуется ли весь лист, остаются ли линии гладкими при сильном увеличении.
  2. Отключите порог размера. Нужный объект мог оказаться меньше фильтра или храниться как миниатюра с масштабированием.
  3. Сравните два движка. Откройте копию в другом приложении. Различие результатов указывает на нестандартную структуру или ошибку декодирования.
  4. Проверьте вложенные формы и аннотации. Изображение может находиться не в прямых ресурсах страницы.
  5. Переберите xref программно. Сохраняйте только непустые ответы extract_image(), записывая xref, smask и формат.
  6. Сопоставьте объект с размещением. Для плиток и скрытых краёв нужны матрицы и clipping path.
  7. Сделайте контролируемый рендер. Если графика векторная или уже объединена в скан, сохраните область страницы с явно заданным разрешением и подпишите результат как отрисованную копию.
  8. Запросите оригинал. Для печати, ретуши и юридически значимых материалов исходный графический файл часто надёжнее любого извлечения из PDF.

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