أفضل تعرّف على البطاقات في البث المباشر. صُمّم لفتح الصناديق وحزم البطاقات والعروض المباشرة.
يتابع cardstream فتحك للصناديق أو حزم البطاقات أو عرضك المباشر، ويتعرّف على كل بطاقة تداول لحظة دخولها الإطار: الاسم والمجموعة ودرجة الثقة، مباشرةً على الهواء. حلّل بثوث التسوق المباشر بنظام يتتبّع البطاقات. لصنّاع البث الذين يريدون أن يعرفوا أكثر.
من Pokémon إلى Magic: The Gathering
بدّل الفئة في كل عرض فيتبعها المحرّك كله: الكشف والترشيح وطلب التعرّف تتجه كلها إلى نقطة النهاية الصحيحة. وكل مطابقة تعود بالاسم والمجموعة ورمز المجموعة ورقم البطاقة والسلسلة والسنة.
ألعاب بطاقات التداول
collectibles/v2/tcg_id بطاقات TCG الفردية، الحديثة منها والقديمة، مباشرةً من البث. تقرأ نقطة النهاية الرسمة وإطار البطاقة والنص، فيجري التعرّف على البطاقة من الصورة نفسها التي ينظر إليها مشاهدوك: بلا بحث عن رمز المجموعة، ولا تدقيق في رقم البطاقة الصغير.
- Pokémon
- Magic: The Gathering
- Yu-Gi-Oh!
- One Piece
- Lorcana
- Digimon
- Dragon Ball Super
- Flesh and Blood
- Star Wars Unlimited
- Star Wars Destiny
- MetaZoo
- Riftbound
- Weiss Schwarz
- Union Arena
- Force of Will
- Grand Archive
- Vanguard
- Marvel Champions
- Sorcery
- Final Fantasy
- Gundam
- Duel Masters
- Naruto Mythos
- Hololive
- Garbage Pail Kids
البطاقات الرياضية sport_id
بطاقات اللاعبين الصاعدين (Rookie) والنسخ الموازية (Parallel) والإضافية (Insert) والموقّعة (Auto) في كل الرياضات الكبرى: البيسبول وكرة السلة وكرة القدم الأمريكية وكرة القدم والهوكي وغيرها. البطاقة بعينها، والمجموعة بعينها، والسنة بعينها.
البطاقات المقيّمة (Slabs) slab_id
يقرأ ملصق العلبة المقيّمة: البطاقة التي داخل علبة PSA أو BGS أو CGC يجري التعرّف عليها دون كسر العلبة.
القصص المصوّرة comics_id
يجري التعرّف على الأغلفة بالطريقة نفسها التي تُعرف بها البطاقات: العنوان والعدد والسنة، من إطار واحد مستقر.
اربط نظام تعرّف تجاريًا، أو نظامك الخاص
كل ما يقرر هل يُرسَل طلب أم لا يحدث قبل التعرّف نفسه: الكشف ومرشّح الحركة ومرشّح البطاقة نفسها تعمل كلها محليًا ولا ترتبط بأي مزوّد. أما الطلب نفسه فخطوة واحدة قابلة للاستبدال: Ximilar جاهز من البداية، أو خدمة تجارية للتعرّف على البطاقات، أو نموذج درّبته بنفسك وتستضيفه على أجهزتك.
هي واجهة صغيرة واحدة: تدخل صورة مقصوصة للبطاقة وتخرج مطابقة. نفّذ IdentifyTarget فيبقى كل مرشّح وتقنين وعتبة أمامها يعمل كما كان تمامًا: صورة مقصوصة واحدة لكل بطاقة مختلفة، أيًّا كان من يجيب عنها.
# نظام التعرّف الخاص بك، والمحرّك نفسه class HouseIdentifier(IdentifyTarget): def identify(self, crop_bgr): return my_service.match(crop_bgr) # صورة مقصوصة واحدة لكل بطاقة مختلفة في الحالتين $ cardstream-web --detector rfdetr
طلب واحد لكل بطاقة، لا لكل إطار
الغاية أن يقتصر تحليل البث على الطلبات التي تخبرك فعلًا بشيء جديد. إنه البديل مفتوح المصدر للخدمات المغلقة للتعرّف على البطاقات: لا منصة وسيطة ولا ترخيص لكل مستخدم. أجهزتك أنت، ومفتاح API الخاص بك، وآلة حالات لا ترسل طلبًا إلا حين تكون البطاقة التي في الإطار جديدة فعلًا.
مسار معالجة بسيط يعمل على كل إطار بمعدل 15 fps يرسل 54,000 طلب تعرّف في الساعة. أما cardstream فيرسل طلبًا واحدًا لكل بطاقة مختلفة تعرضها، أي نحو مئة طلب في الساعة نفسها.
الساعة نفسها والفيديو نفسه والبطاقات نفسها: 54,000 طلب مقابل نحو 100. مرشّح الحركة ومرشّح الهوية يعملان محليًا على أجهزتك، ولا يخرج طلب إلا حين تستقر في الإطار بطاقة جديدة فعلًا.
لا اشتراك في خدمة سحابية، ولا تسعير لكل مستخدم، ولا ارتباط بمزوّد واحد. استضف المنظومة كلها عندك مع التعرّف، أو اربطها بـ Ximilar API.
كل ما يحتاجه عرض بطاقات على البث
مساعد لا تفوته بطاقة: لبائعي التجارة المباشرة على منصات مثل Whatnot وFanatics Live، ولعروض فتح الصناديق، وبثوث متاجر البطاقات، وفهرسة مقتنياتك. في كل مكان تقف فيه بطاقة أمام كاميرا.
تُعرف لحظة دخولها الإطار
لا زر مسح ولا انتظار. اعرض البطاقة فحسب: يظهر الاسم والمجموعة ودرجة الثقة خلال نصف ثانية تقريبًا، مباشرةً على البث.
طلب واحد لكل بطاقة
مرشّح للحركة ومرشّح للهوية يعتمد على التضمين يعملان محليًا على معالج جهازك. أمسك البطاقة ثابتة فلا يتكرر أي طلب. بدّل البطاقة فيخرج طلب جديد واحد بالضبط.
أي مصدر بث
كاميرا الويب وملفات الفيديو وRTSP وRTMP وSRT: يسحبها بنفسه، أو يستقبلها مباشرةً من OBS مع --listen. وتدفقات JPEG عبر WebSocket للتجهيزات الخاصة.
أي نظام تعرّف
Ximilar collectibles/v2 جاهز من البداية، أو وجّه المحرّك نفسه إلى نظام تعرّف تجاري، أو إلى نظام درّبته وتستضيفه بنفسك.
استخدم نماذجك
أوزان محدِّد الموقع من عندنا: نموذج تقطيع RF-DETR مضبوط بدقة، برخصة Apache-2.0، يجلبه المثبّت. وكواشف مربعات الإحاطة (RF-DETR وRT-DETRv2) مدعومة أيضًا إن فضّلت استخدام تصديرك الخاص.
مفتوح المصدر، على أجهزتك
حزمة Python واحدة برخصة متساهلة. اقرأها، وتفرّع منها، وشغّلها على أجهزتك. مفتاحك وبياناتك وبنيتك التقنية.
ذكي بما يكفي ليعرف متى لا يرسل طلبًا إلى API
بين بثّك وبين API تقف آلة حالات. كل إطار يمر عبر DecisionCore، وهي آلة حالات واحدة تعمل محليًا، وثلاثة مرشّحات محلية تقرر متى تكون خطوة API الوحيدة مبرَّرة فعلًا.
الكشف
محلي · بلا طلب APIيجد أركان البطاقة الأربعة ويعدّل ميلها ليخرج بصورة مقصوصة نظيفة. يقنّنه مرشّح الحركة المحلي على ثلاثة مستويات: حركة، بطاقة ثابتة، إطار فارغ.
مرشّح الحركة
محلي · بلا طلب APIمتوسط الفرق بين الإطارات، وهو حساب زهيد الكلفة. لا تستحق البطاقة نظرة أدق إلا بعد أن يستقر المشهد N إطارًا. ما زالت تتحرك؟ ينتظر.
مرشّح الهوية
محلي · بلا طلب APIمقارنة بالتضمين تجيب عن سؤال واحد: هل هذه هي البطاقة السابقة نفسها؟ إن كانت هي، يعيد إرسال النتيجة المحفوظة.
التعرّف
ximilar · طلب واحدالبطاقة الجديدة فعلًا والمستقرة هي وحدها ما يطلق طلب تعرّف إلى Ximilar: غير متزامن، بمهلة تمنع التكرار، وخارج حلقة الإطارات. ثم تُدفع النتيجة إليك مباشرةً.
هل تبثّ بمفردك؟
شخص واحد وكاميرا واحدة وليلة طويلة من فتح الصناديق: لا ينبغي أن تحتاج إلى فريق هندسي لتعرف أي بطاقة على الشاشة. اربط البث الذي تشغّله أصلًا ودع cardstream يحلّله مباشرةً، سواء كنت تبيع على منصة بيع أو من قناتك مباشرةً.
- Whatnot
- Fanatics Live
- eBay Live
- TikTok Shop
- Twitch
- YouTube Live
- موقعك الخاص
لا وصول إلى حسابك، ولا مفاتيح API لمنصات البيع، ولا بوت في محادثتك، ولا علاقة له بأي من هذه المنصات. يقرأ cardstream الفيديو ولا شيء غيره.
تبثّ أصلًا من OBS
أضف مخرجًا آخر بجانب المخرج الذي يغذّي عرضك. يرى المشترون ما كانوا يرونه تمامًا، وتصل نسخة من البث نفسه إلى cardstream، فيتعرّف على كل بطاقة توضع على الطاولة وهي تمر. المستقبِل في الأسفل يحتاج إلى برنامج ffmpeg المثبّت على النظام، أو استغنِ عن المخرج الثاني كليًا ودع cardstream يقرأ الكاميرا الافتراضية في OBS كأنها كاميرا ويب عادية.
$ cardstream-web --listen \ --source rtmp://0.0.0.0:1935/live # وجّه الهدف الثاني في OBS إلى هنا
أو الكاميرا الموجودة أصلًا على الطاولة
كاميرا علوية، أو جهاز التقاط الفيديو، أو هاتف يعمل ككاميرا ويب: أيًّا كان ما تفتح حزم البطاقات وتكشفها تحته. يجري التحليل على الجهاز المجاور للكاميرا، ولذلك لا يغادر الغرفة افتراضيًا إلا صورة مقصوصة واحدة لكل بطاقة.
$ cardstream-web --source 0 # كاميرا الويب · واجهة المتصفح على localhost
أو أي شيء له رابط URL
المرمِّزات، ومبدِّلات الفيديو، وخدمات إعادة البث، واستوديو ثانٍ في الطرف الآخر من المدينة. يسحب عبر RTSP وRTMP وSRT، ويقبل تدفقات JPEG عبر WebSocket حين تكون تجهيزاتك من صنع يدك.
$ cardstream-web \
--source rtsp://studio/stream1 تراكب مباشر
يظهر الاسم والمجموعة ودرجة الثقة لحظة استقرار البطاقة: جاهزة لتقرأها بصوتك، أو لتدمجها في مشهدك.
كل بطاقة مسجَّلة
سجل متواصل لكل ما عرضته: صورة مصغّرة لكل بطاقة ومدة بقائها على البث. احفظه في حسابك على Ximilar وراجع العرض في صباح اليوم التالي: ما الذي بيع، وكم كانت قيمته.
على مقاس شخص واحد
لا رسوم منصة ولا ترخيص لكل مستخدم. عرض من ثلاث ساعات يعني حفنة من طلبات التعرّف، لا طلبًا لكل إطار.
عرضك محفوظ وجاهز للمراجعة
يعمل cardstream على جهازك ولا يحتفظ بشيء افتراضيًا. أضف خيارًا واحدًا فتُحفظ كل بطاقة تعرضها أيضًا في جلسة داخل حسابك على Ximilar، مع سعرها ومدة ظهورها على الشاشة والصورة المقصوصة التي جرى التعرّف عليها منها. افتح تطبيق Ximilar بعد العرض واعرف كم كانت قيمته.
$ cardstream-web --price-stats \ --ximilar-stream NEW # يطبع معرّف الجلسة ويحفظ أثناء العرض
العرض بالأرقام
المنتجات المعروضة، وطلبات API المدفوعة، والقيمة السوقية، ومتوسط مدة الظهور على الشاشة لكل جلسة، وبجانبها المنتجات الأعلى قيمة والمجموعات الأكثر تكرارًا.
كل بطاقة مع صورتها
كل صف يحتفظ بالبطاقة والمجموعة والرقم والسعر والصورة المقصوصة التي جرى التعرّف عليها منها. ابحث في القائمة باسم المنتج أو المجموعة، وصفِّ جلساتك حسب الحالة والمنصة والتاريخ.
اجعله سجلك الخاص
علّم ما بيع، وأضف ملاحظة، وصحّح مطابقة خاطئة أو سعرها، واحذف المطابقة الزائفة. سمِّ الجلسة وأرفق بها بياناتك الخاصة: رقم الدفعة، والتكاليف، والمشترين.
أكمل من حيث توقفت
أعدت التشغيل في منتصف العرض؟ مرّر معرّف الجلسة بدلًا من NEW فيستمر العرض في الجلسة نفسها، حتى بعد إغلاقها. والخيار --ximilar-workspace يحفظه في مساحة عمل الفريق.
متوقف افتراضيًا: بدون --ximilar-stream يكون طلب التعرّف هو الشيء الوحيد الذي يغادر جهازك. يتطلب الحفظ تفعيل خدمة Cardstream في حسابك على Ximilar، ولا تُحتسب رسوم إلا على بدء الجلسة، والخيار --no-ximilar-stream-images يقصر الحفظ على النص.
من الصفر إلى التعرّف المباشر في 3 خطوات
ثبّته
virtualenv، وملف wheel الخاص بالإصدار (بعد التحقق من مجموعه الاختباري)، وأوزان النماذج، والأمران كلاهما على PATH. شغّل السكربت، أو ثبّت ملف wheel نفسه من PyPI عبر pip (الأوزان تُنزَّل على حدة)، أو انسخ المستودع وابنِه بنفسك. أما Docker وWindows ففي صفحة التنزيل.
$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh # طرق التثبيت الأخرى ← cardstream.ai/download
$ pip install 'cardstream[client,onnx]' # أو: uv tool install 'cardstream[client,onnx]' # ملف wheel لا يحتوي على الأوزان: فكّ ملفَّي tarball من cardstream.ai/models # ووجّه الخيارين إليهما: $ cardstream-web --segmentor-model segmentation_model/onnx/model.onnx \ --embed-model similarity_model/onnx/model.onnx
$ git clone https://github.com/Ximilar-com/cardstream && cd cardstream $ ./scripts/build-from-source.sh --models $ source .venv/bin/activate
اربط نظام تعرّف
Ximilar collectibles/v2 جاهز من البداية، ومفتاح من ximilar.com هو بيانات الاعتماد الوحيدة التي يحتاجها النظام كله. أو وجّه الخطوة نفسها إلى نظام التعرّف الخاص بك.
$ export XIMILAR_API_KEY=your-key
وجّه الكاميرا إلى بطاقة
افتح واجهة المتصفح على كاميرا الويب، أو زوّده بعرضك: يسحبه عبر RTSP، أو دع OBS يرسل RTMP إليه مباشرةً. تفتح صناديق مجموعة واحدة طوال الليل؟ حدّدها مسبقًا فتكفّ نقطة النهاية عن التخمين: بطاقات Pokémon الإنجليزية من مجموعة CRI تعني ثلاثة أشياء أقل يمكن الخطأ فيها. استخدم --alphabet كلما استخدمت --game، لأن تحديد اللعبة مسبقًا يوقف كشف نقطة النهاية لنظام الكتابة. أضف --price-stats فتأتي مع كل مطابقة أسعار السوق بالدولار الأمريكي: الوسيط والنطاق وآخر عملية بيع، على البطاقة وفي السجل. وأضف --ximilar-stream NEW لحفظ العرض في حسابك على Ximilar ومراجعته لاحقًا.
$ cardstream-web # → http://127.0.0.1:8001 (ارفع بطاقة أمام الكاميرا) # بطاقات Pokémon الإنجليزية، مجموعة واحدة (CRI - Chaos Rising)، مع أسعار السوق بالدولار: $ cardstream-web --game Pokemon --set-code CRI --alphabet latin --price-stats
مفتوح المصدر. على أجهزتك. بثّك أنت وأدواتك أنت.
لا منصة وسيطة ولا ترخيص لكل مستخدم: اربط Ximilar API أو نظام التعرّف الخاص بك، وسيرسل إليه cardstream طلبًا واحدًا لكل بطاقة مختلفة بدلًا من طلب لكل إطار. سواء كنت تفتح الصناديق على Whatnot، أو تقدّم عرضًا على طريقة Fanatics Live، أو تبثّ من منظومة تجارة مباشرة بنيتها بنفسك، شغّل cardstream الليلة على الأجهزة التي تملكها أصلًا.