diff --git a/CSV/T11143/T11143_llama3-2-vision-90b-instruct-q8-0_exchanges.csv b/CSV/T11143/T11143_llama3-2-vision-90b-instruct-q8-0_exchanges.csv new file mode 100644 index 0000000..58eecf7 --- /dev/null +++ b/CSV/T11143/T11143_llama3-2-vision-90b-instruct-q8-0_exchanges.csv @@ -0,0 +1,5 @@ +Émetteur,Type,Date,Contenu,Éléments visuels +Client,Question,2023-02-15 10:00,"""Je rencontre un problème avec mon application logicielle. Pouvez-vous m'aider à diagnostiquer le problème?""","Image 1: Capture d'écran déformée de l'écran de l'ordinateur affichant l'interface technique de ticket de support (fond gris foncé ou noir, texte blanc, icônes / boutons faibles)" +Support,Réponse,2023-02-15 11:00,"""Merci d'avoir contacté. Pouvez-vous fournir plus d'informations sur le problème, tels que des messages d'erreur ou des sorties de journal?""",- +Client,Réponse,2023-02-16 09:00,"""J'ai joint une capture d'écran du message d'erreur que je vois.""","Image 2: Code Snippet ou Sortie du journal (horodatage, adresses IP, appels système)" +Support,Réponse,2023-02-17 10:00,"""Merci d'avoir fourni la capture d'écran. Malheureusement, l'image est déformée et nous ne pouvons pas lire clairement le texte. Pouvez-vous s'il vous plaît fournir une image ou un contexte plus clair sur le problème?""",- diff --git a/agents/llama_vision/agent_vision_ocr.py b/agents/llama_vision/agent_vision_ocr.py index 4e3d8b3..8643e36 100644 --- a/agents/llama_vision/agent_vision_ocr.py +++ b/agents/llama_vision/agent_vision_ocr.py @@ -19,7 +19,7 @@ class AgentVisionOCR(BaseAgent): self.params = { "temperature": 0.1, "top_p": 0.85, - "max_tokens": 1500 + "max_tokens": 6000 } self.system_prompt = """You are a multilingual OCR visual assistant. diff --git a/agents/utils/pipeline_logger.py b/agents/utils/pipeline_logger.py index aea143d..5343017 100644 --- a/agents/utils/pipeline_logger.py +++ b/agents/utils/pipeline_logger.py @@ -146,29 +146,26 @@ def generer_version_texte(data: Union[Dict[str, Any], list], ticket_id: str, ste for i, item in enumerate(data, 1): f.write(f"--- ÉLÉMENT {i} ---\n\n") - # Extraire et écrire la réponse si présente + # Pour les résultats OCR if isinstance(item, dict): + if "extracted_text" in item: + f.write(f"Image: {item.get('image_name', 'N/A')}\n") + f.write(f"Texte extrait:\n{item['extracted_text']}\n\n") # Priorité 1: Champ "response" (pour les rapports) - if "response" in item: + elif "response" in item: f.write(f"{item['response']}\n\n") - # Priorité 2: Champ "analyse" (pour les analyses d'images) elif "analyse" in item and isinstance(item["analyse"], str): f.write(f"{item['analyse']}\n\n") - - # Priorité 2b: Champ "analyse" + # Priorité 2b: Champ "analyse" avec langues elif "analyse" in item and isinstance(item["analyse"], dict): - # Priorité à la version française si disponible if "fr" in item["analyse"] and item["analyse"]["fr"]: f.write(f"{item['analyse']['fr']}\n\n") - # Sinon, utiliser la version anglaise elif "en" in item["analyse"] and item["analyse"]["en"]: f.write(f"{item['analyse']['en']}\n\n") - # Priorité 3: Champ "raw_response" (pour les analyses brutes) - elif "raw_response" in item and isinstance(item["raw_response"], str): + elif "raw_response" in item: f.write(f"{item['raw_response']}\n\n") - # Priorité 4: Structure imbriquée d'analyse elif "analysis" in item: if isinstance(item["analysis"], dict): @@ -176,26 +173,13 @@ def generer_version_texte(data: Union[Dict[str, Any], list], ticket_id: str, ste f.write(f"{item['analysis']['analyse']}\n\n") elif "raw_response" in item["analysis"]: f.write(f"{item['analysis']['raw_response']}\n\n") - # Priorité 5: Pour le tri d'images elif "is_relevant" in item: f.write(f"Image pertinente: {item['is_relevant']}\n") if "reason" in item: f.write(f"Raison: {item['reason']}\n\n") - - # Si aucun contenu n'a été trouvé, afficher des informations de base else: f.write("Aucun contenu d'analyse trouvé.\n\n") - - # Ajouter des métadonnées si disponibles - if "metadata" in item: - meta = item["metadata"] - if "image_name" in meta: - f.write(f"Image: {meta.get('image_name', 'N/A')}\n") - if "timestamp" in meta: - f.write(f"Horodatage: {meta.get('timestamp', 'N/A')}\n") - if "source_agent" in meta: - f.write(f"Agent source: {meta.get('source_agent', 'N/A')}\n") else: f.write(str(item) + "\n\n") @@ -203,24 +187,16 @@ def generer_version_texte(data: Union[Dict[str, Any], list], ticket_id: str, ste # Si c'est un dictionnaire unique elif isinstance(data, dict): - # Même logique que ci-dessus, mais pour un seul élément - if "response" in data: + if "extracted_text" in data: + f.write(f"Image: {data.get('image_name', 'N/A')}\n") + f.write(f"Texte extrait:\n{data['extracted_text']}\n\n") + elif "response" in data: f.write(f"{data['response']}\n\n") elif "analyse" in data and isinstance(data["analyse"], str): f.write(f"{data['analyse']}\n\n") elif "raw_response" in data: f.write(f"{data['raw_response']}\n\n") - elif "analysis" in data and isinstance(data["analysis"], dict): - if "analyse" in data["analysis"]: - f.write(f"{data['analysis']['analyse']}\n\n") - elif "raw_response" in data["analysis"]: - f.write(f"{data['analysis']['raw_response']}\n\n") - elif "is_relevant" in data: - f.write(f"Image pertinente: {data['is_relevant']}\n") - if "reason" in data: - f.write(f"Raison: {data['reason']}\n\n") else: - # Sinon on écrit un format plus général for key, value in data.items(): if key != "prompt" and not isinstance(value, dict): f.write(f"{key}: {value}\n") diff --git a/debug_ocr/ocr_image_145435.png.txt b/debug_ocr/ocr_image_145435.png.txt new file mode 100644 index 0000000..786a4d6 --- /dev/null +++ b/debug_ocr/ocr_image_145435.png.txt @@ -0,0 +1,13 @@ +OCR Langue: fra +Langue détectée: fr +-------------------------------------------------- +C3 giraudbrg-lobicom/BRG-LAB/PAGE programmetssai/zEAAAHEVNGOAA + + BRGLAS CD Béton CD Foumasew tubo © Masse + +Echantillion n° 25-0007 éceptianné le 02/04/2025 pr BOLLÉE Victor prélevi le 02/04/2025 por BOLLEE Victor n° péédéwement 25-00078 +Matériau Sable 0/20 CARRIERE ADCEG + +[vEssu JEMmarme |[ M Porrouo || onservanons ][