Невидимый текстовый слой 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 ReportOverviewCloud migration completed ahead of schedule. Three critical services weremoved to the new cluster.Key MetricsUptime: 99.97%Latency: 42ms avg (down from 68ms)Cost: $12,400/mo (down 34%)Action ItemsMigrate remaining batch jobs by Q3Set up automated failover for db-westReview cost allocation per team
Умный PDF после конвертации:
# Quarterly Infrastructure Report## OverviewCloud 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/pdxuv syncuv run uvicorn api:app --reload --port 8000

Теперь запускаем программу просмотра (viewer) в другой консоли:
cd adaptivepdf/viewernpm installnpm 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 для интеграции библиотеки в сторонние сервисы.
ссылка на оригинал статьи https://habr.com/ru/articles/1058328/