# 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 :

```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 `<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 