import gradio as gr from PIL import Image import numpy as np from fpdf import FPDF import os # Fonction de simulation pour les prédictions def simulation_prediction(image): # Simule une segmentation d'image (remplacer par un modèle réel) segmented_image = np.array(image) # Image segmentée (pour la démo, la même image) pred_class = "Mélanome (simulé)" confidence = "95% (simulé)" return segmented_image, pred_class, confidence # Fonction pour générer un rapport de diagnostic en PDF def generate_report(pred_class, confidence): """Génère un rapport PDF basé sur les prédictions.""" rapport = f"### Rapport de Diagnostic\n\n**Prédiction :** {pred_class}\n\n**Confiance :** {confidence}\n\n" rapport += "Ceci est un rapport simulé. Dans la version finale, le modèle fournira des prédictions réelles." # Créer un PDF pdf = FPDF() pdf.add_page() pdf.set_font("Arial", size=12) pdf.multi_cell(0, 10, rapport) # Enregistrer le fichier PDF pdf_filename = "rapport_diagnostic.pdf" pdf.output(pdf_filename) return rapport, pdf_filename # Retourner le rapport en texte et le nom du fichier PDF # Créer l'interface Gradio with gr.Blocks() as demo: # Afficher le nom de l'application gr.Markdown("

DERMATO STUDIO

") # Ajouter une description de la plateforme, centrée gr.Markdown("""
"DERMATO STUDIO" est une plateforme innovante dédiée à l'analyse des lésions cutanées. Grâce à des algorithmes avancés de détection et de classification, nous offrons aux utilisateurs la possibilité de télécharger des images de lésions cutanées et d'obtenir une analyse rapide et précise. Notre objectif est de fournir un rapport de diagnostic complet qui aide à sensibiliser et à guider les utilisateurs dans leurs démarches de santé.
""", elem_id="description") # Section de téléchargement d'image with gr.Row(): with gr.Column(): image_input = gr.Image(label="Téléchargez une image de lésion cutanée", type="pil") analyze_button = gr.Button("Analyser") with gr.Column(): result_label = gr.Label(label="Prédiction : ") confidence_label = gr.Label(label="Confiance : ") # Section pour afficher l'image segmentée segmented_image_output = gr.Image(label="Image Segmentée") # Section pour afficher le rapport de diagnostic report_output = gr.Markdown(value="### Le rapport de diagnostic apparaîtra ici.") download_report = gr.File(label="Télécharger le rapport", type="filepath") # Simuler la prédiction, la segmentation d'image et la génération de rapport lorsque le bouton est cliqué analyze_button.click( fn=simulation_prediction, inputs=image_input, outputs=[segmented_image_output, result_label, confidence_label] ) analyze_button.click( fn=generate_report, inputs=[result_label, confidence_label], outputs=[report_output, download_report] ) # Lancer l'interface de démonstration demo.launch()