Продуктивность

ИИ и документы на вашем диске: что реально работает

«Направьте ассистента на папку с документами» — обещание, которое ломается на первом же PDF. Разбираем, какие форматы читаются на самом деле, где проходят жёсткие ограничения по размеру и что делать со сканами, таблицами и вёрсткой.

Сценарий, ради которого люди ставят локального ассистента, звучит так: показать ему папку с рабочими документами и спрашивать по ним. Сценарий рабочий, но у него есть граница, о которой обычно не предупреждают, и проходит она не там, где ожидается. Ломается не «понимание», а чтение: значительная часть того, что вы называете документами, для инструмента чтения файлов не является текстом.

Ниже — что читается как есть, что требует подготовки, что не читается никак, и какие обходные пути реально работают.

#Что понадобится

  • Разрешённая папка. Ассистент работает не с диском целиком, а с рабочей директорией, за пределы которой путь не разрешается. Модель угроз и порядок выдачи прав разобраны в статье про настройку агента с доступом к файлам.
  • Понимание, где физически лежат файлы. Если Persona развёрнута в контейнере или на сервере, ассистент видит файлы той машины, а не вашего ноутбука. Это самая частая путаница в этом сценарии.
  • Готовность конвертировать часть архива. Без этого шага половина документов останется недоступной.

#Шаг 1. Разберитесь, что именно умеет читаться

Инструмент чтения файла делает буквально следующее: берёт путь внутри разрешённой директории, проверяет, что это файл, что он меньше жёсткого потолка, и читает его как текст в кодировке UTF-8, заменяя нечитаемые байты. Никакого разбора форматов на этом пути нет.

Отсюда честная таблица пригодности.

Тип файла Читается Что происходит на деле
.md, .txt, .csv, .json, .py и прочий текст ✓ содержимое как есть
.docx, .xlsx, .pptx ✗ это zip-архивы, придёт мусор
.pdf — и текстовый, и скан ✗ бинарный поток, придёт мусор
.rtf, .odt ✗ разметка забьёт содержимое
Изображения, скриншоты ✗ для них нужен другой маршрут, см. ниже

Смотреть в таблице надо на вторую колонку и не искать полутонов: библиотеки разбора офисных форматов и PDF в проекте нет вовсе, поэтому «частично работает» тут не бывает. Практический вывод: ваш архив делится на две части, и вторая требует шага конвертации, а не настройки.

Второе жёсткое ограничение — размер. Файл больше примерно полумегабайта не открывается совсем: инструмент возвращает отказ с указанием размера. Это не про качество ответа, а про отказ на входе. Просмотр содержимого директории тоже ограничен — показывается не больше двух сотен записей, дальше строка «и ещё столько-то».

#Шаг 2. Приведите архив к читаемому виду

Работающий порядок — не «научить ассистента читать PDF», а один раз получить текстовые копии.

  1. Выгрузите текст пакетно. Офисные документы сохраняются в Markdown или обычный текст штатными средствами; для PDF нужен внешний конвертер. Держите текстовые копии рядом с оригиналами, в отдельной подпапке.
  2. Режьте длинное. Договор на сотню страниц не пройдёт по размеру, а если бы прошёл — не поместился бы в контекст модели. Делите по разделам с осмысленными именами файлов: имя файла — это то, по чему ассистент выбирает, что открыть. Почему нарезка влияет на качество ответа сильнее, чем кажется, разобрано в статье про стратегии чанкинга.
  3. Оставьте оригиналы на месте. Текстовая копия нужна для чтения; подписи, печати и вёрстка живут в оригинале, и подменять его копией нельзя.

#Шаг 3. Выберите маршрут для того, что не конвертируется

Три случая, где конвертация не спасает, и что делать с каждым.

Сканы и фотографии документов. Текста в файле нет физически. Нужен либо внешний инструмент распознавания, либо модель, которая работает с изображениями напрямую — что для этого требуется от железа, разобрано в материале про vision-модели локально.

Сложные таблицы. Даже когда текст извлекается, структура теряется: объединённые ячейки, многоуровневые шапки и сноски превращаются в поток слов, и модель начинает соотносить не те числа с не теми строками. Это самая опасная ошибка в этом сценарии, потому что ответ выглядит уверенно. Рабочее решение — выгружать таблицы в CSV и спрашивать по CSV.

Документы, которые вы читаете, а не храните. Если содержимое нужно ассистенту один раз, конвертировать его незачем: то, что было на экране, попадает в память через захват и распознавание текста. У этого маршрута свои особенности — распознанный с экрана текст рваный, с ошибками в редких словах и без структуры документа; чего от него ждать, описано в статье про особенности поиска по OCR-тексту.

