deepkansara-123 commited on
Commit
1383f07
Β·
verified Β·
1 Parent(s): d47c045

Upload 7 files

Browse files
Files changed (2) hide show
  1. app.py +23 -50
  2. my_database1.db +3 -0
app.py CHANGED
@@ -24,29 +24,20 @@ model = AutoModelForSeq2SeqLM.from_pretrained("google/flan-t5-base")
24
  qa_model = pipeline("text2text-generation", model=model, tokenizer=tokenizer)
25
 
26
  # βœ… Upload and process PDF
27
-
28
- # βœ… Multiple file upload logic
29
- def upload_pdf(files):
30
  try:
31
- messages = []
32
-
33
- for file in files:
34
- filename = file.name
35
- token = str(uuid.uuid4())
36
-
37
- pdf_reader = PyPDF2.PdfReader(file)
38
- text = "".join([page.extract_text() or "" for page in pdf_reader.pages])
39
- chunks = [text[i:i+500] for i in range(0, len(text), 500)]
40
-
41
- create_db(token, chunks, filename, text)
42
- messages.append(f"βœ… Uploaded and stored: {filename} (Token: {token})")
43
 
44
- return "\n".join(messages)
 
 
45
 
 
 
46
  except Exception as e:
47
  return f"❌ Error: {str(e)}"
48
 
49
-
50
  # βœ… Generate Q&A using filename
51
  def generate_qa(filename):
52
  try:
@@ -77,7 +68,7 @@ def generate_qa(filename):
77
  # βœ… Ask question using token (semantic similarity)
78
  def ask_question(token, question):
79
  try:
80
- with sqlite3.connect("my_database.db") as conn:
81
  cursor = conn.cursor()
82
  cursor.execute("SELECT chunk_data FROM token_data WHERE token_id = ?", (token,))
83
  row = cursor.fetchone()
@@ -102,20 +93,21 @@ def ask_question(token, question):
102
  except Exception as e:
103
  return f"❌ Error: {str(e)}"
104
 
 
105
  def list_uploaded_pdfs():
106
  try:
107
- with sqlite3.connect("my_database.db") as conn:
108
  cursor = conn.cursor()
109
- cursor.execute("SELECT filename FROM token_data")
110
  rows = cursor.fetchall()
111
 
112
  if not rows:
113
  return "ℹ️ No PDFs uploaded yet."
114
 
115
- result = "πŸ“‚ **Uploaded PDF Files:**\n\n"
116
- for i, (filename,) in enumerate(rows, start=1):
117
- result += f"{i}. {filename}\n"
118
-
119
  return result
120
  except Exception as e:
121
  return f"❌ Error: {str(e)}"
