File size: 1,101 Bytes
2d71bf6
 
 
0669fa1
2d71bf6
 
b30eb63
2d71bf6
 
 
 
30fd9a1
2d71bf6
b30eb63
 
2d71bf6
 
 
 
 
 
 
 
0669fa1
2d71bf6
0669fa1
2d71bf6
b30eb63
 
0669fa1
 
b30eb63
 
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
import gradio as gr
import PyPDF2
import io

# PDF ํŒŒ์ผ์—์„œ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•˜๋Š” ํ•จ์ˆ˜
def extract_text_from_pdf(pdf_file):
    reader = PyPDF2.PdfFileReader(io.BytesIO(pdf_file))
    text = ""
    for page in range(reader.numPages):
        text += reader.getPage(page).extractText()
    return text

# ์ถ”์ถœ๋œ ํ…์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์งˆ๋ฌธ์— ๋‹ต๋ณ€ํ•˜๋Š” ํ•จ์ˆ˜
def answer_question(pdf_file, question):
    extracted_text = extract_text_from_pdf(pdf_file)
    # ์—ฌ๊ธฐ์—์„œ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ…์ŠคํŠธ์—์„œ ์งˆ๋ฌธ๊ณผ ์œ ์‚ฌํ•œ ๋ถ€๋ถ„์„ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    # ๋ณด๋‹ค ๋ณต์žกํ•œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
    if question in extracted_text:
        start = extracted_text.find(question)
        end = extracted_text.find('.', start) + 1
        return extracted_text[start:end]
    else:
        return "์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."

# Gradio ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜
iface = gr.Interface(
    fn=answer_question,
    inputs=[gr.File(type="file"), gr.Textbox(label="์งˆ๋ฌธ")],
    outputs=gr.Textbox()
)

# Launch the interface
iface.launch()