#Проверка результата

Три проверки, каждая занимает минуту.

  1. Попросите показать содержимое рабочей папки. Пути в ответе должны совпадать с тем, что вы видите в проводнике. Если список пуст или незнаком — вы смотрите на другую машину.
  2. Попросите процитировать первую строку конкретного файла. Не пересказать, а процитировать. Совпало — чтение работает; пришли символы вперемешку — вы дали неконвертированный формат.
  3. Задайте вопрос, ответ на который есть ровно в одном документе. Если ассистент отвечает правильно, но не называет файл, — он ответил из общих знаний, а не из вашего документа. Требуйте ссылку на источник в каждом ответе по архиву.

#Что может пойти не так

  • Ответ по документу, которого ассистент не открывал. Самый частый и самый неприятный случай: модель отвечает правдоподобно из общих знаний. Лечится требованием цитаты и имени файла.
  • Отказ по размеру, принятый за отказ по правам. Сообщение про размер и сообщение про выход за пределы разрешённой папки — разные вещи; читайте текст отказа, а не додумывайте.
  • Мусор вместо текста. Признак того, что файл бинарный. Никакая переформулировка запроса это не исправит — нужна конвертация.
  • Инструкция внутри документа. Текст, который ассистент читает, может содержать указание, адресованное самому ассистенту. Это не гипотетика, а известный класс проблемы, и защита от него — не доверие к модели, а узкие права. Общая рамка — в статье про ИИ, который создаёт файлы на вашем компьютере.
  • Содержимое ушло провайдеру. Файл с диска не отправляется никуда сам по себе, но текст, который ассистент прочитал и вставил в запрос, уходит той модели, которую вы подключили: остаётся на вашем железе при локальной Ollama и уходит выбранному провайдеру при облачном ключе. Для документов под соглашением о неразглашении это решающая деталь.

#Частые вопросы

#Почему нельзя просто добавить поддержку PDF?

Технически можно, и это обычная библиотека. Сегодня её в проекте нет, поэтому обещать разбор PDF было бы неправдой. Пока так, честный ответ на вопрос «ассистент читает PDF» — нет, и обходной путь описан выше.

#Ассистент ищет по всей папке или только по файлу, который я назвал?

Он может перечислить содержимое директории и открыть конкретные файлы, выбирая их по именам. Это не полнотекстовый поиск по архиву: если нужное слово лежит в файле с неинформативным именем, ассистент до него не доберётся. Имена файлов в этом сценарии — не украшение, а рабочий индекс.

#Что происходит с файлом больше полумегабайта?

Он не открывается вовсе, инструмент возвращает отказ с указанием фактического размера. Обход один — разделить файл на части. Автоматической постраничной подкачки длинного документа в этом маршруте нет.

#Доступна ли работа с файлами участнику общей копии?

Инструменты чтения и записи работают в пределах рабочей директории конкретного пользователя, и вырваться из неё путь не может. Но разграничение между пользователями — это список разрешённых путей на кодовой базе, начинавшейся однопользовательской, а не усиленная мульти-тенантная граница. На копии, где зарегистрированы посторонние, давать доступ к чувствительным документам не стоит.

#Можно ли дать доступ только на чтение?

Разделение прав на чтение и запись — базовая часть разумной настройки: читать разрешают шире, чем писать. Как собрать матрицу прав целиком, разобрано в статье про настройку агента с доступом к файлам.

#Что быстрее — конвертировать архив или спрашивать по захвату экрана?

Зависит от того, возвращаетесь ли вы к документам. Разовое чтение дешевле оставить захвату: вы всё равно откроете документ глазами. Архив, к которому вы обращаетесь регулярно, дешевле один раз конвертировать — тогда ответы будут по полному тексту, а не по тому куску, который попал на экран.

#Вывод

Ассистент на вашем диске читает текст и не читает форматы. Это скучная, но определяющая граница: .md и .csv работают сразу, офисные документы и PDF требуют конвертации, сканы и сложные таблицы требуют отдельного маршрута, а всё длиннее полумегабайта не откроется вовсе. Если ваш архив уже текстовый — сценарий заработает в тот же вечер. Если это папка отсканированных договоров — сначала честно оцените стоимость конвертации, и только потом решайте. Как работа с документами встраивается в общую систему памяти о вашем контексте, разобрано в разборе второго мозга на ИИ.

Хотите ИИ, который помнит вас?

Persona держит контекст между чатами и работает на вашем железе — если развернуть её у себя и подключить локальную модель.

Создать аккаунт