La performance d’une solution data & IA repose avant tout sur la qualité des données. Bien que les entreprises disposent d’une mine d’informations à travers leurs logiciels et documentations internes, ces données restent souvent difficiles d’accès.
Comment tirer parti des systèmes existants pour déployer efficacement des cas d’usage data & IA ?
Il existe autant d’implémentations techniques que d’interfaces, mais la méthodologie générale reste la même. Elle repose sur le principe de l'ETL : Extract, Transform, Load.
Plongeons dans chaque étape avec des exemples concrets.
L’extraction des données peut rapidement devenir complexe, notamment lorsqu’il s’agit de récupérer des informations non structurées.
Imaginons que nous souhaitions automatiser la récupération des informations publiques d’un texte de loi mis à jour trimestriellement sur une page web.
L’approche traditionnelle : le scraping
Historiquement, le web scraping est la méthode privilégiée. Elle consiste à coder un robot qui explore les pages web, extrait les informations pertinentes et les stocke dans une base de données. Cette approche est déterministe : si le scraping est bien conçu, il garantit des résultats fiables. Des outils comme Beautiful Soup facilitent cette tâche.
Cependant, cette méthode est fragile : la moindre modification dans la structure du site peut casser le processus. De plus, développer un algorithme de scraping peut être chronophage, en particulier pour des cas complexes.
import requests
from bs4 import BeautifulSoup
url = "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&sum_date=&pd_search=2019-04-04&numac_search=2019A40586&page=1&lg_txt=F&caller=list&2019A40586=0&trier=promulgation&view_numac=2022b30600fx1804032130fr&dt=CODE+DES+SOCIETES+ET+DES+ASSOCIATIONS&fr=f&choix1=ET#LNK0001"
try:
response = requests.get(url)
response.raise_for_status() # Lève une exception pour les codes d'erreur HTTP
soup = BeautifulSoup(response.content, 'html.parser')
# Extraire le titre
titre = soup.find('font', {'size': '+1'}).text.strip() if soup.find('font', {'size': '+1'}) else "Titre non trouvé"
print(f"Titre: {titre}\n")
# Extraire les informations de la publication
numero = soup.find('b', text='Numéro:').next_sibling.strip() if soup.find('b', text='Numéro:') else "Numéro non trouvé"
publication = soup.find('b', text='Publication:').next_sibling.strip() if soup.find('b', text='Publication:') else "Publication non trouvée"
source = soup.find('b', text='Source:').next_sibling.strip() if soup.find('b', text='Source:') else "Source non trouvée"
print("Informations de Publication:")
print(f" Numéro: {numero}")
print(f" Publication: {publication}")
print(f" Source: {source}\n")
# Extraire la table des matières
table_des_matieres_header = soup.find('font', {'size': '+1'}, text='Table des matières')
if table_des_matieres_header:
table_des_matieres_div = table_des_matieres_header.find_parent('div')
if table_des_matieres_div:
# Extraire tous les liens dans la table des matières
liens_table_des_matieres = table_des_matieres_div.find_all('a')
print("Table des matières:")
for lien in liens_table_des_matieres:
print(f" {lien.text.strip()}")
else:
print(" Table des matières non trouvée")
else:
print("Table des matières non trouvée")
except requests.exceptions.RequestException as e:
print(f"Erreur de requête: {e}")
except Exception as e:
print(f"Une erreur est survenue: {e}")
L’approche moderne : les LLM
Les modèles de langage avancés (LLM) offrent une alternative flexible et rapide. Des solutions comme Firecrawl permettent d’extraire des données sans nécessiter de développement spécifique à chaque site.
from firecrawl import FirecrawlApp
from dotenv import load_dotenv
import os
# Charger la clé API depuis un fichier .env
load_dotenv()
api_key = os.getenv("FIRECRAWL_API_KEY")
# Initialiser l'application Firecrawl avec la clé API
app = FirecrawlApp(api_key=api_key)
# URL cible
url = "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&sum_date=&pd_search=2019-04-04&numac_search=2019A40586&page=1&lg_txt=F&caller=list&2019A40586=0&trier=promulgation&view_numac=2022b30600fx1804032130fr&dt=CODE+DES+SOCIETES+ET+DES+ASSOCIATIONS&fr=f&choix1=ET#LNK0001"
# Scraper le contenu de la page
try:
scrape_result = app.scrape_url(
url,
{
"formats": ["markdown", "html", "json"], # Formats souhaités pour les résultats
"includeTags": ["h1", "p", "a"], # Inclure uniquement certains éléments HTML
"excludeTags": ["#ad", "#footer"], # Exclure certains éléments HTML
"waitFor": 2000, # Attendre 2 secondes pour le chargement complet de la page
"timeout": 15000 # Temps maximum d'attente : 15 secondes
}
)
# Afficher les résultats
print("Titre de la page :", scrape_result["metadata"]["title"])
print("\nContenu Markdown :\n", scrape_result["data"]["markdown"])
print("\nContenu HTML brut :\n", scrape_result["data"]["html"])
except Exception as e:
print(f"Une erreur est survenue : {e}")
Toutefois, cette approche est non déterministe, ce qui peut poser problème dans des contextes réglementés comme les textes de loi, où la moindre altération est illégale.
90 % des documents dans le monde sont au format PDF, ce qui en fait un véritable défi pour l’extraction de données.
L’approche classique : l’OCR
L’Optical Character Recognition (OCR) est la méthode la plus utilisée. Elle convertit des images contenant du texte en données exploitables via un processus en trois étapes :
Les avancées en intelligence artificielle ont considérablement amélioré l’OCR, notamment grâce aux LLM.
L’OCR nouvelle génération : Mistral
Google ou d’autres grands acteurs proposent un service d’OCR pouvant être appelé par des services sur mesure.
Mistral a aussi récemment introduit une solution très performante et économique : 1000 pages pour 1 €, sans réutilisation des données. Cette technologie peut être déployée en interne pour des besoins très sécurisés.
import { Mistral } from '@mistralai/mistralai';
const apiKey = process.env.MISTRAL_API_KEY;
const client = new Mistral({apiKey: apiKey});
const ocrResponse = await client.ocr.process({
model: "mistral-ocr-latest",
document: {
type: "document_url",
documentUrl: "https://arxiv.org/pdf/2201.04234"
},
include_image_base64: true
});
Grâce à ces nouvelles approches, l’extraction de données devient plus rapide, plus précise et beaucoup moins coûteuse, ouvrant la voie à des cas d’usage jusqu’alors inaccessibles.
Un cas d’usage fréquent consiste à récupérer des données depuis un progiciel utilisé en interne.
Connexion via API : un standard pour l’intégration
Prenons l’exemple d’un CRM contenant tous les contrats d’une entreprise. Pour accéder à ces documents, l’approche privilégiée repose sur les API mises à disposition par les éditeurs de logiciels. Ces interfaces standardisées permettent d’interagir avec le modèle de données du logiciel métier.
La plupart des solutions SaaS intègrent ce type d’API pour faciliter leur intégration dans un système d’information (SI).
Mise en place de l’accès aux données
Cas d’usage concret : automatisation de l’analyse des marges
Imaginons une entreprise de portage salarial dont les contrats définissent les marges prélevées. Grâce à une connexion API, chaque nouveau contrat peut être automatiquement récupéré et stocké dans une base de données vectorielle.
Cela ouvre la porte à des requêtes en langage naturel, comme :
👉 « Quelle est la marge réalisée sur le marché français en 2024 ? »
Grâce à cette approche, les équipes peuvent interagir avec leurs données de manière intuitive et instantanée, sans manipulation manuelle fastidieuse.
En 2024, une nouvelle famille d’interfaces a émergé avec le MCP (Model-Callable Protocol). Ce protocole, standardisé par Anthropic, permet aux LLM d’interagir directement avec divers services de manière simple et intuitive.
Un cas d’usage concret
Imaginez que vous veniez d’enregistrer une réunion. Plutôt que de traiter manuellement son compte rendu, il est désormais possible de demander à une IA de générer automatiquement un Google Doc avec le résumé structuré de la discussion.
Grâce au MCP, les IA ne se contentent plus d’analyser des données : elles peuvent agir directement sur les outils métier, ouvrant ainsi la voie à des workflows plus fluides et automatisés.
Une fois les données extraites, il est essentiel de les préparer avant leur utilisation. L’objectif de cette étape est double : réduire les coûts de stockage et optimiser les performances d’analyse.
La transformation suit un schéma simple :
👉 Une source de données → Un script de transformation → Une destination
Prenons un exemple concret :
Nous récupérons plusieurs gigaoctets de données contractuelles depuis un CRM Salesforce. Or, 80 % des informations sont inutiles pour notre cas d’usage. En appliquant un filtre avant le stockage dans un data lake Snowflake, nous réduisons significativement les coûts et améliorons l’efficacité des requêtes.
La transformation peut répondre à des besoins variés :
Un exemple avancé : le cas de GraphRAG
Lorsqu’il s’agit de relier des données entre elles, la transformation prend une dimension stratégique. Dans notre exemple de CRM, il peut être pertinent de lier automatiquement les contrats avec les marchés adressés et leur date d’entrée en vigueur, facilitant ainsi l’analyse dans un modèle GraphRAG.
Des solutions comme Airbyte permettent d’accélérer l’intégration de données issues de sources standardisées comme Salesforce.
Cependant, pour des cas d’usage plus complexes ou spécifiques, le développement de scripts sur-mesure devient indispensable.
Dernière étape clé du pipeline ETL, le chargement consiste à stocker les données transformées dans un environnement adapté à leur exploitation. Deux questions majeures se posent :
Le choix du stockage dépend du cas d’usage :
Une fois la destination définie, il faut choisir le rythme de mise à jour :
Grâce à cette architecture massivement scalable, il est possible d’adapter dynamiquement la charge selon les besoins métiers.
L’extraction, la transformation et le chargement des données (ETL) sont des étapes fondamentales pour exploiter efficacement les données dans des projets data & IA. La qualité des insights obtenus dépend directement de la capacité à structurer un pipeline robuste, adapté aux besoins métiers et aux contraintes techniques.
Grâce aux avancées technologiques, des solutions comme les LLM, Airbyte ou Kafka permettent aujourd’hui d’automatiser et d’optimiser ces processus, rendant l’analyse des données plus accessible et performante.
En maîtrisant ces fondamentaux, les entreprises peuvent valoriser leurs données, réduire les coûts et prendre des décisions plus stratégiques, ouvrant ainsi la voie à de nouvelles opportunités d’innovation.
2 articles par mois sur l'innovation au coeur de votre entreprise : Tech, IA, Automatisation.