# 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 `` 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 : ```bash pip install beautifulsoup4 ``` ## Utilisation ### Utilisation simple Pour extraire les images intégrées dans le HTML d'un ticket : ```python 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 : ```python 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 : ```bash 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. ```bash 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 `` 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