Автоматизированная инвентаризация коллекционных карт: Raspberry Pi, LEGO и AWS Rekognition
История проекта
Накоряв старую коробку с картами Magic: The Gathering, я захотел узнать, сколько у меня карт и какова их стоимость. Ручной учет занял бы вечность, поэтому я решил автоматизировать процесс. Решение объединило Raspberry Pi, платформу из LEGO и сервисы AWS (S3 и Rekognition).
Принцип работы
- Камера Raspberry Pi, закрепленная на платформе LEGO, фотографирует название каждой карты.
- Изображения загружаются в бакет AWS S3 для хранения и пакетной обработки.
- AWS Rekognition распознает текст, после чего API ценовой базы (TCGplayer) выдает текущие рыночные значения.
Платформа из LEGO
Вместо столярных работ я использовал средний контейнер LEGO — дешевое, компактное решение, безопасное для карт. Конструкция вдохновлена купленным за $7 сортировщиком. Задний сервопривод вращает колесо, которое по одной сдвигает карту вперед, а переднее колесо удерживает колоду. Несколько склеенных карт добавлены для веса, гарантируя подачу строго одной карты за цикл. Камера установлена в нескольких дюймах над платформой под точным углом для захвата области с названием.
Небольшой вызов — длина шлейфного кабеля; более длинный кабель повышает надежность.
Аппаратная часть
Raspberry Pi идеально подходит для запуска Python-скриптов, управляющих сервоприводами и съемкой. Необходимые компоненты: два сервопривода, камера Pi и блок питания 5 В (подключенный к макетной плате для удобства).
Программное обеспечение
Весь код написан на Python 2.7. Один скрипт управляет сервоприводами и делает снимки; второй обрабатывает изображения в S3 с помощью Rekognition.
После загрузки набора на платформу запускаем:
python mtg_servo.py <abbreviation_of_set>
Скрипт активирует сервоприводы, сканирует карты и сохраняет каждое изображение в папку, названную по аббревиатуре набора (например, M13). Производительность — около 20–25 карт в минуту.
AWS S3 и Rekognition
Хотя Tesseract и OpenCV мощны, Rekognition выигрывает в простоте и гибкости при разном освещении и позиционировании. С бесплатным аккаунтом AWS можно обрабатывать до 5000 изображений в месяц. Фотографии загружаются вручную (доступна краткая инструкция) в бакет S3, повторяющий локальную структуру: /имя_набора/файл.jpg.
Скриншоты ниже демонстрируют высокую точность Rekognition даже на неидеальных снимках.
Когда все изображения в S3, автоматизируем OCR и экспорт в CSV:
python Rekognize_S3.py <abbreviation_of_set>
Результаты по 920 отсканированным картам:
- 619 — точное совпадение (67,3%)
- 201 — ошибка в одной букве (21,8%)
- 100 — ошибка более чем в одной букве (10,9%)
После OCR я запрашивал API TCGplayer для получения актуальных цен. Общая стоимость обычных, необычных и редких карт (исключая уже оцененные) составила около $275.
Обновление 27.05.2018: Скрипт Rekognition теперь в реальном времени передает распознанный текст в API TCGplayer, записывая результаты в файл. Доступ к API требует краткой регистрации.
Заключение
Надеюсь, этот проект вдохновит вас на создание собственной цифровой каталогизации карт. Планирую расширить систему на спортивные карты и другие коллекционные наборы. Удачного сканирования!
Источник: Trading Card Scanner/Organizer
Производственный процесс
- Янтарь: от древней смолы к научному сокровищу — история, свойства и современное использование
- Концентрированный суп: от инновации Дорранса 1899 года к мировым рынкам
- Эволюция маски вратаря: от кожи к высокотехнологичной защите
- Гильотина: история, конструкция и наследие
- Искусство и ремесло надгробий: история, материалы и современное производство
- Боксерская груша: история, дизайн и передовые инновации
- Кремний: свойства, производство и рыночный обзор
- Водка: от древней дистилляции к современному производству
- Игральные карты: история, дизайн и современное производство
- Железо: свойства, история и повседневные применения