Spaces:
Sleeping
Sleeping
| 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("<h1 style='text-align: center; font-size: 3em; font-weight: bold;'>DERMATO STUDIO</h1>") | |
| # Ajouter une description de la plateforme, centrée | |
| gr.Markdown(""" | |
| <div style='text-align: center;'> | |
| "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é. | |
| </div> | |
| """, 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() | |