File size: 4,046 Bytes
e466f0b
ce2d47f
a75781f
70c8b42
28f7073
ac854f0
4375cde
5d71713
 
 
 
 
 
ce2d47f
a75781f
5d71713
 
a75781f
e466f0b
5d71713
 
 
 
 
 
a09ac1c
ac854f0
a09ac1c
 
ac854f0
a09ac1c
 
ac854f0
 
e466f0b
eb71392
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ac854f0
 
1497130
 
5d71713
1497130
ac854f0
 
11d2fea
861dad5
c317947
 
ac854f0
c317947
1badd41
 
 
f0c61ac
c317947
ac854f0
c317947
1badd41
 
 
 
11d2fea
1badd41
 
f0c61ac
1badd41
f0c61ac
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import streamlit as st
import PyPDF2
import json
import os

# Les fonctions de conversion PDF -> Texte -> JSON
def extract_text_from_pdf(pdf_path):
    text = []
    with open(pdf_path, 'rb') as file:
        pdf_reader = PyPDF2.PdfReader(file)
        for i, page in enumerate(pdf_reader.pages):
            text.append({"page": i + 1, "text": page.extract_text()})
    return text

def save_text_to_json(data, output_file):
    with open(output_file, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=4)

def display_json_contents(file_path):
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            data = json.load(f)
            st.write(data)
    except FileNotFoundError:
        st.error(f"Le fichier {file_path} n'a pas été trouvé.")

# Interface avec onglets
tab1, tab2 = st.tabs(["Extracteur PDF", "Questions Chatbot"])

# Onglet 1 - Extracteur PDF
with tab1:
    st.header("Extracteur PDF")
    pdf_path = 'data/07-VF2_UDM_Oneframe_A4-2023.pdf'
    json_output_path = 'data/extracted_text.json'

    if not os.path.exists(json_output_path):
        if st.button('Extraire le texte du PDF et sauvegarder en JSON'):
            pdf_text = extract_text_from_pdf(pdf_path)
            save_text_to_json(pdf_text, json_output_path)
            st.success("Le texte a été extrait et sauvegardé.")
    else:
        st.success(f"Le fichier {json_output_path} existe déjà. Aucune extraction nécessaire.")

    try:
        with open(json_output_path, 'r', encoding='utf-8') as f:
            st.download_button(
                label="Télécharger le JSON",
                data=f,
                file_name="extracted_text.json",
                mime="application/json"
            )
    except FileNotFoundError:
        st.error(f"Le fichier {json_output_path} n'est pas disponible pour téléchargement.")


# Onglet 2 - Questions Chatbot
with tab2:
    st.header("Questions Chatbot")

    questions_details = {
        "Quel est l'impact de l'emailing ?": ("L'emailing a un impact significatif dû à la consommation énergétique des serveurs.", "Envoyer un email avec une pièce jointe de 1MB émet environ 20g de CO2.", "Chapitre 5: Impact de l'emailing", "Page 12"),
        "Comment optimiser une campagne numérique ?": ("Optimiser une campagne numérique implique de réduire son empreinte carbone.", "Utiliser des formats d'image optimisés pour réduire la taille des données transmises.", "Chapitre 6: Optimisation des campagnes numériques", "Page 18"),
    }

    col1, col2 = st.columns(2)
    with col1:
        if st.button("Impact de l'emailing"):
            selected_question = "Quel est l'impact de l'emailing ?"
            principe, exemple, chapitre, page = questions_details[selected_question]
            st.write(f"**Principe clé :** {principe}")
            st.write(f"**Exemple :** {exemple}")
            st.write(f"**{chapitre}**, Page {page}")
    with col2:
        if st.button("Optimiser campagne numérique"):
            selected_question = "Comment optimiser une campagne numérique ?"
            principe, exemple, chapitre, page = questions_details[selected_question]
            st.write(f"**Principe clé :** {principe}")
            st.write(f"**Exemple :** {exemple}")
            st.write(f"**{chapitre}**, {page}")

    # Zone de texte pour poser une question libre
    st.subheader("Poser votre question")
    user_question = st.text_input("", on_change=None, key="user_question")

    if user_question:
        # Exemple fictif de traitement de la question de l'utilisateur
        # Intégrez ici votre propre logique pour fournir des réponses basées sur la question saisie
        principe = "Réponse principe à la question posée"
        exemple = "Exemple associé à la réponse de votre question"
        chapitre = "Chapitre X: Titre du Chapitre"
        page = "Page Y"
        st.write(f"**Principe clé :** {principe}")
        st.write(f"**Exemple :** {exemple}")
        st.write(f"**{chapitre}**, {page}")