Нейросети и искусственный интеллект сейчас у всех на слуху. Многие эксперты говорят о том, что эта технология – просто игрушка. Практическое применение ИИ видится им нерентабельным. Но мы категорически не согласны. Ниже мы развеем мифы и расскажем о вполне реальном и финансово обоснованном применении технологий искусственного интеллекта – о компьютерном зрении в связке с парсингом экранов (скринов, изображений и т.п.).
Бизнес часто использует для решения своих задач методы автоматического сбора данных: для мониторинга конкурентов, для анализа стратегий и ассортимента, для проверки работы контрагентов и т.п. Почти всегда используется анализ текстовой информации на web-страницах. Но информация может храниться не всегда только в тексте. Это могут быть изображения, видео- и аудиозаписи, более сложные профессиональные форматы документов (3D-модели, выгрузки из CAD-систем и пр.). Как быть с ними?
По крайней мере то, что можно «увидеть», уже сегодня вполне точно можно и распарсить. Обо всех тонкостях и нюансах этого процесса ниже.
Что такое парсинг экрана (скрин-скрейпинг)?
Парсинг экрана (англ. screen scraping) – это процесс извлечения данных с изображений, скринов и экранов пользователей. Такой метод извлечения данных применяется тогда, когда невозможно использование более простых и дешёвых подходов, например, парсинг текста или HTML-структуры.
Отдельный подробный материал о том, что такое парсинг, в чём его преимущества и недостатки.
Часто случается так, что визуальные данные тоже содержат текст и надписи, которые можно считать, если ты человек и обладаешь зрением. Но для программ-парсеров, которые не могут получить данные к исходному коду страницы, например, как в случае с экраном мобильного приложения, задача становится непосильной.
И как раз в этом случае на помощь приходят технологии компьютерного зрения и распознавания изображений. Они могут заменить человеческие глаза и «увидеть», какая конкретно информация размещена на экране (например, на скриншоте или просто на фото).
Для чего используется скрапинг скринов?
Почти всегда парсинг трудится на нужды бизнеса. И парсинг скринов – не исключение. Наиболее вероятными ситуациями применения парсеров экранов можно назвать следующие:
- Исследование рынка и конкурентов. Сравнение разделов личных кабинетов, UI-подходы и стратегии (юзабилити), типовые надписи, правила использования и т.п. Часть работы можно выполнить вручную. Но если конкурентов много, то объём обрабатываемой информации возрастает в разы. Без систем автоматизации и распознавания скринов уже не обойтись.
- Мониторинг цен. Скрин-скрейперы помогут в тех случаях, когда стандартный парсер не может получить доступ к исходному коду web-страницы или к данным внутри мобильного приложения (интернет-магазина). Плюс, может применяться параллельное сравнение предложений в web-версии магазина и в мобильном приложении (самые крупные игроки используют разные подходы к формированию цен на мобильных и на десктопах).
- Мониторинг отзывов и формирование репутации (PR). Скрин-скрейперы справляются даже с очень сложными ситуациями по сбору реальных отзывов на разных площадках – в социальных сетях, в мессенджерах, на профильных сайтах, на досках объявлений и т.п. Напомним, что сейчас для выражения эмоций и для обозначения своей реакции используется не только текст, но и графика (смайлы, эмотиконы, стикеры и пр.).
- Проверка рекламных объявлений. Бизнес может размещать свою рекламу в разных местах. Но если верить партнёрам на «честное слово», то быстро прогоришь. Логично хотя бы точечно проверять выполнение условий договоров. Опять же, текстовые парсеры смогут проверить только код объявления, а не то, как оно в реальности выглядит на сайте или внутри мобильного приложения. А для скрин-скрейперов – это не проблема.
- Анализ UX (пользовательского опыта). Как понять, нравится ли клиенту интерфейс вашего личного кабинета или нет? Насколько он получился удобным, есть ли ошибки? Кто-то применяет специальные опросы, кто-то задействует метрики, но самый надёжный способ проверки любых интерфейсов – скриншоты. Парсер поможет автоматизировать обработку скринов и разложить их по категориям.
Могут быть и более сложные ситуации применения скрапинга экранов.
Пару слов про безопасность и конфиденциальность
Обратите внимание! Многие разработчики программ, особенно банковских сервисов, государственных цифровых услуг и т.п., стараются защитить информацию внутри своих продуктов.
Но ввиду того, что скрин-скреперы могут «видеть» происходящее на экране почти как обычные пользователи, они могут раскрывать конфиденциальную информацию и чувствительные данные, намеренно или непреднамеренно.
По этой причине нужно быть предельно осторожными. Риск взлома и потери денег существенно возрастает. Этот факт важно знать и учитывать.
В руках злоумышленника парсер скринов превращается в мощное оружие.
Как работают парсеры экрана
Когда речь идёт об анализе простого текста или web-страниц (которые фактически тоже представляют собой текстовые документы), то работа парсера ясна и понятна. Программа получает тело документа, ищет в тексте нужные элементы разметки или совпадения с заданной маской, а затем извлекает данные внутри элемента. Всё, данные можно заносить в таблицу и выгружать в нужном формате.
Небольшое исключение – работа с динамическим контентом, когда конечный HTML-документ формируется за счёт JavaScript-скриптов. В этом случае применяются так называемые «безголовые браузеры». Они получают URL-адрес, который нужно посетить, загружают страницу, обсчитывают все скрипты и только потом возвращают парсеру итоговый HTML-документ. Работа всё равно ведётся на уровне текста.
Но как парсить экран?
Человек обычно видит только конечный результат работы большинства программ. Вся работа пользователя происходит в так называемом графическом интерфейсе (GUI или Graphical user interface).
При этом программы всегда работают с данными, а не с интерфейсами. А так как парсеры – это тоже программы, то им на вход нужно подавать информацию в том виде, в котором они способны их «переварить».
В случае со скрин-скрейперами читаемым форматом будет изображение, например, скриншот экрана мобильного приложения, или PDF-файл, его можно создать в headless-браузере по API.
Далее в ход пускается средство распознавания текста – OCR (Optical character recognition, дословно «Оптическое распознавание символов») или компьютерное зрение (с применением специальных нейросетей).
OCR-программы работают почти как нейросети. У них в базе есть набор образов всех известных им букв, цифр и других знаков или символов. Исходное изображение нарезается на подходящие куски (квадраты или прямоугольники с контрастными элементами в центре), а затем каждая область символа «сжимается» до условного «стандарта» и сравнивается с базой эталонов (то есть с каждым отдельно взятым символом в базе). В итоге программа выберет тот символ из базы, который будет совпадать с эталоном больше, чем все остальные.
Компьютерное зрение устроено чуть сложнее. Изображение символов пропускается через специальную нейросеть. Обычно одна нейросеть настроена на работу с одним языком. Определённые нейроны натренированы обнаруживать только какой-то конкретный символ. В итоге нейросеть выдаёт сигнал того нейрона, который распознал «свою» букву точнее, чем все остальные.
Преимущество нейросети в том, что она не выдаёт разрозненные буквы и символы из разных алфавитов. Она сразу формирует слова. Этот эффект достигается уже за счёт дополнительных слоёв нейросети, которые натренированы искать слова, а не символы. Даже если один из символов будет распознан неверно на первом слое, его «скорректируют» на последующих слоях.
В итоге схема скрапинга экранов работает следующим образом:
- Программа-парсер делает скриншот экрана пользователя.
- Изображение подаётся в модуль распознавания текста (на основе OCR или на основе нейросети).
- Модуль возвращает текст, который смог обнаружить на скрине.
- Работает дальнейшая логика парсера (данные заносятся в таблицу или производятся другие действия, тут всё будет зависеть от целей и задач парсера).
- Готово.
Вместо нейросетей, применяемых для распознавания текста, можно использовать решения, способные распознавать и описывать объекты на картинке. В этом случае модуль распознавания будет возвращать в парсер не только текст, найденный на экране, но и описания объектов (вида «коричневый стул» или «шарф торговой марки N» и т.п.).
Разница между парсингом экрана и парсингом веб-страниц
По сути, мы уже частично ответили на вопрос выше:
- Парсинг web-страниц работает преимущественно с текстом HTML-документов.
- А парсинг экранов работает с изображениями и скриншотами. В первую очередь на изображениях ищется текст, но определённые нейросети позволяют извлекать и многие другие данные, например, текстовые описания объектов.
Основное отличие – наличие модуля для распознавания текста (OCR) или компьютерного зрения (натренированной нейросети).
Из-за этого модуля вытекают специфические преимущества и недостатки скрейперов экранов.
Плюсы скрин-скрейпинга (по сравнению с web-парсингом):
- Скрин-парсер может находить данные там, куда никак и никогда не получит доступ обычный текстовый парсер. Например, внутри мобильных приложений.
- Парсер не боится специальных ловушек и закладок в коде, предназначенных для выявления ботов и скриптов автоматизации. Он фактически видит то, что должен видеть обычный пользователь.
- Программа параллельно может решать ряд других специфических задач – анализ пользовательского опыта, обнаружение и описание визуальных объектов, и т.п.
- Так как визуализация web-страниц и преобразование их в изображения реализуется обычно через headless-браузеры, то расходы на прокси будут минимальными (безголовые браузеры умеют эмулировать поведение пользователей, поэтому риск срабатывания систем защиты от ботов будет минимальным).
На всякий случай материал о том, как парсить так, чтобы не получать никаких блокировок.
Минусы скрин-скрейпинга (по сравнению с web-парсингом):
- Отрисовка страницы сайта происходит в обычном или headless-браузере. А он потребляет значительный объём ресурсов, если сравнивать с классическим текстовым парсером. Каждый новый поток будет требовать новый экземпляр браузера, соответственно, потребление ресурсов будет расти лавинообразно.
- Если скрины делаются с мобильных приложений, то для их создания понадобятся специальные разрешения на уровне мобильной операционной системы. Естественно, работа каждого экземпляра приложения – это тоже вычислительные ресурсы. Чтобы запустить несколько потоков параллельно, потребуются специальные технологии виртуализации.
- Любое ПО для распознавания текстов потребляет много ресурсов ПК. Чем больше текста на скрине, тем дольше будет длиться процедура распознавания.
- Нейросети, реализующие алгоритмы компьютерного зрения, наиболее ресурсоёмкие. Для их работы потребуются специальные конфигурации с производительными графическими процессорами.
- Если процесс распознавания будет строиться на базе готовых удалённых сервисов и API (например, на базе Chat GPT), то потребуется оплата запросов. Они покупаются пакетами или по подписке.
- Создание парсера, способного «читать» скрины, будет заметно сложнее, чем создание простого текстового парсера.
- Данные с изображений не имеют разметки, как HTML-документы. Поэтому вычленить на распознанном изображении только нужные участки текста будет достаточно сложно.
Выводы и рекомендации
Каким бы продвинутым ни был ваш парсер, даже если он умеет распознавать скрины и эмулировать поведение пользователей, вам всё равно потребуются качественные прокси.
Только с помощью прокси можно обойти защиту по количеству одновременных подключений и тем самым ускорить сбор большого объёма данных.
Лучшие мобильные и резидентные прокси можно купить у нас. Froxy – это сервис №1 по качеству и стабильности. Отличный охват – 8,5 млн. IP, 200+ стран, точный таргетинг (до города и провайдера связи). До 1000 параллельных портов на аккаунт. Оперативная ротация. Оплачивается только трафик, а не количество прокси.