OCR + NLP pipeline для определения позиции пропущенного слова в казахском предложении

1.

OCR + NLP pipeline для задачи
определения позиции
пропущенного слова
в казахском предложении
Команда разделила решение на два блока:
1) извлечение текста из изображения,
2) предсказание позиции пропущенного слова.
Фото → OCR → текст
→ удаляем 1 слово
→ ML предсказывает позицию
Моя зона
ответственности
OCR-сервис: загрузка
изображения, извлечение
текста, подготовка строки для
модели.
Ключевая идея
Мы расширили Kaggle-задачу до
реального сценария: пользователь
работает не с готовым текстом, а с
фото.
1

2.

Проблема и почему мы расширили задачу
Kaggle начинается с текста, а реальный пользователь — с изображения
real-world
extension
Проблема
Почему нужен OCR-слой
Что это дало
В ASR и OCR часто пропускаются слова изза шума, искажений, качества изображения
и особенностей языка. Для казахского это
особенно заметно: язык морфологически
богатый и имеет гибкий порядок слов.
На Kaggle модель получает уже
готовое предложение. В
реальном применении
пользователь загружает фото
или скан, поэтому сначала
нужно преобразовать
изображение в текстовую строку.
Мы построили полноценный
pipeline:
изображение → OCR →
текст с пропуском → MLмодель.
То есть сделали решение
ближе к реальной
эксплуатации.
2

3.

Архитектура решения end-to-end
От загруженного изображения до submission.csv
1. Upload
Пользователь
загружает фото с
казахским
предложением
2. OCR
3. Masking
4. Inference
Tesseract OCR
(kaz+rus) извлекает
текст из
изображения
Из предложения
случайно удаляется
одно слово
XLM-RoBERTa
Token Classification
предсказывает
позицию
5. Output
Индекс
записывается в
submission.csv
Почему эта архитектура сильная
Она объединяет компьютерное зрение и NLP: сначала извлекает текст из реального визуального входа, а затем подает его в
модель для предсказания позиции пропущенного слова.
3

4.

OCR-модуль: как мы извлекали текст из
изображений
Фокус на стабильности, универсальности и поддержке казахских символов
Выбор технологии
1 # accuracy-first OCR
2 processed = preprocess(image)
3 text =
pytesseract.image_to_string(
4
processed,
5
lang="kaz+rus",
6
config="--oem 3 --psm 7"
7 )
Мы сравнили несколько OCR-подходов
и остановились на Tesseract, потому
что он имеет готовую языковую модель
для казахского и легко интегрируется в
Python.
Повышение точности
Использовали preprocessing: grayscale,
увеличение масштаба,
шумоподавление и бинаризацию. Это
улучшает контраст и снижает ошибки
распознавания.
Что получает модель
На выходе OCR выдает чистую
текстовую строку; затем из нее
удаляется одно случайное слово и
результат передается в ML-блок.
4

5.

ML-модель для предсказания позиции
пропущенного
слова
Предобученная XLM-RoBERTa, адаптированная под Token Classification
Как устроен инференс
Ключевая идея обработки
Постобработка предсказаний
• Используется XLM-RoBERTa + HuggingFace
Transformers
• Запуск на GPU при наличии
• TestDataset разбивает предложение на
слова и токенизирует его
• Длина ограничивается 192 токенами,
применяется padding
• Из-за субтокенов строится FSM-маска
• Она отмечает только первые токены слов
• Это позволяет корректно сопоставить
предсказания модели и реальные позиции
слов
• DataLoader подает предложения батчами по
64
• Softmax переводит logits в
вероятности
• probability^1.5 усиливает уверенные
ответы
• Добавляется bias к середине
предложения
• Рассматриваются 5 лучших
кандидатов
• Небольшие штрафы для слишком
ранних и поздних позиций
• В submission.csv сохраняется
missing_word_position
5

6.

Результат, ценность и следующие улучшения
Что важно показать жюри: не только модель, но и полноценную систему
Что мы получили
Как можно улучшить дальше
Рабочий сервис, который принимает
изображение, извлекает казахский текст,
удаляет одно слово и передает результат в
модель. Это уже не просто Kaggle-скрипт, а
end-to-end система.
• Более точный OCR для сложных
изображений
• Улучшение language-specific
preprocessing
• Интеграция в веб-интерфейс upload →
OCR → prediction
• Снижение ошибок на редких казахских
буквах
• Расширение постобработки текста
перед подачей в модель
Почему это важно
Мы сделали решение ближе к реальной
задаче: в жизни пользователь работает не
с CSV, а с фото, сканами и текстом,
который сначала нужно распознать.
Мы
недля
только
обучили
Итог
жюри
модель для Kaggle, но и
расширили решение до
полноценного
пользовательского
сценария:
изображение → OCR →
текст с пропуском →
предсказание
позиции
Это
демонстрирует
прикладную
ценность
слова.
решения и его готовность к
интеграции в реальный
продукт.
6
English     Русский Правила