File size: 3,388 Bytes
ae7d660
2e7c2af
d2271c1
7be0cb3
d2271c1
 
 
 
 
 
0927160
 
 
d2271c1
ae7d660
7be0cb3
 
 
 
 
 
 
 
ddb299c
d2271c1
 
ae7d660
2e7c2af
 
ae7d660
d2271c1
 
 
 
 
 
 
 
 
 
 
 
 
ae7d660
d2271c1
 
7be0cb3
 
 
 
 
 
d2271c1
 
 
0927160
d2271c1
7be0cb3
d2271c1
 
2e7c2af
d2271c1
7be0cb3
 
 
2e7c2af
7be0cb3
 
 
2e7c2af
d2271c1
 
 
 
 
 
 
 
2e7c2af
d2271c1
 
 
 
 
ae7d660
 
7be0cb3
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
import streamlit as st
from transformers import pipeline
import logging
from PyPDF2 import PdfReader

# Setup logging
def setup_logging():
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(levelname)s - %(message)s',
        handlers=[
            logging.StreamHandler()
        ]
    )

# Function to extract text from a PDF file
def extract_text_from_pdf(pdf_file):
    pdf_reader = PdfReader(pdf_file)
    text = ""
    for page in pdf_reader.pages:
        text += page.extract_text()
    return text

def main():
    setup_logging()
    logging.info("Starting the Streamlit app.")

    # Initialize the summarization pipeline with the specified model
    summarizer = pipeline("summarization", model="facebook/bart-large-cnn")

    # Streamlit UI
    st.title("GenAI Lab Report Analyzer")
    st.write("Upload a file, record audio, or type text to generate a summary. Select the appropriate input type and provide the input.")

    input_type = st.radio(
        "Select Input Type:",
        options=["Text", "Text File", "PDF", "DOCX", "Audio"],
        index=0
    )

    file = None
    text = None
    audio = None

    if input_type == "Text":
        text = st.text_area("Enter your text here:", placeholder="Type your text here...")
    elif input_type == "Text File":
        file = st.file_uploader("Upload your text file:", type=["txt"])
    elif input_type == "PDF":
        file = st.file_uploader("Upload your PDF file:", type=["pdf"])
    elif input_type == "DOCX":
        file = st.file_uploader("Upload your DOCX file:", type=["docx"])
    elif input_type == "Audio":
        audio = st.file_uploader("Upload your audio file:", type=["wav", "mp3", "m4a"])

    if st.button("Report Result"):
        try:
            summary = None
            if input_type == "Text" and text:
                logging.info("Processing text input.")
                summary = summarizer(text, max_length=130, min_length=30, do_sample=False)
                logging.info("Text input processed successfully.")
            elif input_type == "Text File" and file:
                logging.info(f"Processing text file: {file.name}")
                text = file.read().decode("utf-8")  # Assuming UTF-8 encoding
                summary = summarizer(text, max_length=130, min_length=30, do_sample=False)
            elif input_type == "PDF" and file:
                logging.info(f"Processing PDF file: {file.name}")
                text = extract_text_from_pdf(file)
                summary = summarizer(text, max_length=130, min_length=30, do_sample=False)
            elif input_type == "Audio" and audio:
                logging.info("Processing audio input.")
                # Add audio processing logic here
                summary = "Audio processing not implemented yet."
            else:
                summary = "Invalid input. Please provide a valid file or text."
                logging.warning("Invalid input type provided.")

            st.text_area("Report Result:", summary[0]['summary_text'] if isinstance(summary, list) else summary, height=200)
        except Exception as e:
            logging.error(f"Error during summarization: {e}")
            st.error("An error occurred during summarization. Please check the logs for more details.")

    logging.info("Closing the Streamlit app.")

if __name__ == "__main__":
    main()