トレーディングカード在庫を自動化:Raspberry Pi、LEGO、AWS Rekognitionでデジタルカタログを構築
Raspberry Pi、LEGOベースのプラットフォーム、AWSサービスを活用して、トレーディングカードやコレクタブルカードのデジタルカタログを構築する方法を紹介します。
背景
Magic: The Gatheringのカードが入った箱を発見した際、自分が何枚持っていて、それらの価値がいくらなのかを知りたくなりました。手作業で1枚ずつ記録するのは非現実的だったため、プロセスを自動化することにしました。このソリューションは、Raspberry Pi、カスタムLEGOプラットフォーム、AWS S3およびRekognitionを組み合わせたものです。
処理の流れ
- LEGOプラットフォームに搭載したRaspberry Piカメラでカードのタイトル部分を撮影
- 画像をAWS S3バケットにアップロードし、バッチ処理用に保存
- AWS Rekognitionでテキストを抽出し、価格APIを照会して現在の市場価値を取得
LEGOプラットフォーム
木工の代わりに、中型のLEGO収納ボックスを採用しました。安価で衝撃が少なく、カードを安全に保持できます。設計はかつて所有していた7ドルのカードソーターから着想を得ています。リアサーボがホイールを回転させ、1枚ずつカードを送り出し、フロントホイールでデッキを安定させます。数枚のカードをテープで束ねて重みを加え、1サイクルで1枚のみが動くように調整しました。カメラはプラットフォームの数インチ上に設置し、タイトル部分を精確に撮影できる角度に固定しています。
リボンケーブルの長さがわずかな課題でしたが、より長いケーブルを使用することで信頼性が向上しました。
ハードウェア構成
Raspberry Piは、サーボ制御と画像撮影を行うPythonスクリプトの実行に最適です。必要なコンポーネント:サーボモーター2台、Piカメラ、5V電源(ブレッドボード経由で接続)。
ソフトウェア実装
すべてのコードはPython 2.7で記述されています。1つ目のスクリプトがサーボを駆動して写真を撮影し、2つ目がS3に保存された画像をRekognitionで処理します。
セットをプラットフォームに載せた後、以下を実行します:
python mtg_servo.py <セット略称>
これによりサーボが作動し、カードがスキャンされ、各画像がセット略称(例:M13)にちなんだフォルダに保存されます。スループットは約20〜25枚/分を達成しました。
AWS S3とRekognitionの活用
TesseractやOpenCVも強力ですが、Rekognitionは照明や位置のばらつきに強く、導入が容易です。AWSアカウント(無料で作成可能)があれば、無料枠で月間5,000枚まで処理できます。画像は手動でアップロード(簡易ガイドあり)し、ローカルのディレクトリ構造をそのままS3バケットにミラーリングします:/セット名/ファイル.jpg。
以下のスクリーンショットは、不完全な写真でもRekognitionが高精度でテキストを検出できることを示しています。
すべての画像がS3に揃ったら、OCRを自動化し結果をCSVに出力します:
python Rekognize_S3.py <セット略称>
920枚をスキャンした結果:
- 完全一致:619枚(67.3%)
- 1文字違い:201枚(21.8%)
- 2文字以上の相違:100枚(10.9%)
OCR後、TCGplayerのAPIでリアルタイム価格を照会しました。すでに評価済みのカードを除くコモン、アンコモン、レアの総額は約275ドルでした。
※ 2018/05/27 更新: Rekognitionスクリプトが検出テキストをTCGplayer APIにリアルタイムでストリーミングし、結果をファイルに書き出すようになりました。API利用には簡単な申請プロセスが必要です。
まとめ
このプロジェクトが、あなた自身のデジタルカードカタログ構築のきっかけになれば幸いです。今後はスポーツカードや他のコレクタブルセットへの展開も計画しています。楽しいスキャンライフを!
出典: Trading Card Scanner/Organizer
製造プロセス