Распознавание документов на Steam Deck. А нужен ли мне мой ноутбук?
Привет, Хабр! Как вы знаете, мы в Smart Engines не только любим распознавать документы, но и распознавать очень разные документы на очень разных устройствах, от Odroid до Эльбруса.
Недавно у нас в руках оказалась игровая консоль Steam Deck. Мы решили проверить, насколько шустро она справляется с распознаванием в сравнении с обычным ноутбуком. Если вам интересно посмотреть на результаты бенчмарка Steam Deck в не совсем обычной для нее задаче, добро пожаловать под кат!
Steam Deck — портативная игровая консоль от компании Valve, анонсированная в 2021 и поступившая в продажу в 2022 году. Из коробки девайс управляется операционкой Steam OS (на базе Arch Linux) и весьма интересным кастомным гибридным процессором от AMD на базе Zen 2 и RDNA 2. Помимо предустановленной Steam OS производитель не запрещает устанавливать и другие операционки (например, Windows) и даже втыкать сторонние железки (например, RX 6900 XT). За последние два года на Хабре достаточно много писали про Steam Deck и, если вам интересно узнать о ней больше с геймерской точки зрения, рекомендуем вот этот обзор от Pixonic.
Еще одной интересной особенностью Steam Deck является возможность переключения в режим рабочего стола («Desktop Mode»), в котором тоже можно играть в игры (настроив предварительно обработку ивентов, поступающих с контроллера), а еще с помощью которого можно пользоваться девайсом как обычным десктопом под управлением Steam OS. Тем самым, на интересующий нас (ввиду профдеформации) вопрос -, а как быстро Steam Deck будет распознавать документы — ответ получить совсем несложно, нужно просто собрать и запустить на нем наш софт.
Что еще более характерно, поскольку Steam OS основана на Arch Linux, не пришлось ничего дополнительно собирать — бинарники, собранные на стоящем рядом ноутбуке с Arch Linux, без каких-либо вопросов сразу запустились на Steam Deсk. Даже установить банальный софт для записи видео с экрана simplescreenrecorder было несколько сложнее (чтобы установить что-то из pacman, необходимо сначала разрешить системе делать изменения в /usr, что делается командой $ steam-readonly disable. Утверждается, что после обновления Steam OS все такие изменения в /usr затрутся, но это проблема не сегодняшнего дня).
Распознавание греческого паспорта на Steam Deck при помощи Smart ID Engine v2.0.0
Итак, давайте испытаем Steam Deck в задаче распознавания документов и сравним его производительность с обычным десктопом. В качестве последнего будет выступать уже немного потрепанный ноутбук Lenovo ThinkPad P1 под управлением Arch Linux. Сравнение релевантных технических характеристик приведено в таблице ниже.
Характеристика | Геймерский Steam Deck | Рабочая лошадка ThinkPad P1 |
Операционка | Steam OS 3.4.8 | Arch Linux |
Версия ядра | 5.13.0-valve36–1-neptune | 6.1.6-arch-1–1 |
CPU | AMD Custom APU 0405 2.8 GHz | Intel i7–8750H 2.2 GHz |
Ядра (треды) | 4 (8) | 6 (12) |
RAM | 16 Gb | 16 Gb |
Запускаемые бинарники были абсолютно идентичны, и каждый раз при запуске были задействованы все ядра CPU.
1. Распознавание машиночитаемых зон при помощи Smart Code Engine v2.0.0
Начнем мы с простого — с распознавания машиночитаемых зон (MRZ) международных документов. В качестве тестового пакета для распознавания MRZ были взяты 100 изображений искусственно сгенерированных муляжей греческого паспорта из датасета MIDV-2020.
Все 100 изображений были загружены и обработаны на Steam Deck за 9.466 сек. (среднее по 3-м запускам), или по 95 мс на одно изображение. На ноутбуке эта же задача заняла чуть дольше: 10.365 сек., или по 104 мс на одно изображение.
2. Распознавание паспортов при помощи Smart ID Engine v2.0.0
Перейдем к распознаванию уже не только машиночитаемых зон, но и остальных полей, которые могут быть на удостоверяющем личность документе. В качестве тестовых пакетов были взяты все те же 100 фотографий муляжей греческого паспорта, а также 100 фотографий муляжей 3-й страницы паспорта РФ из датасета MIDV-2020.
Все 100 изображений греческого паспорта, но уже с поиском и распознаванием полного набора полей, были обработаны на Steam Deck за 15.574 сек. (среднее по 3-м запускам), т.е. по 156 мс на изображение, и за 14.708 сек. на ThinkPad P1, 147 мс на изображение, на сей раз чуть быстрее, чем на консоли.
100 изображений муляжей паспорта РФ, при распознавании которого используется другой принцип поиска документа и полей, были обработаны на Steam Deck за 26.292 сек. и чуть медленнее на ноутбуке: за 30.153 сек.
3. Просто распознавание текста при помощи Smart Document Engine v2.0.0
Наконец, замерим распознавание произвольного текста на русском языке. В качестве тестового пакета был взят учебник для средней школы «Астрономия» Б.А. Воронцова-Вельяминова (Издательство «Просвещение», Москва, 1966 г.) на 165 страницах. Исходник был в формате DJVU, перед распознаванием он был сконвертирован в набор JPG-ов с разрешением 300 DPI при помощи ImageMagick.
Распознавание текста на русском языке на Steam Deck при помощи Smart Document Engine v2.0.0
Все 165 изображений были обработаны на Steam Deck за 109.134 сек. (среднее по 3-м запускам), или по 661 мс на изображение. Ноутбук справился за 105.365 сек., т.е. по 639 мс на изображение.
Все проведенные замеры:
Задача | Steam Deck | ThinkPad P1 | ||
Суммарно | Один файл | Суммарно | Один файл | |
MRZ | 9.466 сек | 95 мс | 10.365 сек | 104 мс |
Греческий паспорт | 15.574 сек | 156 мс | 14.708 сек | 147 мс |
Паспорт РФ | 26.292 сек | 263 мс | 30.153 сек | 302 мс |
«Астрономия» Б.А. Воронцова-Вельяминова | 109.134 сек | 662 мс | 105.365 сек | 639 мс |
Даже несколько удивительно, как случайно попавшиеся под руку и совсем непохожие друг на друга железки показали настолько близкие результаты. Сама по себе производительность Steam Deck не очень удивляет — все-таки на борту современный процессор, предназначенный для хорошей работы современных игрушек.
Но вот смотрю я на свой ThinkPad, на внешний монитор, внешнюю клавиатуру и мышь, и думаю — может быть, я и без него уже смогу обойтись? Эх, жалко порт у Steam Deck всего один, без докстанции подключать все это добро к консоли не очень эргономично.
Надеемся, что наш небольшой эксперимент показался вам интересным. С точки зрения практического использования Steam Deck, конечно, не совсем подходит для распознавания документов хотя бы по эргономическим соображениям (эх, вот если бы в нем была камера…). Не приходит на ум, как использовать в этой задаче джойстики, акселлерометр и тому подобное добро. Но если мы придумаем, как их применить в связке с каким-нибудь другим нашим софтом, то обязательно про это напишем.