Le problème

Dans les centres de santé ruraux, le suivi de grossesse vit dans des registres papier : rien n'est consultable, agrégeable ni partagé d'une visite à l'autre. Une solution numérique doit fonctionner sans réseau, ne rien changer au travail des sages-femmes, et ne jamais exposer l'identité des

## Ce que fait DayOne La sage-femme continue de remplir son registre. Elle le photographie dans WhatsApp, même hors ligne :

  • sur le téléphone : contrôle de la qualité de la photo, reconnaissance de la page, nom, CIN, téléphone et adresse noircis avant tout stockage, chiffrement AES-256 ;
  • au retour du réseau : des modèles d'IA locaux (aucune API cloud) lisent les 601 champs du registre, chacun avec un statut (connu, à réviser, illisible, non fourni, non applicable, inconnu) et une confiance calibrée ;
  • l'agent dit quand il doute : « Je lis CSy Ernanda, mais je ne suis pas sûre (confiance 11 %). Pourquoi : deux lectures différentes. » Elle confirme, choisit l'autre lecture, corrige ou voit l'image du champ ; les champs sûrs sont confirmés en bloc ;
  • liaison patiente : le code du registre est toujours confirmé, puis l'agent propose [Patiente 1] [Aucune, créer] [Je ne sais pas] — jamais de création automatique ; si la même page est rephotographiée, il montre les différences champ par champ ;
  • dossier longitudinal de chaque patiente, synchronisation sans doublon, tableau de bord anonymisé pour l'épidémiologie (cellules < 5 masquées).

## Comment c'est construit

  • Vision classique sur le téléphone : recalage en deux étapes sur des gabarits (contour de la page, SIFT contraint, ECC, vérification), lecture des cases à cocher et des champs vides directement sur les pixels.
  • Lecture : qwen3.5:9b (guidé par le libellé et le format du champ) + glm-ocr comme second lecteur indépendant, via Ollama ; normalisation FR/EN/AR ; règles de cohérence (DPA = DDR + 280 j…) qui signalent sans jamais corriger.
  • Confiance : régression logistique sur 11 signaux, seuil choisi par une règle pré-enregistrée.
  • Hors ligne d'abord : SQLite chiffré, file d'attente persistante et idempotente, reprise après crash, cycle de vie explicite en 12 états — testé par injection de pannes.
  • Agent conversationnel déterministe (aucun LLM dans le dialogue : il ne peut pas halluciner), branché sur la vraie WhatsApp Cloud API.

## Résultats (patientes jamais vues, protocole pré-enregistré)

  • 93,4 % des champs manuscrits bien lus avant toute révision (IC 95 % 91,5–95,6) ;
  • 1,9 % de valeurs fausses parmi celles acceptées sans question (IC 95 % 1,3–2,6) ;
  • cases à cocher : 99,8 % ; 85 tests automatisés.

Nous publions aussi nos limites : l'arabe manuscrit reste le point faible (69 %), et l'objectif de 2 % d'erreurs silencieuses n'est pas démontré statistiquement.

## Difficultés Des photos dégradées d'un tableau répétitif (recalage en deux étapes), des recadrages qui attrapaient la ligne voisine (localisation par l'encre), et la tension entre « conserver l'image d'origine » et « ne jamais stocker d'identifiants » (masquage sur le téléphone, avant chiffrement).

## Et après Un lecteur dédié pour l'écriture arabe et les chiffres arabes orientaux, d'autres modèles de livret (un gabarit + des coordonnées), et un pilote sur de vraies photos de terrain.

Built With

Share this project:

Updates

Submission history