@@ -131,25 +123,13 @@ with gr.Blocks(theme="default") as demo:
131
  """
132
  )
133
 
134
- with gr.Blocks(title="PDF Uploader") as demo:
135
- with gr.Tab("πŸ“€ Upload PDFs"):
136
- gr.Markdown("### Select and upload one or more PDF files")
137
-
138
- file_input = gr.File(
139
- label="Upload PDFs",
140
- file_types=[".pdf"],
141
- file_count="multiple" # βœ… enables multi-select in UI
142
- )
143
-
144
- upload_output = gr.Textbox(
145
- label="Upload Results",
146
- lines=10,
147
- interactive=False
148
- )
149
-
150
- file_input.change(fn=upload_pdf, inputs=file_input, outputs=upload_output)
151
 
152
 
 
 
153
 
154
  with gr.Tab("🧠 2. Generate Questions & Answers"):
155
  gr.Markdown("### πŸ€– Generate Q&A from your PDF")
@@ -165,17 +145,10 @@ with gr.Blocks(theme="default") as demo:
165
  gr.Button("🎯 Get Answer").click(fn=ask_question, inputs=[token_box, question_box], outputs=answer_result)
166
 
167
  with gr.Tab("πŸ“š 4. View Uploaded PDFs"):
168
- gr.Markdown("### πŸ“‹ Uploaded PDF List")
169
-
170
  list_btn = gr.Button("πŸ”„ Refresh List")
171
-
172
  pdf_list_output = gr.Markdown()
173
-
174
- list_btn.click(
175
- fn=list_uploaded_pdfs,
176
- inputs=[],
177
- outputs=pdf_list_output
178
- )
179
 
180
  if __name__ == "__main__":
181
  demo.launch(server_name="0.0.0.0", server_port=7860)
 
24
  qa_model = pipeline("text2text-generation", model=model, tokenizer=tokenizer)
25
 
26
  # βœ… Upload and process PDF
27
+ def upload_pdf(file):
 
 
28
  try:
29
+ filename = file.name
30
+ token = str(uuid.uuid4())
 
 
 
 
 
 
 
 
 
 
31
 
32
+ pdf_reader = PyPDF2.PdfReader(file)
33
+ text = "".join([page.extract_text() or "" for page in pdf_reader.pages])
34
+ chunks = [text[i:i+500] for i in range(0, len(text), 500)]
35
 
36
+ create_db(token, chunks, filename, text)
37
+ return f"βœ… Uploaded and stored: {filename} (Token: {token})"
38
  except Exception as e:
39
  return f"❌ Error: {str(e)}"
40
 
 
41
  # βœ… Generate Q&A using filename
42
  def generate_qa(filename):
43
  try:
 
68
  # βœ… Ask question using token (semantic similarity)
69
  def ask_question(token, question):
70
  try:
71
+ with sqlite3.connect("my_database1.db") as conn:
72
  cursor = conn.cursor()
73
  cursor.execute("SELECT chunk_data FROM token_data WHERE token_id = ?", (token,))
74
  row = cursor.fetchone()
 
93
  except Exception as e:
94
  return f"❌ Error: {str(e)}"
95
 
96
+ # βœ… View uploaded PDFs (Gradio Tab)
97
  def list_uploaded_pdfs():
98
  try:
99
+ with sqlite3.connect("my_database1.db") as conn:
100
  cursor = conn.cursor()
101
+ cursor.execute("SELECT filename, token_id, content FROM token_data")
102
  rows = cursor.fetchall()
103
 
104
  if not rows:
105
  return "ℹ️ No PDFs uploaded yet."
106
 
107
+ result = ""
108
+ for filename, token, content in rows:
109
+ preview = content[:200].replace("\n", " ") + "..." if len(content) > 200 else content
110
+ result += f"πŸ“„ **Filename:** {filename}\nπŸ”‘ Token: `{token}`\nπŸ“ Preview: {preview}\n\n---\n"
111
  return result
112
  except Exception as e:
113
  return f"❌ Error: {str(e)}"
 
123
  """
124
  )
125
 
126
+ with gr.Tab("πŸ“€ 1. Upload PDF"):
127
+ gr.Markdown("### πŸ—‚ Upload a PDF File")
128
+ file = gr.File(label="Upload one or more PDFs", file_types=[".pdf"], file_count="multiple")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
 
130
 
131
+ upload_out = gr.Textbox(label="Upload Result", interactive=False)
132
+ file.change(fn=upload_pdf, inputs=file, outputs=upload_out)
133
 
134
  with gr.Tab("🧠 2. Generate Questions & Answers"):
135
  gr.Markdown("### πŸ€– Generate Q&A from your PDF")
 
145
  gr.Button("🎯 Get Answer").click(fn=ask_question, inputs=[token_box, question_box], outputs=answer_result)
146
 
147
  with gr.Tab("πŸ“š 4. View Uploaded PDFs"):
148
+ gr.Markdown("### πŸ“‹ Uploaded PDF List (with Preview Snippets)")
 
149
  list_btn = gr.Button("πŸ”„ Refresh List")
 
150
  pdf_list_output = gr.Markdown()
151
+ list_btn.click(fn=list_uploaded_pdfs, outputs=pdf_list_output)
 
 
 
 
 
152
 
153
  if __name__ == "__main__":
154
  demo.launch(server_name="0.0.0.0", server_port=7860)
my_database1.db ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6412623c4a1e5bab6d73d3a7ac1f0deef76bb249d8e5b094f3095349d4a925e1
3
+ size 6090752