﻿# PDF в Markdown для RAG: порядок чтения до индексации

Преобразование PDF в Markdown должно сохранять порядок чтения до построения индекса RAG: даже правильно распознанные слова способны составить неверный документ.

Автор: Команда Retrivium
Обновлено: 2026-11-03
Канонический URL: https://retrivium.ai/ru/journal/pdf-to-markdown-reading-order-rag/
Language: ru

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

## Определить макет перед уплощением

[Технический отчёт Docling](https://arxiv.org/abs/2408.09869) описывает преобразование с учётом макета. PDF задаёт расположенные объекты, порядок хранения которых может отличаться от человеческого чтения. Слишком раннее объединение способно перемешать соседние колонки или отделить подпись от рисунка. До выбора правил изучают представительную выборку макетов, особенно если коллекция объединяет брошюры, руководства и сканированные формы. Один удачный простой файл не подтверждает корректную работу на всех этих типах документов.

## Сохранить структурные объекты

[Модель DoclingDocument](https://docling-project.github.io/docling/concepts/docling_document/) представляет иерархию и происхождение документа. Этот структурированный артефакт хранят рядом с Markdown. Абзацы, заголовки, таблицы и служебные элементы страницы имеют разные роли. Повторяющийся колонтитул не должен начинать каждый найденный фрагмент, однако подпись таблицы может быть обязательным контекстом. Безусловное удаление всего повторяющегося текста тоже опасно: так можно потерять содержательные названия разделов и предупреждения, которые автор намеренно повторил рядом с разными процедурами.

## Проверить двухколоночную страницу

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

| Элемент макета | Проверка преобразования |
| --- | --- |
| Соседние колонки | Читать каждый задуманный поток отдельно |
| Плавающая подпись | Сохранить связь с соответствующим рисунком |
| Повторяющийся заголовок страницы | Классифицировать служебный элемент до индексации |
| Блок предупреждения | Сохранить область действия и соседнюю процедуру |

## Проверить границы Markdown

[Первичная реализация Docling](https://github.com/docling-project/docling) предоставляет преобразование и экспорт. Нужно проверить, что заголовки открывают нужные разделы, а пункты списка остаются внутри своей процедуры. Chunking не способен надёжно восстановить уже потерянный порядок. Заголовок соседней колонки может привязать технически верный абзац к другой операции, одновременно изменив поисковую релевантность и кажущуюся силу цитаты. Поэтому эту проверку выполняют до настройки размеров фрагментов и сравнения embedding-моделей по результатам поиска.

## Сохранить артефакт приёмки

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

Связанные материалы: [GPU-конвейер OCR для PDF: как оценить сервер на 1000 страниц](/ru/journal/pdf-ocr-gpu-pipeline/); [Локальный RAG-сервер: какие компоненты размещать рядом с GPU](/ru/journal/rag-server-local-architecture/).
