Documentación
Todo corre en tu máquina: instálalo, apúntale una cámara y ajusta cuándo puede llamar fuera. Agrupado según lo que quieras hacer.
De nada a una carta en pantalla
Un solo comando instala el cliente, los pesos de los modelos y los shims. La única credencial de todo el sistema es tu clave de Ximilar.
El script de instalación
Crea un entorno virtual en ~/.cardstream, verifica el wheel publicado con sus checksums, descarga los pesos de los modelos y pone los dos comandos en tu PATH. Las otras vías (wheel, Docker, código fuente) están en la página de descarga.
$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh Todas las formas de instalar → Instalación manual
Un checkout y pip también sirven. Los extras son independientes: [client] es la interfaz y las fuentes de vídeo; [onnx] o [torch] aportan los backends del detector y del embedding.
$ git clone https://github.com/Ximilar-com/cardstream && cd cardstream $ pip install -e '.[client,onnx]'
Tu clave de Ximilar
La identificación la hace Ximilar collectibles/v2. XIMILAR_API_KEY es la única variable de entorno que lee algo; todo lo demás es un flag.
$ export XIMILAR_API_KEY=your-key
Primera ejecución
Abre la interfaz en el navegador con tu webcam. Muestra una carta; el overlay enseña a la máquina de estados pensando y la coincidencia cuando llega.
$ cardstream-web # → http://127.0.0.1:8001
Comprueba lo que tienes
Ambos comandos imprimen su versión y salen, sin necesitar archivos de modelo, así que funciona en cuanto termina la instalación.
$ cardstream-web --version
cardstream 0.5.0 Sin interfaz, para montajes
El mismo pipeline sin navegador: los resultados se imprimen en la terminal. Los mismos flags que cardstream-web, un proceso junto a la cámara.
$ cardstream-client --source 0 Pásale tu show
Las fuentes son intercambiables y el análisis es idéntico elijas la que elijas. Todo es un flag; el diálogo de ajustes permite retocar los importantes en directo.
Webcams y archivos
La webcam del navegador es la opción por defecto de cardstream-web; un índice de dispositivo, un archivo de vídeo o una imagen fija funcionan en ambos comandos. Útil para probar antes del show.
$ cardstream-web # webcam del navegador $ cardstream-client --source clip.mp4
Recibir un stream (pull)
Apúntalo a una cámara IP, un codificador o un restreamer: rtsp://, rtmp://, srt:// y feeds JPEG por ws://, con reconexión automática y backoff limitado.
$ cardstream-web --source rtsp://cam/stream1 Deja que OBS envíe (push)
Ejecútalo en modo escucha y añade una salida RTMP o SRT más en OBS. Necesita el binario ffmpeg del sistema (brew install ffmpeg).
$ cardstream-web --source rtmp://0.0.0.0:1935/live --listen Los preajustes acotan la búsqueda
Juego, código de set y sistema de escritura se validan en local antes de enviarse. Indica siempre --alphabet cuando indiques --game: preajustar el juego impide que el endpoint detecte el alfabeto por sí mismo.
$ cardstream-web --game "Pokémon" --alphabet japanese --set-code M4
El diálogo de ajustes
Categoría, juego, código de set, alfabeto y umbrales se pueden retocar desde el navegador en pleno directo, sin reiniciar y con la misma validación que aplica el proceso.
Tres ajustes de resolución
Lo que captura la cámara, lo que se envía y lo que se analiza son tres números distintos. El análisis corre en pequeño; el recorte para identificar se vuelve a cortar del fotograma completo.
$ cardstream-web --camera-width 3840 --width 1280 Guarda el show y revísalo después
Desactivado por defecto. Un solo flag guarda el historial que construye la página (cada carta que mostraste, con su recorte) en una sesión de tu propia cuenta de Ximilar, así que el show sigue ahí a la mañana siguiente.
El historial, con miniaturas
La interfaz del navegador lista cada carta que mostraste, de la más reciente a la más antigua: una miniatura del recorte que se identificó, su precio con --price-stats y cuánto tiempo estuvo en pantalla. Esa lista vive en tu máquina.
Guarda un show
--ximilar-stream NEW crea una sesión e imprime su id. A partir de ahí, cada fila del historial se guarda mientras el show avanza: las subidas se agrupan en segundo plano, se reintentan si hay errores de red y nunca frenan el show. Al salir limpiamente se sube lo que falte y se cierra la sesión.
$ cardstream-web --game "Pokémon" --alphabet latin \ --price-stats --ximilar-stream NEWGuardar un show, en detalle →
Qué se sube
Las filas como texto (carta, set, precio, tiempo en pantalla, las llamadas de pago que hay detrás) y el recorte a partir del cual se identificó cada fila, de 1024 px como máximo: la imagen que ya recibió la llamada de identificación. --no-ximilar-stream-images lo deja solo en texto. Tu cuenta de Ximilar necesita el servicio Cardstream.
$ cardstream-web --ximilar-stream NEW --no-ximilar-stream-images Revísalo en la app de Ximilar
Cada sesión llega a la sección Cardstream de la app de Ximilar: qué mostraste y cuándo, el valor del show, sus productos más valiosos y sus sets principales, y cada carta con su recorte. Marca lo que se vendió, corrige una coincidencia equivocada, añade notas.
Abrir la app de Ximilar →Retómalo tras un reinicio
Pasa el id de la sesión en lugar de NEW y el show continúa en la misma sesión; aunque una salida limpia la haya cerrado, simplemente se vuelve a abrir. Solo se cobra crear una sesión, así que retomarla no cuesta nada.
$ cardstream-web --ximilar-stream <session-id>
Espacios de trabajo de equipo
Una sesión se guarda en el espacio de trabajo por defecto de tu clave de API. Indica otro con --ximilar-workspace y pasa el mismo id cuando retomes una sesión guardada allí.
$ cardstream-web --ximilar-stream NEW \ --ximilar-workspace <workspace-id>
Una llamada de identificación por carta distinta
Señales locales (movimiento, detección, la compuerta de identidad) deciden cuándo está justificada de verdad una llamada de identificación. Estos son los ajustes que lo mantienen a raya.
Umbrales
El umbral de resultado mantiene las coincidencias débiles fuera del overlay; el umbral de similitud decide entre misma carta y carta nueva; forget-after borra la memoria cuando una carta lleva suficiente tiempo fuera.
$ cardstream-web --result-threshold 0.35 La configuración recomendada
Segmentación RF-DETR con una compuerta de embedding ONNX: los valores por defecto incluidos. Un cardstream-web sin argumentos ejecuta exactamente esto una vez que los pesos están en su sitio; escribirlo explícitamente es el mismo pipeline.
$ cardstream-web \ --segmentor-model model/segmentation/onnx/model.onnx \ --embed-model model/similarity/onnx/model.onnx
Mantenlo en localhost
La aplicación local no tiene autenticación y guarda tu clave de API. --host vale 127.0.0.1 por defecto: déjalo así y nunca expongas el puerto a la red local.
«Model not found» al arrancar
Los pesos de los modelos se descargan aparte; no forman parte del repositorio. El script de instalación y la imagen de Docker los descargan; un checkout limpio necesita que los coloques en model/segmentation/ y model/similarity/, y scripts/build-from-source.sh --models lo hace por ti.
Indica el juego que estás mostrando
Un show de un solo juego no necesita que el endpoint adivine el juego en cada llamada. Nómbralo y la búsqueda se acota a ese juego: respuestas más rápidas y menos ediciones equivocadas. Pasa --alphabet junto a él, porque preajustar el juego impide que el endpoint detecte el sistema de escritura por sí mismo.
$ cardstream-web --game "Pokémon" --alphabet japanese
ffmpeg, cuando hace falta
--listen y --ffmpeg invocan el binario ffmpeg del sistema. La recepción normal por pull funciona con una instalación solo con pip; el montaje con envío desde OBS, no.
Más allá de los valores por defecto
Cambia los modelos o lee el código: todo el pipeline es un único paquete instalable.
Trae tus propios pesos
La detección y la compuerta de identidad se enrutan por backend: la familia elige la clase y la extensión del archivo elige el runtime. RF-DETR o RT-DETRv2, .onnx o un directorio de transformers.
Backends de modelos →El catálogo de modelos
Todos los pesos que cardstream puede cargar, entrenados por Ximilar y publicados con licencia Apache-2.0 junto a cada versión: qué hace cada uno, a qué velocidad va y con qué licencia.
Catálogo de modelos →Respuestas breves
Cuánto cuesta, qué sale de la máquina, qué cartas nombra y los dos comandos que lo desinstalan.
Leer las preguntas frecuentes →README e issues
El README cubre todos los flags; los issues son el sitio para errores y preguntas.
Leer el README →Versiones y artefactos
Wheels, checksums y el script de instalación, un conjunto por versión, además de las compilaciones con Docker y desde el código fuente.
Página de descarga →