English translation is not available yet. Showing Russian content.

Как работает OCR для RAG? Недостатки и когда его недостаточно?

Краткий тезис

OCR (Optical Character Recognition) — технология извлечения текста из изображений и сканов. В RAG-системах OCR используется для преобразования неструктурированных документов (PDF, сканы) в текстовые чанки для индексации. Однако OCR имеет фундаментальные ограничения: он теряет логическую структуру документа (заголовки, таблицы, связи с изображениями) и подвержен ошибкам на сложных шрифтах. Когда эти недостатки критичны (финансовые отчёты, юридические документы, презентации), одного OCR недостаточно — требуется layout-aware parsing и использование Vision-Language LLM (VL-LLM).


1. Термин: OCR (Optical Character Recognition)

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

Основные этапы работы OCR

  1. Предобработка изображения — бинаризация, устранение шума, выравнивание.
  2. Сегментация — разбиение на строки, слова, символы.
  3. Распознавание — классификация каждого сегмента как символа (с использованием CNN, LSTM или Transformer).
  4. Постобработка — коррекция ошибок с помощью словарей, языковых моделей.

Популярные OCR-движки

  • Tesseract — открытый движок от Google, поддерживает много языков, но чувствителен к качеству изображения.
  • EasyOCR — на основе глубокого обучения, проще в использовании, лучше справляется с нестандартными шрифтами.
  • PaddleOCR — современный движок от Baidu, высокая точность, поддержка таблиц и многоязычности.

2. Как работают популярные OCR-движки

ДвижокАрхитектураЯзыкиОсобенности
TesseractLSTM (4.0) + классический пайплайн100+Лучший для печатного текста высокого качества, требует настройки под конкретный документ
EasyOCRCRAFT (детектор) + CRNN (распознаватель)80+Простой API, хорошо работает на фотографиях и размытых изображениях
PaddleOCRPP-OCRv4 (MobileNet + Transformer)80+Быстрый, точный, встроенная поддержка таблиц и layout-анализа

Пример использования EasyOCR на Python

import easyocr

reader = easyocr.Reader(['ru', 'en'])
result = reader.readtext('scan.png')

# result — список кортежей: (bbox, текст, уверенность)
for (bbox, text, conf) in result:
    print(f'{text} (уверенность: {conf:.2f})')

3. Преимущества использования OCR в RAG

  • Доступность: позволяет индексировать миллионы отсканированных документов, которые иначе были бы недоступны для текстового поиска.
  • Простота интеграции: готовые библиотеки (Tesseract, EasyOCR) легко встраиваются в пайплайн.
  • Скорость: современные OCR-движки обрабатывают страницу за 0.5–2 секунды на GPU.
  • Поддержка множества языков: особенно важно для мультиязычных RAG-систем.

OCR остаётся базовым инструментом для первичного извлечения текста, когда документы не содержат сложной вёрстки (простые письма, статьи, книги).


4. Недостатки OCR: потеря структуры

OCR извлекает текст как плоскую последовательность символов, полностью игнорируя логическую структуру документа:

  • Заголовки и подзаголовки — теряют иерархию (H1, H2).
  • Колонки — текст смешивается, если не применять layout-анализ.
  • Списки — маркеры и нумерация могут быть распознаны как обычные символы.
  • Таблицы — ячейки и строки не сохраняются; данные превращаются в бессвязный поток.

Пример: Таблица с финансовыми показателями после OCR может выглядеть так:

Выручка 2023 2024 1 000 000 1 200 000
Себестоимость 600 000 700 000

Без понимания структуры RAG не сможет ответить на вопрос «Какая выручка в 2024 году?».


5. Недостатки OCR: ошибки распознавания

Даже лучшие OCR-движки допускают ошибки в сложных условиях:

УсловиеТипичная ошибкаПример
Плохое качество скана (низкое разрешение, шум)Замена символов«O» → «0», «l» → «1»
Нестандартные шрифты (рукописные, декоративные)Пропуск или неверный символ«а» → «o»
Перекос страницыСмещение строк, слияние слов«привет мир» → «приветмир»
Артефакты (тени, блики)Вставка лишних символов«текст.» → «текст.,»

Влияние на RAG ошибки OCR снижают качество эмбеддингов (поиск по искажённым словам) и могут привести к неверным ответам LLM.


6. Недостатки OCR: отсутствие семантического понимания

