llm_ticket3/utils/image_extractor
2025-04-09 16:13:20 +02:00
..
2025-04-09 16:13:20 +02:00
2025-04-09 16:13:20 +02:00
2025-04-09 16:13:20 +02:00
2025-04-09 16:13:20 +02:00
2025-04-09 16:13:20 +02:00
2025-04-09 16:13:20 +02:00

Extracteur d'images HTML pour tickets Odoo

Ce module est conçu pour extraire les images intégrées dans les messages HTML des tickets Odoo. Il complète l'extracteur d'images standard existant pour assurer que toutes les images, y compris celles référencées uniquement dans le HTML des messages, sont correctement extraites.

Problématique

Dans certains tickets Odoo, les images apparaissent dans le HTML des messages mais ne sont pas correctement détectées par l'extracteur d'images standard, en particulier lorsqu'elles sont référencées avec des balises <img> pointant vers des URLs comme /web/image/ID?access_token=....

Ce module analyse le HTML des messages pour détecter ces références et les associer aux pièces jointes correspondantes, permettant ainsi d'extraire toutes les images associées à un ticket.

Installation

Le module est conçu pour être intégré dans le projet existant et ne nécessite pas d'installation particulière. Il utilise cependant BeautifulSoup pour l'analyse HTML.

Si cette dépendance n'est pas déjà installée :

pip install beautifulsoup4

Utilisation

Utilisation simple

Pour extraire les images intégrées dans le HTML d'un ticket :

from utils.image_extractor import extract_images_from_ticket

# Chemin vers le répertoire du ticket
ticket_dir = "output/ticket_T0241/T0241_20250409_141018"

# Extraire les images intégrées dans le HTML
embedded_images = extract_images_from_ticket(ticket_dir)

# Afficher les chemins des images
for img in embedded_images:
    print(f"Image trouvée: {img}")

Intégration complète

Pour intégrer l'extracteur HTML avec l'extracteur standard existant :

from utils.image_extractor.extract_all_images import enhance_ticket_data_with_images

# Données du ticket (contenant au minimum 'ticket_dir' et 'attachments')
ticket_data = {
    "ticket_dir": "output/ticket_T0241/T0241_20250409_141018",
    "attachments": [...] # Liste des pièces jointes
}

# Enrichir les données du ticket avec toutes les images
enhanced_data = enhance_ticket_data_with_images(ticket_data)

# Accéder aux images combinées
all_images = enhanced_data.get("images", [])
standard_images = enhanced_data.get("standard_images", [])
embedded_images = enhanced_data.get("embedded_images", [])

Script d'extraction complet

Un script utilitaire complet est également disponible :

python -m utils.image_extractor.extract_ticket_images /chemin/vers/repertoire/ticket --verbose

Exemples

Le répertoire examples contient un exemple d'utilisation de l'extracteur sur le ticket T0241, qui présente des cas d'images intégrées dans le HTML.

python -m utils.image_extractor.examples.extract_t0241_images

Structure du module

  • html_image_extractor.py : Extracteur d'images HTML principal
  • extract_all_images.py : Module combinant l'extracteur HTML et l'extracteur standard
  • extract_ticket_images.py : Script utilitaire pour l'extraction d'images
  • examples/ : Exemples d'utilisation

Fonctionnement technique

  1. L'extracteur charge les messages du ticket depuis messages_raw.json
  2. Il analyse le HTML des messages avec BeautifulSoup
  3. Il détecte les balises <img> avec des attributs src pointant vers /web/image/ID
  4. Il récupère l'ID de l'image et le lie aux pièces jointes disponibles dans attachments_info.json
  5. Il génère une liste des chemins locaux des images intégrées

Avantages

  • Non intrusif : Fonctionne en complément de l'extracteur existant, sans le modifier
  • Robuste : Gère différents formats de références d'images
  • Configurable : Peut être utilisé indépendamment ou intégré au flux de traitement existant
  • Déduplication : Évite les doublons entre les images standard et intégrées

Limitations

  • Nécessite que les pièces jointes référencées soient disponibles dans attachments_info.json
  • Dépend de BeautifulSoup pour l'analyse HTML