Les signes vitaux, par une caméra.
Trente secondes de vidéo suffisent. Saphere retrouve le pouls dans le visage d’une personne et le transforme en données de santé exploitables par votre produit. Rien à porter, rien à brancher : la caméra que vos utilisateurs ont déjà fait le travail.
Fonctionne sur le web, sur iOS et Android, et dans les applications hybrides.

Ce que vous obtenez
Dix variables pour une seule vidéo
Une capture de trente secondes donne des indicateurs cardiaques, respiratoires et corporels. Chacun revient avec le signal dont il a été tiré.
bpm
cpm
ms
échelle
mmHg
échelle
ans
kg/m²
kg/m²
0–100
Chaque compte est configuré avec les variables qu’il reçoit. Quelques-unes demandent en plus la taille, le poids, l’âge et le sexe de la personne.
Comment ça marche
Lire un pouls avec de la lumière, en quatre étapes
Le sang absorbe la lumière. À chaque battement du cœur, un peu plus de sang circule sous la peau, et la couleur que le visage renvoie change très légèrement. L’œil ne le voit pas. Une caméra, si.
Une caméra ordinaire filme le visage
La caméra avant d’un téléphone, ou la webcam d’un ordinateur portable. Rien à brancher, rien à porter, rien à régler.
Les bonnes zones de peau sont suivies
Un modèle de détection de visage repère le visage. Le widget recadre dessus et ne garde que le canal de couleur qui porte le pouls, si bien que ce qu’il envoie est une petite fraction d’une vidéo.
Le pouls est reconstitué
Trente secondes de ces minuscules changements de couleur, mis bout à bout, dessinent une onde. Son rythme est celui du cœur.
Les variables sont calculées
La fréquence cardiaque, la variabilité, la respiration et les autres indicateurs se déduisent de cette onde. Chacun revient soit avec sa valeur, soit avec la raison pour laquelle il n’a pas pu être produit.
Pourquoi Saphere
Fait pour être intégré, pas pour être admiré
Un script, un appel
SaphereScan.create(root, options), puis bootstrap(). Le widget garde pour lui son conteneur, sa caméra et ses styles. Il ne peut pas déranger votre page, et votre page ne peut pas dérégler sa mise en page.
Le vôtre, jusqu'aux mots
Les écrans et les couleurs se préparent dans la console et s’attachent au widget par un seul identifiant. Changez une palette ou retirez un écran sans rien déployer de votre côté.
Dix langues, deux sens de lecture
Arabe, allemand, anglais, espagnol, français, italien, polonais, portugais, portugais du Brésil et turc. En arabe, toute la mise en page est retournée, de la barre d’outils aux flèches.
Votre clé reste sur votre serveur
Le widget ne détient jamais votre clé d’API. Au début de chaque mesure, il demande à votre serveur un jeton valable une seule fois, et pour peu de temps.
Clair sur la caméra
Cinq écrans distincts expliquent une caméra qui ne s’ouvre pas : autorisation refusée, aucune caméra, caméra occupée, navigateur trop ancien, demande annulée. Votre code reçoit le code correspondant, pas un échec vague.
Quarante événements, et des hooks
Chaque écran affiché, chaque état de la caméra, chaque à-coup du réseau et chaque étape de la mesure sont rapportés à votre code. Les hooks vous permettent de retenir une transition, ou de la refuser.
Intégration
D’une page vide à une vraie mesure
Le widget est un seul fichier JavaScript servi par notre CDN. Vous lui donnez un div, et il prend le relais.
<div id="scan" style="height: 100dvh"></div>
<script type="module">
// L'adresse que vous chargez décide de l'environnement :
// cdn.test.saphere.ai atteint le Test, et le widget le suit ensuite.
import SaphereScan from "https://cdn.saphere.ai/saphere-scan/v2/main.js"
const instance = SaphereScan.create("#scan", {
lang: "fr",
// Le widget ne détient jamais votre clé d'API. Il demande à votre
// serveur un jeton de courte durée au début de chaque mesure.
proxy: {
retrieveAccessToken: {
strategy: "delegate",
url: "/api/saphere-token"
}
},
onEvent: event => {
if (event.type === "measure:result")
console.log(event.result.variables)
}
})
await instance.bootstrap()
</script>
Tourne là où sont vos utilisateurs
Un navigateur, une application React Native, une application Ionic ou Capacitor. Tout ce dont le widget a besoin, c’est d’une caméra et d’un conteneur.
Rien à héberger
Le code, le modèle de détection de visage et les images viennent tous de notre CDN. De votre côté, une balise de script suffit.
Dit ce qui n'a pas marché
Une caméra refusée, un jeton que votre serveur n’a pas voulu délivrer, un réseau qui lâche : chaque cas arrive sous forme d’événement nommé, pour que votre support voie ce qui s’est passé.
Pour qui
Partout où il faut mesurer un corps sans le toucher
Assurance
Souscription et programmes de bien-être, sans passage en cabinet.
Télémédecine
Des constantes relevées avant le rendez-vous, sur l'appareil du patient.
Bien-être au travail
Des points volontaires, sans matériel à distribuer.
Sport et bien-être
Des indicateurs de récupération et de stress, dans une application déjà ouverte.
Recherche
Une collecte dans la durée, à une échelle qu'aucun matériel n'atteint.
Santé connectée
Une couche de constantes pour des produits qui ont une caméra et pas de capteur.
Bornes publiques
Pharmacies et entreprises, sans contact par construction.
Véhicules et industrie
La vigilance d'un conducteur ou d'un opérateur, depuis une caméra déjà en place.
Lisez la documentation, ou parlez-nous
Le démarrage rapide conduit une mesure complète en une dizaine de minutes, sur l’environnement de Test.