- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동 - book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서) - 빈 폴더 제거 (journey/assets/*)
2.2 KiB
2.2 KiB
skill-rag-file HWP 지원 구현
작성일: 2025-10-10 작성자: Claude (로컬 개발자) 상태: 실행 예정
목표
skill-rag-file에 HWP 파일 처리 기능 추가 (LibreOffice CLI 방식)
현재 상태
미지원 확인
- config.py:33-36 - ALLOWED_EXTENSIONS에 .hwp 누락
- text_extractor.py:15-57 - extract()에 .hwp 처리 로직 없음
- Dockerfile:6-9 - LibreOffice 미설치
선택한 방식
LibreOffice CLI 래퍼 (무료, 크로스 플랫폼)
- HWP → PDF 변환 후 텍스트 추출
- 명령어:
soffice --headless --convert-to pdf <hwp파일> --outdir <경로> - 출처:
/DOCS/ideas/250916_HWP-PDF_변환_전략_분석.md
구현 계획
1. Dockerfile 수정
- 위치: skill-rag-file/Dockerfile:6-9
- 추가:
libreoffice --headless설치
2. config.py 수정
- 위치: skill-rag-file/app/core/config.py:33-36
- 추가:
".hwp"to ALLOWED_EXTENSIONS
3. text_extractor.py 수정
- 위치: skill-rag-file/app/services/text_extractor.py
- extract() 메서드:15-57 -
.hwp분기 추가 - 신규 메서드 -
_extract_hwp(file_path)추가- subprocess로 soffice 호출
- HWP → PDF 변환
- PyPDF2로 텍스트 추출
4. 배포
- docker-compose down && up --build
- Gitea Actions 자동 배포
테스트 방법
로컬 테스트
# LibreOffice 설치 (Ubuntu)
apt-get install -y libreoffice --no-install-recommends
# 변환 테스트
soffice --headless --convert-to pdf test.hwp --outdir /tmp
API 테스트
# 파일 업로드
curl -X POST http://localhost:8508/api/v1/upload \
-H "Authorization: Bearer {TOKEN}" \
-F "file=@test.hwp" \
-F "user_uuid={UUID}"
주의사항
- 변환 품질: 리버스 엔지니어링 기반, 레이아웃 깨질 수 있음
- 성능: soffice 프로세스 시작 오버헤드 있음
- Dockerfile 크기: LibreOffice 추가 시 ~300MB 증가
- 에러 처리: subprocess 실패 시 적절한 로그 필요
참고 문서
/DOCS/ideas/250916_HWP-PDF_변환_전략_분석.md- 전략 분석/DOCS/300_architecture/311_FastAPI_구조_원칙.md- 계층 분리 원칙