Inspiration Dans beaucoup de centres de santé, le suivi des grossesses se fait encore sur papier. À chaque visite, les sages-femmes remplissent des registres détaillés : poids, tension, hauteur utérine, bruits du cœur fœtal, examens. Ces données ne quittent presque jamais la page. Suivre une grossesse d'une visite à l'autre, ou sortir une statistique fiable, oblige à tout ressaisir à la main. Nous voulions garder le papier et rendre enfin ses données exploitables.

Ce que ça fait DayOne transforme la photo d'une page de registre de santé maternelle en données structurées et vérifiées.

Capture sur WhatsApp : la sage-femme photographie la page dans une application qu'elle utilise déjà. Chaque page est lue en une minute environ, écriture manuscrite et cases cochées comprises, en français, en arabe ou en anglais. Aucun modèle de fiche n'est préparé à l'avance. Vérification en quelques clics : les valeurs incertaines sont marquées « à vérifier », avec la raison. Elle confirme, corrige ou reprend la photo, puis rattache le dossier à une patiente. À la fin, elle reçoit une fiche PDF propre. Tableau de bord : il montre l'évolution de chaque patiente d'une visite à l'autre (courbes de poids, de tension, de hauteur utérine et de bruits du cœur fœtal), les rendez-vous écrits et les retards, ainsi que des statistiques agrégées anonymes. Toute case qui compte moins de 5 femmes est masquée. Contrôles de cohérence de la lecture : une valeur qui contredit le reste du registre est probablement mal lue, donc elle est signalée à la sage-femme. Exemples : un rendez-vous daté avant la visite, des dates qui reculent, un poids très éloigné des deux visites voisines. Tout tourne en local, même hors ligne. Les données personnelles sont filtrées et masquées en noir sur l'image. Il n'y a aucune logique clinique : ni diagnostic, ni score de risque, ni triage.

Comment nous l'avons construit Lecture : OpenCV redresse la photo et trouve la feuille. PaddleOCR lit chaque ligne avec sa position, avec un modèle latin et une relecture par un modèle arabe. Des règles géométriques relient chaque valeur à son étiquette imprimée (tableaux, cases, « étiquette : valeur »). Un modèle vision-langage local (Qwen3-VL 4B via Ollama) relit uniquement les morceaux douteux, sur l'image déjà masquée. Ne jamais inventer : les étiquettes viennent toujours du texte imprimé lu par l'OCR. Une valeur n'est marquée sûre que si les deux lecteurs sont d'accord ou si l'OCR est confiant. Tout le reste passe « à vérifier ». Backend : une API FastAPI avec une base SQLite chiffrée (patientes → visites → dossiers → pages, avec tout l'historique). Le résultat final approuvé est figé au moment de la validation. Agent WhatsApp : un webhook FastAPI sur l'API officielle WhatsApp Business. La conversation est guidée par des boutons et des listes, et la sage-femme n'est identifiée que par un HMAC de son numéro. Tableau de bord : React + TypeScript, avec l'évolution par patiente, les rendez-vous et des agrégats anonymes calculés côté serveur. Les difficultés rencontrées Aucun gabarit : le logiciel doit lire une page qu'il n'a jamais vue, donc le placement des champs repose entièrement sur la mise en page et les étiquettes imprimées. Tableaux de visites : les bandeaux sombres coupaient les traits verticaux, donc des tableaux entiers étaient rejetés et les valeurs sortaient sans visite. Il a fallu recoller les morceaux de traits et reconstruire les en-têtes sur deux rangées. Pièges de l'écriture manuscrite : un « 1 » au stylo fin lu comme « | » (« |51/97 » → 151/97), des poids en kg ou en grammes, des accents absents, de l'écriture dans les marges. L'arabe : aucune fiche arabe dans le jeu de données, et l'écriture manuscrite arabe est bien plus difficile pour l'OCR. La confidentialité : noms, numéros de CIN et numéros de téléphone devaient être retirés des données et de l'image avant qu'un modèle ne voie la page. Tout faire tourner hors ligne sur une machine modeste, y compris des plantages propres à Windows dans l'OCR. Ce dont nous sommes fiers Une chaîne complète de la photo au tableau de bord : photo WhatsApp, lecture, vérification par la sage-femme, dossier chiffré, tableau de bord en direct et fiche PDF. Une lecture sans gabarit en trois langues, qui refuse d'inventer des champs et dit honnêtement ce qu'elle ne sait pas. Un suivi d'une visite à l'autre, avec des contrôles de cohérence qui repèrent les erreurs de lecture plutôt que de porter un jugement clinique. La confidentialité dès la conception : 100 % local, stockage chiffré, masquage automatique, petites cases masquées dans les agrégats. Ce que nous avons appris La meilleure IA ici est une IA prudente. Signaler une valeur douteuse vaut mieux que la deviner. Un pipeline classique OCR + géométrie, avec un petit modèle local en second lecteur, fait mieux que de tout confier à un seul gros modèle, surtout hors ligne. L'adoption dépend de l'intégration aux habitudes existantes : WhatsApp pour la capture, le registre papier inchangé. La rigueur sur le périmètre compte. Rester hors des décisions cliniques a rendu le produit plus sûr et plus clair. La suite pour Claudinho Day1 Tester sur de vrais registres en arabe et améliorer la lecture de l'arabe manuscrit. Mieux gérer les tableaux très denses et l'écriture très libre. Un pilote sur le terrain avec des sages-femmes, pour mesurer le temps de correction et la précision en conditions réelles. Prendre en charge d'autres formats de registre, avec une synchronisation sécurisée entre centres quand une connexion est disponible.

Built With

Share this project:

Updates

Submission history