Очиститель документов для RAG

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

Последнее обновление:

Или перетащите файл в любое место этого блока. Файл читается на этом устройстве и никогда не загружается. Лимит: 20 МБ.

Что удаляет очиститель и почему это важно

Каждый длинный PDF несёт обрамление: верхний колонтитул с названием отчёта, нижний — с уведомлением о конфиденциальности, номер страницы, растущий в углу. Для человека-читателя это обрамление — ориентир. Для модели эмбеддинга это шум, повторяющийся в полную силу на каждой странице, так что одна и та же строка колонтитула нарезается, встраивается и хранится десятки раз, разбавляя векторы, которые должны описывать настоящее содержание, и всплывая в результатах выборки, как будто это информация. Этот очиститель обращается с обрамлением как с задачей обнаружения с простым, проверяемым правилом: короткая строка, которая встречается не менее чем на шестидесяти процентах страниц (и не менее чем на двух), попадает в список кандидатов на удаление, и вы решаете, уйдёт ли она. Ничего не удаляется молча — каждый кандидат показывается с его текстом, его страницами и его количеством, прежде чем вы поставите или снимете отметку.

Номера страниц получают собственного кандидата, потому что они никогда не повторяются буквально: на первой странице стоит 1, на второй — 2, так что правило повторения никогда бы их не поймало, и всё же чанк, заканчивающийся одинокой цифрой или строкой «Страница 7 из 40», ничему не учит эмбеддинг и может сбить с толку модель, которая процитирует её обратно как факт. Очиститель распознаёт обычные шаблоны — одинокое число, равное странице, на которой оно стоит, и формы «N из M» и «N / M» — и группирует каждое совпадение в одного кандидата. Дублирующиеся абзацы — третий класс: повторяющийся отказ от ответственности, продублированное резюме или скопированный раздел, встречающийся дважды в одном документе. Дубли никогда не отмечаются по умолчанию, потому что повторяющийся абзац иногда намеренный — предупреждение, которое должно стоять в двух главах, например, — поэтому очиститель отмечает их и оставляет решение вам, сохраняя первое вхождение при удалении.

Как работает извлечение и где оно приближённо

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

Вывод построен для следующего шага конвейера RAG. Скачивание очищенного текста соединяет выжившие строки страница за страницей с пустой строкой между страницами, чтобы вы могли прочитать его, сравнить или отдать своему собственному разделителю. Скачивание JSONL идёт на шаг дальше: оно упаковывает очищенный текст в чанки примерно по восемьсот символов, деля по границам абзацев, а не посреди предложения, где только может, и пишет по одному объекту JSON на строку в форме {"text": "..."} — в той форме, которую большинство скриптов эмбеддинга и загрузчиков векторных хранилищ принимают напрямую. Размер чанка — это компромисс, а не закон: восемьсот символов достаточно малы, чтобы чанк обычно охватывал одну мысль, и достаточно велики, чтобы мысль сохраняла свой контекст. Сопроводительная статья объясняет размер, перекрытие и границы глубже.

Конфиденциальность и объём сознательно узки. Файл разбирается на этой странице, на вашем устройстве; его анализ не делает ни одного сетевого запроса, поэтому внутренние отчёты, черновики контрактов и личные документы остаются там, где они есть. Первая версия принимает только PDF, потому что именно там проблема обрамления хуже всего и именно там локальный браузерный разборщик ещё может надёжно восстановить текст; источники из текстовых процессоров и HTML лучше очищать в инструментах, которые их создали, или сначала конвертировать в PDF. Очиститель также не судит о качестве: он не будет суммировать, переписывать или исправлять текст, который сохраняет, и не решает, заслуживает ли документ эмбеддинга вообще. Он делает одну механическую работу — снять то, что повторяется, сохранить то, что уникально, вручить вам чанки — и показывает свою работу на каждом шаге, чтобы суждения оставались у человека, который знает документ.

Три класса кандидатов с первого взгляда

Повторяющееся обрамлениеКороткая строка (до 120 символов), повторяющаяся не менее чем на 60% страниц и не менее чем на двух страницах: колонтитулы, отказы от ответственности и водяные знаки. По умолчанию отмечена к удалению.
Номера страницСтроки, соответствующие «Страница N из M», «N / M» или одинокому числу, равному странице, на которой они стоят, сгруппированные в одного кандидата. По умолчанию отмечены к удалению.
Дублирующиеся абзацыБлок не менее чем из 40 символов, встречающийся не менее двух раз где угодно в документе. Никогда не отмечается по умолчанию; при удалении сохраняется первое вхождение.
ВыводыОчищенный обычный текст со страницами, разделёнными пустой строкой, и JSONL-чанки примерно по 800 символов, делённые по границам абзацев, по одному объекту {"text": "..."} на строку.

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

Мой PDF куда-нибудь загружается?

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

Почему инструмент не нашёл текст в моём PDF?

Почти наверняка потому, что PDF состоит из отсканированных изображений, а не из текста: каждая страница — фотография, и операций с текстом для извлечения нет. Инструмент сообщает о нуле строк, а не гадает. Сначала пропустите документ через OCR, чтобы страницы несли настоящий текстовый слой, а затем очистите результат.

Удалит ли очистка настоящие заголовки по ошибке?

Она может внести в список короткую строку, которая часто повторяется, включая повторяющийся заголовок раздела, потому что обнаружение основано на повторении, а не на позиции. Именно поэтому ничего не удаляется, пока вы не подтвердите: каждый кандидат показывает свой текст, страницы и количество, и снятие отметки сохраняет каждое вхождение.

Почему дублирующиеся абзацы не удаляются по умолчанию?

Потому что повторение иногда и есть смысл: предупреждение о безопасности, юридическое уведомление или резюме могут повторяться намеренно. Дубли отмечаются с их местоположениями, чтобы вы могли судить; если вы отметите один, очиститель сохранит первое вхождение и удалит поздние копии.

Какой размер чанка использует экспорт JSONL?

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