Невидимый слой PDF с инструкциями для ботов

Невидимый слой PDF с инструкциями для ботов

Невидимый текстовый слой PDF можно редактировать и экспортировать в Markdown, JSON и TXT. Такие документы называются адаптивными PDF , они созданы для чтения и людьми, и роботами. Люди видят обычный PDF, а роботы — отдельный слой ActualText с текстом в Markdown и картинками в base64.

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

В спецификации PDF (с версии PDF 1.4, 2001) есть свойство для указания «текста замещения» к выделенному контенту. Программы рендеринга игнорируют текст замещения и просто выводят на экран то, что указано в основном потоке. Но программы для извлечения текста PyMuPDF , Poppler и др. поддерживают этот слой.

Этот слой разработан для указания лигатур и символов, которые не соответствуют стандарту Unicode. Например, визуальный глиф “fi” в этом текстовом слое указывается как два отдельных символа “f” и “i”.

Но сейчас, в эпоху автоматизированных инструментов для обработки PDF, этот слой начали использовать специально для экспорта в LLM. Текст замещения прикрепляется к основному потоку контента через последовательности размеченного содержимого (Tagged PDF), так что экстракторы возвращают структурированный Markdown. Таким образом, обычный рендеринг PDF работает как и раньше, а вот в LLM загружается слой с размеченным текстом.

Конвертацию выполняют утилиты вроде Adaptivepdf .

Для примера, примерно так выглядит текст в PDF до конвертации:

Умный PDF после конвертации:

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

Конвертер распознаёт PDF, извлекает и форматирует текст и картинки, а затем позволяет отредактировать документ в браузере и сохранить результат в .md или новый .pdf.

Бэкенд работает и локально (нужен Python 3.12 и менеджер пакетов uv ):

Скрипт для установки uv :

Клонируем репозиторий:

В репозитории две папки: /pdx (конвертер) и /viewer (программа просмотра и редактор на Next.js).

Запуск конвертера:

Теперь запускаем программу просмотра (viewer) в другой консоли:

После этого можно открывать в браузере http://localhost:3000 — и загружать PDF. Программа просмотра по умолчанию использует http://localhost:8000 , но это можно изменить переменной NEXT_PUBLIC_API_URL в настройках.

Примечание . Теоретически, невидимый (для людей) слой с текстом можно использовать для направленных атак, размещая там скрытые промты. Например, для обхода HR-ботов, которые сканируют резюме кандидатов :

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

Pymupdf4llm может извлекать данные в Markdown, JSON и TXT, поддерживает интеграции с LlamaIndex и LangChain .

Другие функции:

Обработка страниц, свёрстанных в несколько столбцов

Обработка страниц, свёрстанных в несколько столбцов

Извлечение изображений и векторной графики

Извлечение изображений и векторной графики

Анализ макета для лучшего семантического понимания структуры документа

Анализ макета для лучшего семантического понимания структуры документа

Поддержка вывода страниц по частям (page chunking)

Поддержка вывода страниц по частям (page chunking)

Автоматическое обнаружение страниц, которые нуждаются в OCR, и поддержка различных OCR-движков

Автоматическое обнаружение страниц, которые нуждаются в OCR, и поддержка различных OCR-движков

Есть также программные интерфейсы Pymupdf4llm для интеграции библиотеки в сторонние сервисы.

← Cybersecurity