Contexte
Développé pour la Métropole de Lyon, SmartWatch est un système automatisé de traitement de données qui surveille et met à jour les horaires d’ouverture des établissements publics (tels que les mairies, les piscines et les médiathèques) sur le portail open data data.grandlyon.com. Auparavant, ce processus de vérification était effectué manuellement par les agents de la Métropole qui devaient inspecter individuellement et transcrire les horaires de près de 200 sites web différents.
Objectif
Les sites web des communes présentent leurs horaires d’ouverture sous des formes variées : mises en page diverses, structures de tableaux hétérogènes et expressions en langage naturel. Les extracteurs de données (scrapers) classiques basés sur des règles échouent dès que la structure des pages change, tandis que la récupération manuelle d’informations sur 200 sites web s’avère fastidieuse et chronophage. Le défi principal consiste à concevoir un système automatisé et robuste, capable de traiter n’importe quelle page web, d’isoler les informations relatives aux horaires et de convertir fidèlement ces descriptions textuelles dans un format standardisé sans intervention humaine, tout en évitant les hallucinations (les réponses fausses ou erronées générées par un modèle de langage) et en garantissant une sortie structurée et univoque.
Démarche
SmartWatch relève ce défi en orchestrant un pipeline de données structuré, découpé en cinq étapes séquentielles :
- Scraping Web : le pipeline utilise Playwright (une bibliothèque d’automatisation de navigateur) associée à des en-têtes anti-détection pour récupérer de manière programmatique le code HTML brut des pages web municipales ciblées.
- Normalisation du Texte : le code HTML brut est converti en texte propre à l’aide de la bibliothèque Inscriptis, qui élimine les balises de mise en forme, les styles et les scripts afin d’isoler uniquement le contenu textuel.
- Filtrage Sémantique : afin d’optimiser la vitesse de traitement et réduire les ressources de calcul nécessaires, le texte normalisé est découpé en segments (chunks). Le système calcule ensuite des plongements lexicaux sémantiques ou embeddings (représentations vectorielles du texte capturant son sens sémantique) via Jina embeddings, et applique un calcul de similarité avec des termes représentatifs des horaires d’ouverture pour ne conserver que les segments pertinents.
- Extraction d’Informations Structurées : les segments isolés sont transmis à un grand modèle de langage ou LLM souverain. La requête est encadrée par un schéma JSON strict afin de contraindre le modèle à structurer les horaires selon un format prédéfini, éliminant ainsi toute dérive de formatage.
- Standardisation des Données : l’objet JSON extrait est converti vers le format d’horaires d’ouverture d’OpenStreetMap (OSM) grâce à des utilitaires de conversion personnalisés, permettant une comparaison directe avec les données existantes sur le portail.
Caractéristiques
- Réduction sémantique des données : le découpage intelligent en segments et l’évaluation de similarité réduisent la taille du texte soumis au LLM, diminuant ainsi la consommation de tokens et donc l’empreinte mémoire du GPU.
- Suivi en base de données : une base de données SQLite, exploitée via l’ORM SQLAlchemy, enregistre l’historique des exécutions, les statuts de traitement et les indicateurs clés pour chaque URL analysée.
- Rapports automatisés : le module de reporting génère des rapports HTML interactifs à l’aide de gabarits Jinja2, mettant en évidence les divergences d’horaires détectées dans des fenêtres modales dédiées.
- Mesure de l’empreinte carbone : l’intégration de la bibliothèque CodeCarbon permet de suivre et de consigner la consommation électrique ainsi que les émissions de CO2 estimées lors de chaque appel d’inférence au LLM.
Impact
- 75 % de gain d’efficacité opérationnelle : réduit le temps nécessaire à la mise à jour de la base de données des établissements, passant de quatre jours de travail manuel à seulement une journée comprenant le traitement automatisé et la validation humaine.
- Paradigme d’automatisation réutilisable : l’architecture modulaire sous licence MIT, prête à l’emploi grâce à sa conteneurisation, sert de modèle de référence pour d’autres projets d’automatisation de données à la Métropole, favorisant la réutilisation de technologies éprouvées.


