File size: 2,253 Bytes
1a8cbd9
68ec0d7
ad90bdc
1a8cbd9
37eca50
7b69be8
 
68ec0d7
7b69be8
37eca50
ab26148
1a8cbd9
 
 
 
 
 
 
 
 
 
68ec0d7
 
37eca50
68ec0d7
ad90bdc
68ec0d7
37eca50
68ec0d7
555ba72
68ec0d7
37eca50
68ec0d7
37eca50
68ec0d7
 
 
555ba72
68ec0d7
 
 
555ba72
68ec0d7
555ba72
68ec0d7
555ba72
68ec0d7
555ba72
68ec0d7
555ba72
68ec0d7
555ba72
68ec0d7
555ba72
68ec0d7
555ba72
68ec0d7
555ba72
68ec0d7
 
 
555ba72
68ec0d7
555ba72
68ec0d7
7b69be8
68ec0d7
555ba72
68ec0d7
555ba72
68ec0d7
555ba72
68ec0d7
 
 
555ba72
68ec0d7
7b69be8
68ec0d7
 
 
 
555ba72
68ec0d7
555ba72
68ec0d7
555ba72
68ec0d7
37eca50
68ec0d7
555ba72
68ec0d7
37eca50
68ec0d7
37eca50
68ec0d7
555ba72
68ec0d7
 
555ba72
37eca50
68ec0d7
 
 
1a8cbd9
68ec0d7
 
 
 
 
555ba72
68ec0d7
1a8cbd9
68ec0d7
 
 
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import streamlit as st

from src.grobid import extract_metadata_grobid
from src.pdf_parser import extract_text_from_pdf

from src.rag_pipeline import (
    create_rag_database,
    analyze_paper
)


def upload_section():

    st.header("📤 Upload Research Papers")

    uploaded_files = st.file_uploader(
        "Upload PDF papers",
        type="pdf",
        accept_multiple_files=True
    )

    if not uploaded_files:
        return

    new_papers = []

    progress = st.progress(0)

    status = st.empty()

    total_files = len(uploaded_files)

    for idx, file in enumerate(uploaded_files):

        status.write(
            f"Processing **{file.name}**..."
        )

        # ----------------------------
        # GROBID Metadata
        # ----------------------------

        try:

            meta = extract_metadata_grobid(file)

        except Exception:

            meta = {

                "title": file.name.replace(".pdf", ""),

                "authors": ["Unknown"],

                "abstract": ""

            }

        # ----------------------------
        # Read Full Paper
        # ----------------------------

        file.seek(0)

        text = extract_text_from_pdf(file)

        meta["text"] = text

        if not meta.get("abstract"):

            meta["abstract"] = text[:3000]

        # ----------------------------
        # One AI Call
        # ----------------------------

        try:

            ai_result = analyze_paper(
                text=text,
                abstract=meta["abstract"]
            )

            meta.update(ai_result)

        except Exception:

            meta["summary"] = "Summary could not be generated."

            meta["abstract_summary"] = "Abstract summary unavailable."

            meta["limitations"] = "Limitations unavailable."

            meta["research_gaps"] = "Research gaps unavailable."

        new_papers.append(meta)

        progress.progress(
            (idx + 1) / total_files
        )

    st.session_state.papers.extend(
        new_papers
    )

    create_rag_database(
        st.session_state.papers
    )

    progress.empty()

    status.empty()

    st.success(
        f"Successfully processed {len(new_papers)} paper(s)."
    )