OCR не способен установить логические связи между текстом и окружающими элементами:

  • Диаграммы и графики — текст подписи распознаётся, но не связывается с визуальным трендом.
  • Изображения с подписями — подпись отделяется от картинки.
  • Сноски и примечания — теряется привязка к основному тексту.
  • Водяные знаки, штампы — могут быть распознаны как часть основного текста.

Это критично для документов, где смысл рождается из сочетания текста и графики (презентации, инфографика, технические схемы).


7. Когда OCR недостаточно: конкретные сценарии

СценарийПочему OCR не справляетсяЧто нужно вместо
Финансовые отчёты (таблицы с цифрами)Теряется структура строк/столбцовLayout-aware parsing + табличные модели (например, Table Transformer)
Юридические документы (контракты, иски)Важна иерархия разделов, пунктов, подпунктовDocument understanding (LayoutLM, BROS)
Презентации (слайды с диаграммами)Не распознаются связи текста и визуальных элементовVL-LLM (GPT-4V, LLaVA) для мультимодального понимания
Рукописные заметкиВысокий уровень ошибокСпециализированные HTR-модели (TrOCR, Handwriting Transformer)
Сканы низкого качества (старые книги, микрофильмы)Множественные ошибки, потеря информацииУлучшение изображения (SRGAN) + дообучение OCR на похожих данных

8. Альтернативы и улучшения: Layout-aware parsing и VL-LLM

Когда OCR недостаточно, применяют более продвинутые подходы:

parsing|Layout-aware parsing — извлечение текста с сохранением пространственной структуры:

  • Detectron2 / LayoutParser — детекция блоков (текст, таблица, изображение) на странице.
  • Unstructured.io — библиотека для парсинга PDF, DOCX, HTML с сохранением структуры.
  • Table Transformer — специализированная модель для распознавания таблиц.

Vision-Language LLM (VL-LLM) — мультимодальные модели, которые «видят» документ целиком:

  • GPT-4V / GPT-4o — могут отвечать на вопросы по изображению документа, понимая таблицы и диаграммы.
  • LLaVA — open-source альтернатива, дообучаемая под конкретные домены.
  • Qwen-VL — эффективна для китайских и многоязычных документов.

Гибридный пайплайн для сложных документов

  1. Layout-анализ (Detectron2) → выделение блоков.
  2. OCR (PaddleOCR) → извлечение текста из каждого блока.
  3. Классификация блоков (таблица, заголовок, изображение).
  4. Специализированные модели (Table Transformer для таблиц, VL-LLM для изображений).
  5. Сборка структурированного документа (JSON с метаданными).

9. Пет-проект для закрепления

Задача Разработать RAG-систему для финансовых отчётов (PDF-сканы с таблицами), которая корректно отвечает на вопросы по цифрам.

Инструменты

  • Python, Jupyter Notebook
  • PaddleOCR (для OCR с поддержкой таблиц)
  • LayoutParser (для детекции табличных блоков)
  • Camelot или Tabula (для извлечения таблиц из PDF, если есть текстовый слой)
  • ChromaDB (векторная БД)
  • LangChain (пайплайн RAG)
  • GPT-4o или LLaVA (для мультимодальных запросов)

Шаги:

  1. Собрать 10–20 сканов финансовых отчётов (можно выдумать).
  2. Реализовать пайплайн: LayoutParser → выделение табличных регионов → PaddleOCR (с опцией det_db_thresh=0.3 для лучшей детекции) → структурирование таблиц в pandas DataFrame.
  3. Сохранить каждую таблицу как отдельный чанк с метаданными (год, компания, тип показателя).
  4. Построить векторный индекс по тексту таблиц (эмбеддинги text-embedding-3-small).
  5. Реализовать retrieval: для вопроса «Какая выручка в 2024?» ищем чанки, содержащие «выручка» и «2024».
  6. Подать найденные таблицы в LLM с инструкцией «Ответь на вопрос, используя данные из таблиц».
  7. Сравнить качество ответов с пайплайном, где используется только наивный OCR (Tesseract без layout).

Ожидаемый результат Гибридный пайплайн даёт точные ответы на числовые вопросы (например, «1 200 000»), в то время как наивный OCR выдаёт ошибки или неструктурированный текст.


10. Связь с другими вопросами

ВопросТема
549Как обрабатывать PDF-документы в RAG?
551Что такое мультимодальный RAG?
535Какие стратегии chunking'а вы знаете?
540Как вы оцениваете качество retrieval'а?
560Что такое Agentic RAG и как он устроен?

11. Навигация


Навигация