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

Мы разрабатывали RAG-систему для ответов на вопросы по корпоративным документам. Как часто бывает, большинство таких документов хранятся в форматах, которые языковые модели напрямую не понимают — например, PDF или DOCX. С этой проблемой сталкивается практически любая команда, работающая над RAG для бизнеса, так как бизнес привык работать именно с такими файлами.
Первым делом такие документы необходимо сконвертировать в удобный для LLM текстовый формат — например, в Markdown или обычный текст. Одна из главных сложностей при конвертации PDF-файлов возникает, когда они сверстаны в несколько столбцов. Корректно “распрямить” такой текст в последовательный поток — нетривиальная задача. Сегодня с этим хорошо справляются мультимодальные модели, принимающие на вход скриншот страницы, но в тот раз я воспользовался старым добрым конвертером Aspose, который отлично зарекомендовал себя при работе с DOCX (PDF не пробовал).
В результате эксперимента я хотел понять, насколько хорошо LLM отвечает на вопросы по страницам документа, сверстанных в виде столбцов.
Исходный документ: годовой отчет компании Mercia.
Документ был сконвертирован с помощью Aspose. Далее я вырезал из него фрагмент для уменьшения числа токенов.
И задал вопрос по содержанию третьего столбца на одной из страниц (выделен красным) просто в ChatGPT (4o):

in this document:
Faradion was sold in January 2022 to
...
...
“Mercia has generated over £60million of pre-tax profits during the last two years.”
find answer to question:
what Oddbox achived to date?
ChatGPT успешно ответил на вопрос:
Oddbox has achieved the following to date:
Rescued 13,790 tonnes of fruit and vegetables
that would otherwise have gone to waste.
Saved 1,519 million litres of water, equivalent to the
amount that 25,682 people drink in a lifetime.
Prevented 15,365 tonnes of carbon emissions, which is
enough energy to power 3,513 houses for a year.
Я решил, что конвертер справился с задачей корректно — раз модель смогла найти и понять нужную информацию. Но мне стало интересно, и я решил посмотреть, как именно выглядит этот фрагмент текста после конвертации.
Здесь меня ждал сюрприз: оказалось, что Aspose очень плохо работает с многостолбцовыми PDF. Конвертер просто склеивает текст из всех столбцов подряд — в результате получается каша из текста трёх столбцов, которую человеку прочитать почти невозможно. Но языковая модель, что удивительно, отлично справилась с этим “зашифрованным” текстом и правильно ответила на вопрос!
Вот как выглядит фрагмент текстового файла (без переноса длинных строк):

и соответствующие строки в документе:

Ближе присмотревшись к тексту, я заметил, что в некоторых местах столбцы всё же разделяются парой пробелов (выделено розовым), но в целом структура сильно искажена. Это всё, что получает LLM — и, несмотря на это, модель каким-то образом “расшифровывает” и находит нужную информацию. Интересно что ChatGPT даже не упоминает то ему пришлось "восстанавливать" документ.
Не знаю, как это ещё назвать, кроме как сверхспособностью. Я ни разу не встречал упоминаний о подобных особенностях, поэтому был действительно удивлён.
Практический вывод здесь такой: даже если документ сконвертирован некачественно, модель всё равно способна его понимать. Причём ошибки конвертации могут быть разными — например, я также замечал, что модель правильно интерпретирует таблицы (в формате Markdown), даже если в результате конвертации значения в отдельных строках оказываются не в тех столбцах. Но таблицы — это уже отдельная история, и о них расскажу в другой раз.
И наш RAG работает.
Обо мне
Больше двух лет пишу проекты про интеграцию LLM в приложения: агентский RAG, мультиагентский DeepResearch, голосовое управление приложениями и т.д. Оказываю консультации по интеграции LLM.
Недавно начал вести телеграм-канал о сильных и слабых сторонах LLM: LLM => AGI?
Комментарии (8)
sad8c
05.06.2025 09:13Мешанину из столбов ллм поймет. Если скормить документ целикомв контекст. Но корректно прочанкать такой документ уже не выйдет без нормальной конвертации.
ruinaimperii
05.06.2025 09:13Это не может происходить из-за того, что ллм разбивает текст на отдельные нграммы (не уверен какие именно в гпт), и выучивает связи именно между разными нграммами среди всего текста, то есть любые комбинации? Поэтому ему и не так важна композиция и стройность текста
lazy_val
Существуют (и давно причем) инструменты, позволяющие конвертировать многоколоночный текст PDF в одну колонку(k2pdfopt, к примеру).
Вам точно для этого LLM нужна?
ovsale Автор
статья не об этом. другие способы тоже есть. но мультимодальные ЛЛМ например умеют таблицы, выделяют изображения, описывают чарты итд и вообще выглядят как наиболее универсальное решение из известных мне по крайней мере
DeskundigeICT
Абсолютно согласен с автором относительно выдающихся восстановительных способностей LLM. Недавно я загрузил "кривую" транскрипцию онлайн-встречи на нидерландском языке в Google Gemini 2.5 Pro, и модель отлично уловила суть обсуждения, изложив технические и юридические детали простым и понятным языком. Читать сырой машинный текст — интерпретацию потоковой болтовни фламандских коллег — настоящая пытка, а вот итоговое резюме от Gemini оказалось лёгким для восприятия и действительно информативным.