db_sonbo_pc2mobile_data_ext.../README.md

274 lines
8.2 KiB
Markdown

# DB Sonbo Project
Database Sonbo Project는 데이터베이스 관련 자료를 수집하고 주제별로 요약하는 프로젝트입니다. 이 프로젝트는 비디오와 PDF 문서에서 텍스트를 추출하고, GPT-4를 활용하여 주제별로 정리된 요약을 생성합니다.
## 프로젝트 개요
### 주요 기능
- **다양한 문서 형식 지원**: 비디오 파일(.mp4, .avi 등)과 PDF 문서 처리
- **자동 텍스트 추출**: 비디오에서 오디오를 추출하고 음성 인식으로 변환, PDF에서 텍스트 추출
- **OCR 지원**: 스캔된 PDF 문서에서 광학 문자 인식(OCR)을 통해 텍스트 추출
- **주제별 요약 생성**: 추출된 텍스트를 GPT-4 모델을 사용하여 주제별로 정리
- **통합된 처리 파이프라인**: 모든 과정을 하나의 명령어로 실행 가능
### 처리 과정
1. **문서 전처리**:
- 비디오 → 오디오 추출 → 음성 인식 → 텍스트 생성
- PDF → 텍스트 추출 (필요시 OCR 적용)
2. **주제별 요약**:
- 추출된 텍스트를 GPT-4 API를 사용하여 주요 주제별로 구조화된 요약 생성
- 결과를 텍스트 파일로 저장
## 프로젝트 구조
```
db_sonbo/
├── data/ # 처리할 원본 파일을 이 폴더에 저장
├── preprocessed/ # 전처리된 텍스트 파일이 저장되는 폴더
├── topic_summaries/ # 생성된 주제별 요약이 저장되는 폴더
├── temp/ # 임시 파일 저장 폴더(비디오 처리 중 생성되는 오디오 등)
├── src/ # 소스 코드
│ ├── base_processor.py # 문서 처리를 위한 기본 추상 클래스
│ ├── video_processor.py # 비디오 처리 클래스
│ ├── pdf_processor.py # PDF 처리 클래스
│ ├── document_processor.py # 통합 문서 처리 클래스
│ ├── topic_summarizer.py # 주제별 요약 생성 클래스
│ └── main.py # 메인 실행 스크립트
└── prompts/ # GPT 프롬프트 템플릿
```
## 주요 컴포넌트 설명
### BaseDocumentProcessor
모든 문서 처리기의 기본이 되는 추상 클래스입니다. 다양한 문서 형식을 일관된 방식으로 처리할 수 있도록 공통 인터페이스를 정의합니다.
### VideoProcessor
비디오 파일에서 오디오를 추출하고, Whisper 모델을 사용하여 음성을 텍스트로 변환합니다. 다양한 비디오 형식(.mp4, .avi, .mov, .mkv 등)을 지원합니다.
### PDFProcessor
PDF 파일에서 텍스트를 추출합니다. 텍스트 레이어가 있는 PDF는 직접 추출하고, 스캔된 PDF는 OCR을 적용하여 텍스트를 추출합니다. 또한 일반 텍스트 파일(.txt)도 처리할 수 있습니다.
### DocumentProcessor
파일 형식을 감지하고 적절한 처리기(VideoProcessor 또는 PDFProcessor)를 선택하여 처리합니다. 시스템의 주요 진입점입니다.
### TopicSummarizer
전처리된 텍스트를 받아 GPT-4를 사용하여 주제별로 구조화된 요약을 생성합니다.
## 로컬 설치 방법
### 요구사항
- Python 3.11 이상
- Poetry
- FFmpeg (비디오 처리용)
- Tesseract OCR (스캔된 PDF 처리용)
### Python 의존성 설치
```bash
# Python 의존성 설치
poetry install
```
### 외부 의존성 설치 방법
#### FFmpeg 자동 설치 (권장)
```bash
# 스크립트에 실행 권한 부여
chmod +x install_ffmpeg.sh
# FFmpeg 설치 스크립트 실행
./install_ffmpeg.sh
```
#### Tesseract OCR 설치
**macOS:**
```bash
# Homebrew를 통해 Tesseract 설치 (한국어 데이터 포함)
brew install tesseract
brew install tesseract-lang # 다국어 지원
brew install poppler # PDF 이미지 변환에 필요한 라이브러리
# 또는 수동으로 한국어 데이터 설치
mkdir -p ~/tessdata
curl -o ~/tessdata/kor.traineddata https://github.com/tesseract-ocr/tessdata/raw/main/kor.traineddata
echo 'export TESSDATA_PREFIX=~/tessdata' >> ~/.zshrc # 또는 ~/.bashrc
```
**Ubuntu/Debian:**
```bash
sudo apt-get update
sudo apt-get install tesseract-ocr
sudo apt-get install tesseract-ocr-kor # 한국어 언어 팩
sudo apt-get install poppler-utils # PDF 변환 도구
```
**Windows:**
1. [Tesseract 다운로드 페이지](https://github.com/UB-Mannheim/tesseract/wiki)에서 설치 프로그램 다운로드
2. 설치 과정에서 "추가 언어 데이터" 옵션에서 한국어 선택
3. 환경 변수에 Tesseract 설치 경로 추가
4. [Poppler for Windows](https://github.com/oschwartz10612/poppler-windows/releases/)에서 Poppler 다운로드 및 설치
5. Poppler의 bin 폴더를 환경 변수 PATH에 추가
#### 수동 FFmpeg 설치
**macOS:**
```bash
brew install ffmpeg
```
**Ubuntu/Debian:**
```bash
sudo apt-get update
sudo apt-get install ffmpeg
```
**CentOS/RHEL:**
```bash
sudo yum install ffmpeg
```
**Windows:**
FFmpeg 공식 사이트에서 다운로드: [https://ffmpeg.org/download.html](https://ffmpeg.org/download.html)
## 사용 방법
### 준비
1. `.env` 파일을 프로젝트 루트에 생성하고 OpenAI API 키를 설정합니다:
```
OPENAI_API_KEY=your_api_key_here
```
2. 처리할 비디오 또는 PDF 파일을 `data` 폴더에 넣습니다.
### 실행 옵션
1. **전체 파이프라인 실행** (문서 처리 및 요약):
```bash
poetry run python src/main.py
```
2. **전처리만 실행** (요약 생성 건너뛰기):
```bash
poetry run python src/main.py --only-process
```
3. **요약만 생성** (이미 전처리된 파일 사용):
```bash
poetry run python src/main.py --only-summarize
```
4. **특정 파일만 처리**:
```bash
poetry run python src/main.py --process-file 파일명.pdf
```
5. 결과는 `preprocessed``topic_summaries` 폴더에서 확인할 수 있습니다.
### 각 모듈 개별 실행
개별 모듈을 직접 실행할 수도 있습니다:
- 비디오 처리:
```bash
poetry run python src/video_processor.py
```
- PDF 처리:
```bash
poetry run python src/pdf_processor.py
```
- 주제별 요약 생성:
```bash
poetry run python src/topic_summarizer.py
```
## 결과물 형식
### 전처리 결과
`preprocessed` 폴더에 저장되는 파일은 다음과 같은 형식으로 구성됩니다:
- 비디오 파일: 파일명, 파일 정보, 추출된 트랜스크립트 텍스트
- PDF/텍스트 파일: 파일명, 파일 타입, 문자 수, 추출된 텍스트
### 요약 결과
`topic_summaries` 폴더에는 주제별로 정리된 요약 문서가 저장됩니다. 각 파일은 원본 문서에서 추출된 주요 토픽과 그에 대한 요약 내용을 포함합니다.
## 지원 파일 형식
### 비디오
- mp4, avi, mov, mkv, wmv 등 주요 비디오 형식
### 문서
- PDF 문서 파일 (.pdf)
- 디지털 PDF (텍스트 레이어 포함)
- 스캔된 PDF (OCR 처리)
- 텍스트 파일 (.txt)
## 의존성
### Python 패키지 (Poetry로 관리)
- moviepy (비디오 처리)
- openai (GPT API)
- python-dotenv (환경 변수)
- openai-whisper (음성 인식)
- PyPDF2 (PDF 텍스트 추출)
- pytesseract (OCR 처리)
- pdf2image (PDF를 이미지로 변환)
- requests
- pandas
- sqlalchemy
### 외부 의존성 (시스템 레벨)
- FFmpeg: 비디오 및 오디오 처리용 라이브러리
- Tesseract OCR: 이미지에서 텍스트 추출용 OCR 엔진
## 문제 해결
### 일반적인 문제
1. **OpenAI API 오류**: API 키가 올바르게 설정되었는지 확인하세요.
2. **FFmpeg 오류**: FFmpeg가 올바르게 설치되었는지 확인하세요.
3. **Tesseract OCR 오류**:
- Tesseract가 올바르게 설치되었는지 확인하세요.
- 한국어 언어 팩이 설치되었는지 확인하세요.
- `pytesseract.pytesseract.tesseract_cmd` 경로가 올바른지 확인하세요 (Windows).
4. **비디오 처리 실패**: 비디오 파일 형식이 지원되는지 확인하세요.
5. **PDF 텍스트 추출 실패**: 스캔된 PDF의 이미지 품질이 낮거나 너무 복잡한 경우 OCR 결과가 부정확할 수 있습니다.
### 로그 확인
문제가 발생하면 터미널 출력을 확인하여 오류 메시지를 찾을 수 있습니다. 각 처리 단계별로 발생한 오류가 출력됩니다.