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

Классический RAG нейросети требует извлечения текста из документа, разбивки на части и построения индекса по словам. Пиксельный подход пропускает этот этап: страница рендерится как картинка, нарезается на плитки, и нейросеть ищет нужный фрагмент по визуальному сходству. Для PDF с таблицами, графиками и сканами на кириллице это снимает главную боль: парсинг, который вечно ломается.
Разработчик опубликовал открытый туториал, где собирается полный пайплайн с нуля: веб-страницы и PDF превращаются в изображения, делятся на перекрывающиеся плитки, индексируются мультимодальными (работающими одновременно с текстом и картинками) эмбеддингами через SigLIP, CLIP или Qwen3-VL, а поиск идёт по векторному индексу FAISS. Дополнительно подключается OCR-гибрид с BM25 и reciprocal rank fusion для повышения точности. Результат отдаётся через FastAPI-сервис.
Ниже адаптированная инструкция с акцентом на работу с кириллицей.
Что понадобится?
- Python 3.10+ и менеджер пакетов pip
- Google Colab (бесплатный GPU-тариф подойдёт) или локальная машина с 8+ ГБ RAM
- Библиотеки:
transformers,faiss-cpu,pymupdf,pillow,playwright,rank-bm25,pytesseract,torch,sentencepiece - Tesseract OCR с русскоязычным пакетом (
tesseract-ocr-rus), без него кириллица в гибридном поиске не распознаётся - Браузер Chromium (устанавливается автоматически через Playwright)
- Время: первая настройка занимает 10-15 минут, индексация пяти документов ещё 5-7 минут
Пошаговая инструкция
- Установите зависимости и Chromium. В Colab или терминале выполните:
pip install pillow numpy faiss-cpu pymupdf transformers fastapi uvicorn requests matplotlib tqdm rank-bm25 playwright sentencepiece pytesseract torch torchvision
python -m playwright install --with-deps chromium
apt-get install -y tesseract-ocr tesseract-ocr-rus
Пакет tesseract-ocr-rus добавляет русскоязычную модель распознавания. Без него OCR-ветка гибридного поиска будет игнорировать кириллицу.
- Подготовьте конфигурацию. Создайте объект
Configи укажите URL-адреса документов. Для кириллицы замените англоязычные Wikipedia-ссылки на русскоязычные:
from dataclasses import dataclass, field
from typing import List
@dataclass
class Config:
urls: List[str] = field(default_factory=lambda: [
"https://ru.wikipedia.org/wiki/Генеративный_искусственный_интеллект",
"https://ru.wikipedia.org/wiki/Векторная_база_данных",
"https://ru.wikipedia.org/wiki/Трансформер_(модель_машинного_обучения)",
])
tile_width: int = 1024
tile_height: int = 1024
tile_overlap: int = 128
backend: str = "siglip"
model_id: str = "google/siglip-base-patch16-224"
use_ocr_hybrid: bool = True
top_k_tiles: int = 20
n_docs: int = 5
Параметры tile_width и tile_height задают размер плиток в пикселях. Перекрытие tile_overlap (128 пикселей) гарантирует, что текст на границе не обрежется.
-
Отрендерите страницы как изображения. Playwright открывает каждый URL в безголовом Chromium и делает полностраничный скриншот. PDF-файлы рендерятся через PyMuPDF. Максимальная высота страницы ограничена параметром
max_page_height(24 000 пикселей), чтобы не переполнить память. -
Нарежьте изображения на перекрывающиеся плитки. Каждый скриншот делится на фрагменты заданного размера. Пустые плитки (стандартное отклонение пикселей ниже порога
blank_std_threshold = 6.0) отбрасываются. Дубликаты удаляются по расстоянию Хэмминга (порогdedup_hamming = 4). -
Сгенерируйте эмбеддинги (векторные представления плиток). Каждый фрагмент прогоняется через мультимодальную модель SigLIP, CLIP или Qwen3-VL. На выходе получается вектор фиксированной длины. Батч-размер по умолчанию 8.
-
Постройте FAISS-индекс. Векторы складываются в индекс FAISS (библиотека для быстрого поиска ближайших соседей). При количестве плиток свыше 2 000 автоматически используется IVF-индекс с параметром
ivf_nprobe = 16. -
Подключите OCR-гибрид для кириллицы. Tesseract извлекает текст из каждой плитки. Для русского языка укажите язык явно:
import pytesseract
text = pytesseract.image_to_string(tile_image, lang="rus")
Извлечённые тексты индексируются алгоритмом BM25. Финальный ранжир объединяет визуальный (dense) и текстовый (sparse) поиск через reciprocal rank fusion (RRF, метод слияния двух списков результатов, где каждому элементу присваивается вес, обратный его позиции).
- Запустите поиск. Отправьте текстовый запрос. Система найдёт ближайшие плитки, агрегирует результаты до уровня документов и вернёт топ-5 страниц с визуальными фрагментами-доказательствами.
Запрос на русском: «как растения превращают солнечный свет в энергию». Система рендерит пять проиндексированных страниц, нарезает их на плитки, прогоняет через SigLIP. FAISS возвращает 20 ближайших плиток. OCR-ветка через Tesseract (с языком rus) параллельно ищет по тексту. RRF объединяет оба списка. Результат: на первом месте страница о фотосинтезе, система показывает конкретный фрагмент скриншота с диаграммой световых реакций. Качество проверяется метриками Recall@k (доля найденных релевантных документов в топ-k) и MRR (средний обратный ранг, mean reciprocal rank).
- Забыли
tesseract-ocr-rus. Без русскоязычного пакета OCR-ветка выдаёт мусор вместо текста, и гибридный поиск работает хуже чистого визуального. Проверьте:tesseract --list-langsдолжен показатьrus. - Слишком маленькие плитки. При
tile_heightниже 200 пикселей фрагменты теряют контекст, и эмбеддинги становятся неинформативными. - Память в Colab. Параметр
max_page_height = 24000приdevice_scale > 1.0легко съедает RAM. Для бесплатного Colab оставьтеdevice_scale = 1.0. - Модель не видит мелкий текст. SigLIP и CLIP рассчитаны на изображения 224x224 пикселей. Плитка 1024x1024 сжимается, мелкий шрифт теряется. Для документов с мелким кеглем попробуйте бэкенд Qwen3-VL (параметр
backend: "qwen"), он принимает изображения большего разрешения. - Путаница dense и sparse весов. Параметры
dense_weightиsparse_weightпо умолчанию равны 1.0. Для кириллических PDF, где OCR работает с ошибками, имеет смысл снизитьsparse_weightдо 0.5 и опираться больше на визуальный поиск.
Что это даёт на практике, по ролям?
Авторам Дзена. Если вы работаете с PDF-источниками (исследования, отчёты, презентации), пиксельный RAG нейросети позволяет искать по визуальному содержимому, а не мучиться с копипастом из сканов. Загрузите пять-десять ключевых источников, постройте индекс и задавайте вопросы на русском.
Маркетологам. Конкурентный анализ по скриншотам лендингов, медиакитов, PDF-прайсов: система находит визуально похожие фрагменты без ручного разбора. Полезно, когда источники приходят картинками в мессенджере.
Предпринимателям в РФ. Все компоненты открытые и бесплатные. FAISS, SigLIP, Tesseract работают локально, данные не уходят на внешние серверы. Для продакшена нужен сервер с GPU: подойдёт арендованный инстанс на Yandex Cloud или Selectel.
Пиксельный подход к RAG нейросети решает конкретную и болезненную проблему: PDF с таблицами, сканы договоров, презентации с графиками, всё то, откуда классический парсер извлекает кашу. По моим наблюдениям, для кириллицы главное узкое место не эмбеддинги, а качество Tesseract: на чистых PDF он работает прилично, на фотографиях документов ошибается. Если OCR даёт мусор, отключайте гибрид (use_ocr_hybrid = False) и работайте чисто через визуальный поиск. Честная оговорка: подход требует GPU для комфортной скорости. На CPU индексация пяти страниц занимает минуты, а не секунды. Для большой базы документов это пока инструмент для энтузиастов, а не готовое рабочее решение.
Попробуйте AI-инструменты dzen.guru
Тестируем нейросети для авторов и делимся работающими схемами. Подпишитесь, чтобы получать практические разборы.
ПодписатьсяПиксельный RAG нейросети пока не заменит классический текстовый пайплайн для чистых HTML-страниц, но для визуально насыщенных документов на кириллице это работающий способ обойти сломанный парсинг и получить поиск, который видит то же, что видите вы.

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

Starlink приносит $4,2 млрд за квартал: спутниковый интернет и его цена стали опорой SpaceX
SpaceX второго августа отчиталась за квартал, и главная цифра оказалась не про ракеты: выручка ИИ-подразделения выросла втрое, до 2,6 млрд долларов, обогнав…

OpenAI опубликовала переписки в суде с Apple: обвинения в краже тайн оспорены
Юридический конфликт между Apple и OpenAI перешёл из зала суда в публичное пространство: 11 июня OpenAI опубликовала переписки сотрудников и юристов, чтобы…

AMD наращивает бизнес центров обработки данных
Почему это важно AMD зарабатывает на дата-центрах больше, чем на всём остальном бизнесе вместе взятом, и обещает удвоить этот сегмент ещё раз к 2027 году, а…
Комментарии