OCR для маркетплейсов: Тестирование 7 моделей для автоматического сбора данных с инфографики товаров
Привет! Меня зовут Данила, я менеджер интернет-проектов в бренде бытовой техники GARLYN. Меня дико увлекает аналитика и использование ИИ-моделей для поиска лучших товаров на рынке. В этой статье расскажу про то, как я пытался собрать dataset на базе инфографики товаров с использованием компьютерного зрения.
Почему я вообще решил заняться этой задачей
Если честно, для качественной аналитики нужен качественный dataset. Если данные неполные или неверные, то увидеть зависимости и закономерности практически невозможно.
Недавно столкнулся с проблемой при анализе товаров на Wildberries. В отличие от Ozon, где селлеры выбирают значения из готовых списков, на WB поля характеристик — это просто текстовые поля, куда продавцы могут написать абсолютно любой текст. И это реально создает проблемы для аналитики.
Смотрите, поле мощности у пяти разных селлеров на WB может быть заполнено так:
- 2000
- 2000 Вт
- две тысячи ватт
- 2000 WT
- (пусто)
С числовыми параметрами еще можно как-то справиться, но с дополнительными функциями или комплектацией возникают настоящие сложности.
НО после размышлений я понял, что селлеры, нацеленные на продажи, вкладываются в инфографику, где указывают основные характеристики, УТП и комплектацию. Именно там содержится максимально актуальная и полная информация!
Поэтому решил спарсить картинки инфографики для категории аэрогрилей. В моей выборке оказалось 610 артикулов и около 7,000 изображений.
Результаты на практике
Лучшая среди платных и бесплатных:
Лучше среди opensource моделей
Как я оценивал качество?
Для оценки качества OCR моделей использовал два основных метрических показателя:
CER (Character Error Rate) — процент символов, которые система OCR распознала неправильно. WER (Word Error Rate) — процент слов, которые система OCR распознала неправильно.
Чтобы объективно сравнить модели:
- Прогнал все модели на одном и том же наборе данных
- Создал gold_standard (эталонный текст) для каждой тестовой картинки вручную. Переписал весь текст с разделнием на текстовые блоки
- Разработал скрипт для автоматического расчета метрик CER и WER
- Прогнал все модели для оценки
- Для opensource моделей я прогонял скрипт два раза. Первая оцкенка - оценка cer & wer для не обработанного текста, а втонрой сбор - тот же текст, но после обработки его через LLM, которая испаравляла грамматические ошибки и убирала лишние символы.
Пару слов о каждой модели OCR
7. PaddleOCR (CER: 0.364700, WER: 0.690350)
Это открытый проект от Baidu, который должен распознавать текст на разных языках и при этом не использует много ресурсов. Если честно, показал самый высокий уровень ошибок — почти 37% неверно распознанных символов и 69% неверно распознанных слов. Самая сложная установка, так как при установке на Windows возникают проблемы, и приходится накатывать "колеса" и настраивать виртуализацию.
Что я реализовал: он умеет использовать EasyOCR как запасной вариант, когда сам не справляется (послек обаботки стоится прогноз в уверенности. С каким конфиденсом модель уверена в том, тексте, котрый она распознала). Делает всякую предобработку исходной фотографии — фильтры, повышение резкости, чтобы увеличить контрастность текста и потом проще его распознать. Если уверенность распознавания ниже 0.8, вырезает кусок картинки и пропускает через EasyOCR. В теории должно помогать с кириллицей, но на практике не особо.
Вердикт: Несмотря на гибкость в работе с разными языками, PaddleOCR показал наихудшие результаты, что делает его непригодным для задач по анализу инфографики товаров.
6. Tesseract (CER: 0.238350, WER: 0.568800)
Это классика от HP и Google. Использует старый-добрый алгоритм выделения связных компонентов для идентификации символов. Стала основой для многих коммерческих OCR-систем еще в начале 2000-х, но сейчас уже не торт.
Быстро разворачивается, дает супер быстрый результат, но качество сильно страдает — с ошибкой в 24% символов и 57% слов плохо справляется с нестандартными шрифтами.
Вердикт: Хотя Tesseract легко настроить, для распознавания сложной инфографики его точности явно недостаточно.
5. Tesseract + Detectron2 (CER: 0.233050, WER: 0.467567)
Заколебался с установкой Detectron2, а по факту он дал прямо сомнительные результаты, кажется, не стоит своего времени. Суть в том, что это комбо должно сначала определять через Detectron2 типы блоков (текст, заголовок, таблица), а потом распознавать текст отдельно в каждом через Tesseract. С показателями ошибок в 23% для символов и 47% для слов имеет ограничения при работе с вертикальными текстами и сложным форматированием. Столько мороки с предобработкой — преобразование в оттенки серого, выравнивание гистограммы и вся эта муть, а толку чуть.
Вердикт: Комбинация Tesseract с Detectron2 немного улучшает WER по сравнению с базовым Tesseract, но установка и настройка этого решения настолько сложна, что не оправдывает небольшое улучшение качества.
🥇4. Победитель среди бесплатных. EasyOCR (CER: 0.216250, WER: 0.554700)
Это открытая Python-библиотека с моделями глубокого обучения для распознавания текста на 80+ языках. Работает в два этапа: сначала находит области текста, потом распознает символы.
Лучшая из open source моделей, но есть свои ограничения: как минимум нужно постоянно очищать память, а самый важный фактор — если у вас нет видеокарты, это время, которое уходит на генерацию! На 7к картинок может спокойно уйти сутки, и компьютер будет выть от боли.
Технически там внутри вообще трехэтапный каскад, с порогом достоверности 0.75:
1 этап. Обработка через EasyOCR
2 этап. Если значение EasyOCR ниже 0.75, то идет расчет Tesseract и Paddle OCR
3 этап. Результаты от всех моделей приводятся к общему знаменателю и выбирается лучшая
А для экономии памяти приходится переинициализировать движки каждые 100 товаров и запускать сборщик мусора после каждой картинки.
Вердикт: Лучшая из протестированных open source моделей, но для обработки большого количества изображений требует мощного GPU и значительного времени. Может быть вариантом для небольших проектов.
Важно! На этом заканчиваются "бесплатные" модели
Вот на сколько улучшились значения OCR после обработки их ИИ (в качестве модели взял gpt-4.1-mini, так как она лучше должна следовать инструкциям
Промт на скрине:
А вот и результаты:
3. OCRspace API (CER: 0.079900, WER: 0.217500)
Коммерческий сервис с крутыми показателями — всего 8% ошибок на уровне символов и 22% на уровне слов. Хорошее решение, для многих проектов подойдет, так как есть бесплатный доступ — около 25 000 изображений в месяц и максимум 500 запросов в день. Я уже был готов оплатить, но кнопка покупки никуда не ведет, поэтому 3 место. Качество крутейшее, но это и не open source, и не платное решение — чемодан без ручки: отказываться жалко, но и полностью использовать нельзя. В техническом плане это просто REST API, отправляешь картинку с параметрами "русский язык", "bounding box", вот это всё, и получаешь в ответ текст с координатами. Минимум кода, но при этом он отлично отрабатывает очень сложные кейсы:
- таблицы
- положение текста (про вертикали, по кругу и тд)
Вердикт: По точности OCRspace API показывает отличные результаты, но ограничения бесплатного тарифа и сложности с покупкой платного тарифа делают его не лучшим выбором для масштабных задач.
Ссылка, чтобы ознакомиться с тарифами:
2. GPT-4-Turbo (CER: 0.094099, WER: 0.258950)
Вообще в начале знакомства с OCR, я надеялся, что именно эта модель закроет все мои боли, но очень-очень дорого. на скрине сравнение двух моделей (платной // бесплатной):
Это модель от OpenAI, которая использует трансформерную архитектуру для понимания контекста. Показывает низкий уровень ошибок — 9.4% символов и 26% слов, особенно хороша для сложных документов с нестандартным форматированием. Единственный минус — это стоимость, но возможности фантастические, так как можно через промпт попросить описать очень подробно весь дизайн и на базе этого уже делать какие-то классификаторы или платформы для подбора баннеров. Технически использует API OpenAI с параметром "detail": "high", и не просто распознает текст, но и контекстуально анализирует содержимое картинок.
Вердикт: GPT-4-Turbo — отличное решение для сложных задач распознавания, но его стоимость ($0.02 за одно изображение) делает его непрактичным для обработки больших объемов данных. Для 5000 изображений затраты составили бы около $100.
🏆1. Google Vision (CER: 0.104450, WER: 0.290600) - ПОБЕДИТЕЛЬ
Это коммерческий OCR от Google с использованием нейронок для понимания структуры документа. Эффективно работает с таблицами и многоколоночными текстами. Супер! В триале дается сразу же $300, чего хватает за глаза. Качество просто восторг. При обработке 7224 изображений стоимость составила всего 3 евро (3 копейки на картинку), в сравнении с OpenAI — 15 копеек на картинку.
При этом не нужно углубляться в настройки/подбор модели/ломать голову где она будет находиться + время! Гугл справился буквально за 3-4 часа — сверхбыстро и дешево, против суток при использовании локальных моделек. Техническая реализация тоже без заморочек — загружаешь картинки по URL из CSV-файла и отправляешь в облако. В коде меньше 100 строк, больше половины остутпы и подклбчение библиотек =)
Минус для тех, кто в РФ — ищите карту, которая действительна и зарубежная, тогда сможете активировать бесплатный период.
Вердикт: Абсолютный победитель тестирования! Google Vision предлагает оптимальное сочетание цены (3 копейки за изображение), скорости (7224 изображения за 3-4 часа) и качества распознавания. С $300 бесплатного кредита при регистрации в Google Cloud можно обработать огромное количество изображений без затрат.
А по ссылке можете глянуть результаты по каждой кратинке для каждой модели + исходные тексты и обработанные.
Заключение
Лучшая Google Vision — абсолютный победитель по соотношению цена/качество/скорость. При стоимости всего 3 копейки за изображение и обработке более 7000 изображений за 3-4 часа, это оптимальное решение для масштабных проектов. Бонусом идут $300 бесплатного кредита при регистрации.
На что в первую очередь важно отметить. А данные то улучшились? Конечно, я хотел вообще уйти от описаний и характеристик и парсить только картинки. Но так не получится. Все таки стоит использовать этот инструмент, только в качестве вспомогательного, чтобы заполнять пустые строки в дата сете
То, с чем я борюсь и пока не могу поменять видение: если есть уже готовый продукт, то нет смысла пытаться развернуть у себя аналог. Пример с Space OCR, в теории не такие большие деньги, но при этом их команда обрабатывает все сценарии с текстом -- таблицы, колонки. Это ускоряет вас, так что пользуйтесь и не тратьте время на то, что уже готово! Заплатить 2к явно не так много при условии, что вы сэкономите 1 день.
А в своем телеграм-канале рассказываю каждый день, как я работаю над своими пет-проектами, посты на тему статьи:
Смотрим, подписываемся!