๐ชถ Apache Tika Extraction
์ด ํํ ๋ฆฌ์ผ์ ์ปค๋ฎค๋ํฐ ๊ธฐ์ฌ๋ก ์ ๊ณต๋๋ฉฐ Open WebUI ํ์์ ์ง์ํ์ง ์์ต๋๋ค. ์ด๋ ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๊ฒ Open WebUI๋ฅผ ์ฌ์ฉ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ๋ฐ๋ง ๋ชฉ์ ์ ๋๊ณ ์์ต๋๋ค. ๊ธฐ์ฌํ๊ณ ์ถ์ผ์ ๊ฐ์? ๊ธฐ์ฌ ํํ ๋ฆฌ์ผ์ ํ์ธํด ๋ณด์ธ์.
๐ชถ Apache Tika Extractionโ
์ด ๋ฌธ์๋ Apache Tika๋ฅผ Open WebUI์ ํตํฉํ๋ ๋จ๊ณ๋ณ ๊ฐ์ด๋๋ฅผ ์ ๊ณตํฉ๋๋ค. Apache Tika๋ ์ฝํ ์ธ ๋ถ์ ํดํท์ผ๋ก, 1,000๊ฐ ์ด์์ ๋ค์ํ ํ์ผ ์ ํ์์ ๋ฉํ๋ฐ์ดํฐ์ ํ ์คํธ ์ฝํ ์ธ ๋ฅผ ๊ฐ์ง ๋ฐ ์ถ์ถํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. Tika๋ ๊ฒ์ ์์ง ์์ธ ์์ฑ, ์ฝํ ์ธ ๋ถ์, ๋ฒ์ญ ๋ฑ ๋ค์ํ ์์ ์ ์ ์ฉํฉ๋๋ค.
์ ์ ์กฐ๊ฑดโ
- Open WebUI ์ธ์คํด์ค
- ์์คํ ์ ์ค์น๋ Docker
- Open WebUI์ฉ์ผ๋ก ์ค์ ๋ Docker ๋คํธ์ํฌ
ํตํฉ ๋จ๊ณโ
1๋จ๊ณ: Docker Compose ํ์ผ ์์ฑ ๋๋ Docker ๋ช ๋ น ์คํํ์ฌ Apache Tika ์คํโ
Apache Tika๋ฅผ ์คํํ๋ ๋ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค:
์ต์ 1: Docker Compose ์ฌ์ฉ
Open WebUI ์ธ์คํด์ค์ ๋์ผํ ๋๋ ํฐ๋ฆฌ์ docker-compose.yml
์ด๋ผ๋ ์ ํ์ผ์ ์์ฑํ์ธ์. ํ์ผ์ ๋ค์ ๊ตฌ์ฑ์ ์ถ๊ฐํฉ๋๋ค:
services:
tika:
image: apache/tika:latest-full
container_name: tika
ports:
- "9998:9998"
restart: unless-stopped
๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ Docker Compose ํ์ผ์ ์คํํ์ธ์:
docker-compose up -d
์ต์ 2: Docker ์คํ ๋ช ๋ น ์ฌ์ฉ
๋๋ ๋ค์ Docker ๋ช ๋ น์ ์ฌ์ฉํ์ฌ Apache Tika๋ฅผ ์คํํ ์ ์์ต๋๋ค:
docker run -d --name tika \
-p 9998:9998 \
--restart unless-stopped \
apache/tika:latest-full
Docker ์คํ ๋ช
๋ น์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Open WebUI ์ธ์คํด์ค์ ๋์ผํ ๋คํธ์ํฌ์์ ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ค๋ฉด --network
ํ๋๊ทธ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
2๋จ๊ณ: Open WebUI๋ฅผ Apache Tika ์ฌ์ฉ์ผ๋ก ๊ตฌ์ฑโ
Open WebUI์์ Apache Tika๋ฅผ ์ปจํ ์คํธ ์ถ์ถ ์์ง์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์:
- Open WebUI ์ธ์คํด์ค์ ๋ก๊ทธ์ธํฉ๋๋ค.
๊ด๋ฆฌ ํจ๋
์ค์ ๋ฉ๋ด๋ก ์ด๋ํฉ๋๋ค.์ค์
์ ํด๋ฆญํฉ๋๋ค.๋ฌธ์
ํญ์ ํด๋ฆญํฉ๋๋ค.๊ธฐ๋ณธ
์ฝํ ์ธ ์ถ์ถ ์์ง ๋๋กญ๋ค์ด์Tika
๋ก ๋ณ๊ฒฝํฉ๋๋ค.- ์ปจํ
์คํธ ์ถ์ถ ์์ง URL์
http://tika:9998
๋ก ์ ๋ฐ์ดํธํฉ๋๋ค. - ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฅํฉ๋๋ค.
Docker์์ Apache Tika ๊ฒ์ฆ
Docker ํ๊ฒฝ์์ Apache Tika๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํ ์ ์์ต๋๋ค:
1. Apache Tika Docker ์ปจํ ์ด๋ ์์โ
๋จผ์ Apache Tika Docker ์ปจํ ์ด๋๊ฐ ์คํ๋๊ณ ์๋์ง ํ์ธํ์ธ์. ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋๋ฅผ ์์ํ ์ ์์ต๋๋ค:
docker run -p 9998:9998 apache/tika
์ด ๋ช ๋ น์ Apache Tika ์ปจํ ์ด๋๋ฅผ ์์ํ๊ณ ์ปจํ ์ด๋์ ํฌํธ 9998์ ๋ก์ปฌ ๋จธ์ ์ ํฌํธ 9998์ ์ฐ๊ฒฐํฉ๋๋ค.
2. ์๋ฒ ์คํ ์ฌ๋ถ ํ์ธโ
GET ์์ฒญ์ ๋ณด๋ด Apache Tika ์๋ฒ๊ฐ ์คํ๋๊ณ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค:
curl -X GET http://localhost:9998/tika
์ด ๋ช ๋ น์ ๋ค์ ์๋ต์ ๋ฐํํด์ผ ํฉ๋๋ค:
This is Tika Server. Please PUT
3. ํตํฉ ๊ฒ์ฆโ
๋๋ ํ์ผ์ ๋ถ์์ ์ํด ์ ์กํ์ฌ ํตํฉ์ ํ
์คํธํ ์๋ ์์ต๋๋ค. curl
๋ช
๋ น์ ์ฌ์ฉํ์ฌ ํ์ผ์ ๋ถ์์ ์ํด Apache Tika๋ก ์ ์กํ ์ ์์ต๋๋ค:
curl -T test.txt http://localhost:9998/tika
๋ก์ปฌ ๋จธ์ ์ ํ
์คํธ ํ์ผ ๊ฒฝ๋ก๋ฅผ test.txt
๋์ ์
๋ ฅํ์ธ์.
Apache Tika๋ ํ์ผ์ ๊ฐ์ง๋ ๋ฉํ๋ฐ์ดํฐ์ ์ฝํ ์ธ ์ ํ์ผ๋ก ์๋ตํฉ๋๋ค.
Apache Tika๋ฅผ ๊ฒ์ฆํ๋ ์คํฌ๋ฆฝํธ ์ฌ์ฉโ
์๋ํ๋ ๊ฒ์ฆ ํ๋ก์ธ์ค๋ฅผ ์ํ์๋ฉด ์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ํ์ผ์ Apache Tika๋ก ์ ์กํ๊ณ ์๋ต ๋ด์์ ๊ธฐ๋๋๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํ์ธํฉ๋๋ค. ๋ฉํ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ๋ ์ฑ๊ณต ๋ฉ์์ง์ ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ฉฐ, ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ค๋ฅ ๋ฉ์์ง์ Tika์ ์๋ต์ ์ถ๋ ฅํฉ๋๋ค.
import requests
def verify_tika(file_path, tika_url):
try:
# ํ์ผ์ Apache Tika๋ก ์ ์กํ๊ณ ์ถ๋ ฅ ํ์ธ
response = requests.put(tika_url, files={file: open(file_path, rb)})
if response.status_code == 200:
print("Apache Tika๊ฐ ํ์ผ์ ์ฑ๊ณต์ ์ผ๋ก ๋ถ์ํ์ต๋๋ค.")
print("Apache Tika์ ์๋ต:")
print(response.text)
else:
print("ํ์ผ ๋ถ์ ์ค ์ค๋ฅ ๋ฐ์:")
print(f"์ํ ์ฝ๋: {response.status_code}")
print(f"Apache Tika์ ์๋ต: {response.text}")
except Exception as e:
print(f"์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค: {e}")
if __name__ == "__main__":
file_path = "test.txt" # ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ฌ๊ธฐ์ ์
๋ ฅํ์ธ์
tika_url = "http://localhost:9998/tika"
verify_tika(file_path, tika_url)
์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ธฐ ์ํ ์ง์นจ:
์ ์ ์กฐ๊ฑดโ
- Python 3.x๊ฐ ์์คํ ์ ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค
requests
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋์ด์ผ ํฉ๋๋ค (pip ์ฌ์ฉ:pip install requests
)- Apache Tika Docker ์ปจํ
์ด๋๊ฐ ์คํ ์ค์ด์ด์ผ ํฉ๋๋ค (๋ช
๋ น์ด
docker run -p 9998:9998 apache/tika
์ฌ์ฉ) "test.txt"
๋ฅผ Apache Tika์ ๋ณด๋ผ ํ์ผ ๊ฒฝ๋ก๋ก ๋ฐ๊พธ์ธ์
์คํฌ๋ฆฝํธ ์คํํ๊ธฐโ
- ์คํฌ๋ฆฝํธ๋ฅผ
verify_tika.py
๋ก ์ ์ฅํ์ธ์ (์: Notepad ๋๋ Sublime Text์ ๊ฐ์ ํ ์คํธ ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅ) - ํฐ๋ฏธ๋ ๋๋ ๋ช ๋ น ํ๋กฌํํธ๋ฅผ ์ฝ๋๋ค
- ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฅํ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค (
cd
๋ช ๋ น์ด ์ฌ์ฉ) - ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์คํ ํฉ๋๋ค:
python verify_tika.py
- ์คํฌ๋ฆฝํธ๊ฐ Apache Tika๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ๋ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ ๊ฒ์ ๋๋ค
์ฐธ๊ณ : ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด Apache Tika ์ปจํ ์ด๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์คํ ์ค์ธ์ง ํ์ธํ๊ณ ํ์ผ์ด ์ฌ๋ฐ๋ฅธ URL๋ก ์ ์ก๋์๋์ง ํ์ธํ์ธ์.
๊ฒฐ๋ก โ
์์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด๋ฉด Docker ํ๊ฒฝ์์ Apache Tika๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ํ์ผ์ ๋ถ์ํ๊ธฐ ์ํด ๋ณด๋ด๋ ๊ฒ, GET ์์ฒญ์ผ๋ก ์๋ฒ๊ฐ ์๋ ์ค์ธ์ง ํ์ธํ๋ ๊ฒ ๋๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๊ธฐ ์ํ ์คํฌ๋ฆฝํธ ํ์ฉ์ผ๋ก ์ค์ ์ ํ ์คํธํ ์ ์์ต๋๋ค. ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด Apache Tika ์ปจํ ์ด๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์คํ ์ค์ธ์ง ํ์ธํ๊ณ ํ์ผ์ด ์ฌ๋ฐ๋ฅธ URL๋ก ์ ์ก๋์๋์ง ํ์ธํ์ธ์.
๋ฌธ์ ํด๊ฒฐโ
- Apache Tika ์๋น์ค๊ฐ ์คํ ์ค์ด๋ฉฐ Open WebUI ์ธ์คํด์ค์์ ์ ๊ทผ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
- Docker ๋ก๊ทธ๋ฅผ ํ์ธํ์ฌ Apache Tika ์๋น์ค์ ๊ด๋ จ๋ ์ค๋ฅ ๋๋ ๋ฌธ์ ๋ฅผ ํ์ธํ์ธ์.
- Open WebUI์์ ์ปจํ ์คํธ ์ถ์ถ ์์ง URL์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์๋์ง ํ์ธํ์ธ์.
ํตํฉ์ ์ด์ โ
Apache Tika๋ฅผ Open WebUI์ ํตํฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ํฅ์๋ ๋ฉํ๋ฐ์ดํฐ ์ถ์ถ: Apache Tika์ ๊ณ ๊ธ ๋ฉํ๋ฐ์ดํฐ ์ถ์ถ ๊ธฐ๋ฅ์ ํ์ผ์์ ์ ํํ๊ณ ๊ด๋ จ์ฑ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
- ๋ค์ํ ํ์ผ ํ์ ์ง์: Apache Tika๋ ๊ด๋ฒ์ํ ํ์ผ ํ์์ ์ง์ํ๋ฏ๋ก ๋ค์ํ ํ์ผ ์ ํ์ ์ฒ๋ฆฌํ๋ ์กฐ์ง์ ์ ํฉํ ์๋ฃจ์ ์ ๋๋ค.
- ํฅ์๋ ์ฝํ ์ธ ๋ถ์: Apache Tika์ ๊ณ ๊ธ ์ฝํ ์ธ ๋ถ์ ๊ธฐ๋ฅ์ ํ์ผ์์ ์ ์ฉํ ํต์ฐฐ๋ ฅ์ ์ถ์ถํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
๊ฒฐ๋ก โ
Apache Tika๋ฅผ Open WebUI์ ํตํฉํ๋ ๊ณผ์ ์ ๊ฐ๋จํ๋ฉฐ Open WebUI ์ธ์คํด์ค์ ๋ฉํ๋ฐ์ดํฐ ์ถ์ถ ๊ธฐ๋ฅ์ ํฅ์์ํฌ ์ ์๋ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ๋ฌธ์์์ ์ค๋ช ํ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด๋ฉด Open WebUI๋ฅผ ์ํ ์ปจํ ์คํธ ์ถ์ถ ์์ง์ผ๋ก Apache Tika๋ฅผ ์ฝ๊ฒ ์ค์ ํ ์ ์์ต๋๋ค.