Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -31,6 +31,11 @@ import requests
|
|
31 |
import base64
|
32 |
import os
|
33 |
import re
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
st.title('🤖 eRAG-PDPA-v1')
|
36 |
|
@@ -45,9 +50,11 @@ st.markdown("""
|
|
45 |
|
46 |
system_prompt = "คุณเป็นผู้ช่วยที่มีความรู้ด้านกฎหมาย พระราชบัญญัติคุ้มครองข้อมูลส่วนบุคคล (PDPA) และสามารถให้คำตอบที่เกี่ยวข้องเฉพาะตาม context ที่ได้รับ"
|
47 |
|
|
|
48 |
def clean_text_for_search(text):
|
49 |
return ' '.join(re.sub(r'P-\d+\s*$', '', text, flags=re.MULTILINE).split())
|
50 |
|
|
|
51 |
def create_highlighted_pdf(pdf_path, search_text, page_number):
|
52 |
try:
|
53 |
search_text = clean_text_for_search(search_text)
|
@@ -60,7 +67,7 @@ def create_highlighted_pdf(pdf_path, search_text, page_number):
|
|
60 |
text_instances = page.search_for(word)
|
61 |
for inst in text_instances:
|
62 |
highlight = page.add_highlight_annot(inst)
|
63 |
-
highlight.set_colors(stroke=(1, 1, 0))
|
64 |
highlight.update()
|
65 |
|
66 |
new_doc = fitz.open()
|
@@ -75,6 +82,7 @@ def create_highlighted_pdf(pdf_path, search_text, page_number):
|
|
75 |
st.error(f"Error in create_highlighted_pdf: {str(e)}")
|
76 |
return None
|
77 |
|
|
|
78 |
def format_file_size(size_in_bytes):
|
79 |
for unit in ['B', 'KB', 'MB', 'GB']:
|
80 |
if size_in_bytes < 1024:
|
@@ -82,6 +90,7 @@ def format_file_size(size_in_bytes):
|
|
82 |
size_in_bytes /= 1024
|
83 |
return f"{size_in_bytes:.2f} GB"
|
84 |
|
|
|
85 |
def display_search_result(result, index):
|
86 |
with st.expander(f"🔍 Search Result #{index + 1} (Score: {result['score']:.4f})"):
|
87 |
st.markdown("#### 📄 Document Information")
|
@@ -100,7 +109,6 @@ def display_search_result(result, index):
|
|
100 |
st.write(f"• Modified: {result['metadata']['last_modified_date']}")
|
101 |
|
102 |
st.markdown("#### 📝 Content")
|
103 |
-
#st.markdown(f"```\n{result['text']}\n```")
|
104 |
st.markdown("""
|
105 |
<div style="background-color:#d3f9d8; padding: 10px;">
|
106 |
<pre>{}</pre>
|
@@ -135,6 +143,7 @@ def display_search_result(result, index):
|
|
135 |
except Exception as e:
|
136 |
st.error(f"Error displaying PDF: {str(e)}")
|
137 |
|
|
|
138 |
st.markdown("""
|
139 |
<style>
|
140 |
.stTextInput>div>div>input {
|
@@ -152,19 +161,17 @@ st.markdown("""
|
|
152 |
</style>
|
153 |
""", unsafe_allow_html=True)
|
154 |
|
155 |
-
#
|
156 |
with st.form(key="input_form"):
|
157 |
user_input = st.text_input("ป้อนคำ ข้อความ หรือประโยคที่ต้องการค้นหา:", value="ข้อมูลส่วนบุคคล คืออะไร มีกี่ประเภท", key="input")
|
158 |
submit_button = st.form_submit_button("Send")
|
159 |
|
160 |
-
# แสดงผลเมื่อปุ่ม 'Send' ถูกคลิก
|
161 |
if submit_button:
|
162 |
st.write(f"คุณป้อนข้อความ: {user_input}")
|
163 |
-
|
164 |
|
165 |
if submit_button and user_input:
|
166 |
try:
|
167 |
-
response = requests.post("http://113.53.253.50:8002/search", json={"query": user_input})
|
168 |
response.raise_for_status()
|
169 |
data = response.json()
|
170 |
search_results = data["results"]
|
@@ -176,7 +183,7 @@ if submit_button and user_input:
|
|
176 |
except requests.RequestException as e:
|
177 |
st.error(f"Error: {str(e)}")
|
178 |
|
179 |
-
|
180 |
st.subheader("📄 ไฟล์เอกสารที่ใช้เป็นคลังข้อมูล PDPA")
|
181 |
st.markdown(
|
182 |
"""
|
|
|
31 |
import base64
|
32 |
import os
|
33 |
import re
|
34 |
+
import fitz # PyMuPDF
|
35 |
+
|
36 |
+
headers = {
|
37 |
+
"Authorization": "Bearer eRAG-PDPA-App"
|
38 |
+
}
|
39 |
|
40 |
st.title('🤖 eRAG-PDPA-v1')
|
41 |
|
|
|
50 |
|
51 |
system_prompt = "คุณเป็นผู้ช่วยที่มีความรู้ด้านกฎหมาย พระราชบัญญัติคุ้มครองข้อมูลส่วนบุคคล (PDPA) และสามารถให้คำตอบที่เกี่ยวข้องเฉพาะตาม context ที่ได้รับ"
|
52 |
|
53 |
+
# Function to clean text for search
|
54 |
def clean_text_for_search(text):
|
55 |
return ' '.join(re.sub(r'P-\d+\s*$', '', text, flags=re.MULTILINE).split())
|
56 |
|
57 |
+
# Function to create highlighted PDF
|
58 |
def create_highlighted_pdf(pdf_path, search_text, page_number):
|
59 |
try:
|
60 |
search_text = clean_text_for_search(search_text)
|
|
|
67 |
text_instances = page.search_for(word)
|
68 |
for inst in text_instances:
|
69 |
highlight = page.add_highlight_annot(inst)
|
70 |
+
highlight.set_colors(stroke=(1, 1, 0)) # Highlight color (yellow)
|
71 |
highlight.update()
|
72 |
|
73 |
new_doc = fitz.open()
|
|
|
82 |
st.error(f"Error in create_highlighted_pdf: {str(e)}")
|
83 |
return None
|
84 |
|
85 |
+
# Function to format file size
|
86 |
def format_file_size(size_in_bytes):
|
87 |
for unit in ['B', 'KB', 'MB', 'GB']:
|
88 |
if size_in_bytes < 1024:
|
|
|
90 |
size_in_bytes /= 1024
|
91 |
return f"{size_in_bytes:.2f} GB"
|
92 |
|
93 |
+
# Function to display search results
|
94 |
def display_search_result(result, index):
|
95 |
with st.expander(f"🔍 Search Result #{index + 1} (Score: {result['score']:.4f})"):
|
96 |
st.markdown("#### 📄 Document Information")
|
|
|
109 |
st.write(f"• Modified: {result['metadata']['last_modified_date']}")
|
110 |
|
111 |
st.markdown("#### 📝 Content")
|
|
|
112 |
st.markdown("""
|
113 |
<div style="background-color:#d3f9d8; padding: 10px;">
|
114 |
<pre>{}</pre>
|
|
|
143 |
except Exception as e:
|
144 |
st.error(f"Error displaying PDF: {str(e)}")
|
145 |
|
146 |
+
# Custom styles for Streamlit inputs
|
147 |
st.markdown("""
|
148 |
<style>
|
149 |
.stTextInput>div>div>input {
|
|
|
161 |
</style>
|
162 |
""", unsafe_allow_html=True)
|
163 |
|
164 |
+
# Form for user input
|
165 |
with st.form(key="input_form"):
|
166 |
user_input = st.text_input("ป้อนคำ ข้อความ หรือประโยคที่ต้องการค้นหา:", value="ข้อมูลส่วนบุคคล คืออะไร มีกี่ประเภท", key="input")
|
167 |
submit_button = st.form_submit_button("Send")
|
168 |
|
|
|
169 |
if submit_button:
|
170 |
st.write(f"คุณป้อนข้อความ: {user_input}")
|
|
|
171 |
|
172 |
if submit_button and user_input:
|
173 |
try:
|
174 |
+
response = requests.post("http://113.53.253.50:8002/search", json={"query": user_input}, headers=headers)
|
175 |
response.raise_for_status()
|
176 |
data = response.json()
|
177 |
search_results = data["results"]
|
|
|
183 |
except requests.RequestException as e:
|
184 |
st.error(f"Error: {str(e)}")
|
185 |
|
186 |
+
# Document repository section
|
187 |
st.subheader("📄 ไฟล์เอกสารที่ใช้เป็นคลังข้อมูล PDPA")
|
188 |
st.markdown(
|
189 |
"""
|