Spaces:
Sleeping
Sleeping
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}") |