Как поднять OCR/Detect/Classification проект на коленке

Нет не решаемых задачь, есть различные пути и подходы к решению.

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

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

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

У нас нет ни каких наработок, есть только отчет-реест и фото данные из которых необходимо сверить.

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

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

На втором этапе нам нужен OCR (уф… тут пришлось попотеть)… Моделей много, но мы же хотим на выходе из можели подучать чистый результат, да и данные у нас не типовые, очень много нюансов может быть на фото.

Ну ладно мы выбрали архитектуру модели для детекции и для OCR, построили гипотезу, теперь надо бы перейти к обучению, но у нас нет готового, размеченного датасета, а для качественного обучения модели требуются десятки и сотни тысяч примеров, так как у нас слишком высокая вариативность фото и типов приборов.

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

Закончив разметку пишем простенький пайплайн обработки который будет определять нужные области, процент успешности конечно оставляет желать лучшего 50-55%, но на этом этапе нам большего и не надо.

Используя нашу обученную модельку пишем пайплайн обработки реестра-отчета где есть соответствие нужных данных для сравнения и ссылки на фотографию. Суть такова что мы обрабатываем данный реестр, определяем области, эти области пропускаем через например Tesseract или FireRed, TrOCR или иную предобученную модель OCR и сравниваем с данными в реестре, если данные сошлись, то сохраняем фото и координаты определенной области, а так же распознанные значение области и набираем датасет, наращивая его объем.

Вот и ладушки, прогнав реест из 50 000 записей, получили датасет для детекции и OCR на 10 000 записей, а это уже в 10 раз больше нашего начального объема ручной разметки. Берём этот датасет, и обучаем на нем нашу модель детекции и OCR и прогоняем реестр ещё раз  уже обученными моделями и получаем уже датасет не из 10000 а из 25000 повторяем несколько итераций и ух… У нас есть отличный датасет для работы с нашими специфичными данными размером в 45000 примеров, и модель обученная на нем уже вполне хорошо справляется с новыми данными. Результат по точности составил около 90-95%)