
Невидимый текстовый слой 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 загружается слой с размеченным текстом.
Адаптивный PDF
Конвертацию выполняют утилиты вроде Adaptivepdf.
Для примера, примерно так выглядит текст в PDF до конвертации:
Quarterly Infrastructure Report Overview Cloud migration completed ahead of sch edule. Three critical services were moved to the new cluster. Key Metrics Uptime: 99.97% Latency: 42ms avg (down from 68ms) Cost: $12,400/mo (down 34%) Action Items Migrate remaining batch jobs by Q3 Set up automated failover for db-west Review cost allocation per team
Умный PDF после конвертации:
# Quarterly Infrastructure Report ## Overview Cloud migration completed ahead of schedule. Three critical services were moved to the new cluster. ## Key Metrics | Metric | Value | |---------|---------------------------| | Uptime | 99.97% | | Latency | 42ms avg (down from 68ms) | | Cost | $12,400/mo (down 34%) | ## Action Items - Migrate remaining batch jobs by Q3 - Set up automated failover for db-west - Review cost allocation per team
Утилита доступна в онлайновой версии. Для обработки файлов применяется питоновская библиотека Pymupdf, в том числе расширение Pymupdf4llm, которое преобразует PDF в чистый, структурированный документ.

Конвертер распознаёт PDF, извлекает и форматирует текст и картинки, а затем позволяет отредактировать документ в браузере и сохранить результат в .md или новый .pdf.
Бэкенд работает и локально (нужен Python 3.12 и менеджер пакетов uv):
Скрипт для установки uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
Клонируем репозиторий:
git clone https://github.com/iminoaru/adaptivepdf
В репозитории две папки: /pdx (конвертер) и /viewer (программа просмотра и редактор на Next.js).
Запуск конвертера:
cd adaptivepdf/pdx uv sync uv run uvicorn api:app --reload --port 8000

Теперь запускаем программу просмотра (viewer) в другой консоли:
cd adaptivepdf/viewer npm install npm run dev

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

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

Pymupdf4llm
Вышеупомянутая утилита Pymupdf4llm требует минимальной настройки и работает из коробки, конвертер не нуждается в GPU-ускорителе и не выдвигает особых требований к памяти.
Pymupdf4llm может извлекать данные в Markdown, JSON и TXT, поддерживает интеграции с LlamaIndex и LangChain.
Другие функции:
Обработка страниц, свёрстанных в несколько столбцов
Извлечение изображений и векторной графики
Анализ макета для лучшего семантического понимания структуры документа
Поддержка вывода страниц по частям (page chunking)
Автоматическое обнаружение страниц, которые нуждаются в OCR, и поддержка различных OCR-движков
Есть также программные интерфейсы Pymupdf4llm для интеграции библиотеки в сторонние сервисы.
