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

93 lines
3.6 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Script d'exemple pour extraire les images du ticket T0241.
Cet exemple montre comment utiliser l'extracteur d'images HTML.
"""
import os
import sys
import json
# Ajouter le répertoire parent au chemin de recherche
parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../..'))
sys.path.append(parent_dir)
from utils.image_extractor import extract_images_from_ticket
from utils.image_extractor.extract_all_images import enhance_ticket_data_with_images
# Chemin vers le répertoire du ticket T0241
ticket_dir = os.path.join(parent_dir, "output", "ticket_T0241", "T0241_20250409_141018")
def main():
"""
Fonction principale pour extraire les images du ticket T0241.
"""
if not os.path.exists(ticket_dir):
print(f"Répertoire introuvable: {ticket_dir}")
sys.exit(1)
print(f"Extraction des images pour le ticket: {os.path.basename(ticket_dir)}")
# 1. Utiliser directement l'extracteur d'images HTML
print("\n1. Extraction des images intégrées dans le HTML:")
embedded_images = extract_images_from_ticket(ticket_dir)
print(f" Nombre d'images trouvées: {len(embedded_images)}")
for img in embedded_images:
print(f" - {os.path.basename(img)}")
# 2. Utiliser l'extracteur complet pour récupérer toutes les images
print("\n2. Extraction de toutes les images (standard + intégrées):")
# Charger les données minimales du ticket
ticket_data = {"ticket_dir": ticket_dir}
# Charger les pièces jointes si disponibles
attachments_info_path = os.path.join(ticket_dir, "attachments_info.json")
if os.path.exists(attachments_info_path):
with open(attachments_info_path, 'r', encoding='utf-8') as f:
ticket_data["attachments"] = json.load(f)
# Enrichir avec toutes les images
enhanced_data = enhance_ticket_data_with_images(ticket_data)
# Afficher les statistiques
stats = enhanced_data.get("images_stats", {})
print(f" Total: {stats.get('total', 0)}")
print(f" Standard: {stats.get('standard', 0)}")
print(f" Intégrées: {stats.get('embedded', 0)}")
# Afficher les chemins des images
print("\n Images standard:")
for img in enhanced_data.get("standard_images", []):
print(f" - {os.path.basename(img)}")
print("\n Images intégrées dans le HTML:")
for img in enhanced_data.get("embedded_images", []):
print(f" - {os.path.basename(img)}")
# 3. Sauvegarder les résultats
output_file = os.path.join(ticket_dir, "all_images.json")
result = {
"images": enhanced_data.get("images", []),
"standard_images": enhanced_data.get("standard_images", []),
"embedded_images": enhanced_data.get("embedded_images", []),
"stats": enhanced_data.get("images_stats", {})
}
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(result, f, indent=2, ensure_ascii=False)
print(f"\nRésultats sauvegardés dans: {output_file}")
# Afficher un message pour intégrer cette fonctionnalité dans le flux de traitement
print("\nPour intégrer cette fonctionnalité dans votre flux de traitement existant:")
print("1. Importez l'extracteur d'images:")
print(" from utils.image_extractor import extract_images_from_ticket")
print("2. Utilisez-le pour compléter votre liste d'images:")
print(" embedded_images = extract_images_from_ticket(ticket_dir)")
print("3. Ajoutez ces images à votre liste d'images existante")
if __name__ == "__main__":
main()