|
|
||
|---|---|---|
| data | ||
| preprocessed | ||
| src | ||
| temp | ||
| topic_summaries | ||
| .env | ||
| .env.example | ||
| README.md | ||
| __init__.py | ||
| install_ffmpeg.sh | ||
| poetry.lock | ||
| pyproject.toml | ||
README.md
DB Sonbo Project
Database Sonbo Project는 데이터베이스 관련 자료를 수집하고 주제별로 요약하는 프로젝트입니다. 이 프로젝트는 비디오와 PDF 문서에서 텍스트를 추출하고, GPT-4를 활용하여 주제별로 정리된 요약을 생성합니다.
프로젝트 개요
주요 기능
- 다양한 문서 형식 지원: 비디오 파일(.mp4, .avi 등)과 PDF 문서 처리
- 자동 텍스트 추출: 비디오에서 오디오를 추출하고 음성 인식으로 변환, PDF에서 텍스트 추출
- OCR 지원: 스캔된 PDF 문서에서 광학 문자 인식(OCR)을 통해 텍스트 추출
- 주제별 요약 생성: 추출된 텍스트를 GPT-4 모델을 사용하여 주제별로 정리
- 통합된 처리 파이프라인: 모든 과정을 하나의 명령어로 실행 가능
처리 과정
-
문서 전처리:
- 비디오 → 오디오 추출 → 음성 인식 → 텍스트 생성
- PDF → 텍스트 추출 (필요시 OCR 적용)
-
주제별 요약:
- 추출된 텍스트를 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 의존성 설치
# Python 의존성 설치
poetry install
외부 의존성 설치 방법
FFmpeg 자동 설치 (권장)
# 스크립트에 실행 권한 부여
chmod +x install_ffmpeg.sh
# FFmpeg 설치 스크립트 실행
./install_ffmpeg.sh
Tesseract OCR 설치
macOS:
# 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:
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:
- Tesseract 다운로드 페이지에서 설치 프로그램 다운로드
- 설치 과정에서 "추가 언어 데이터" 옵션에서 한국어 선택
- 환경 변수에 Tesseract 설치 경로 추가
- Poppler for Windows에서 Poppler 다운로드 및 설치
- Poppler의 bin 폴더를 환경 변수 PATH에 추가
수동 FFmpeg 설치
macOS:
brew install ffmpeg
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install ffmpeg
CentOS/RHEL:
sudo yum install ffmpeg
Windows: FFmpeg 공식 사이트에서 다운로드: https://ffmpeg.org/download.html
사용 방법
준비
-
.env파일을 프로젝트 루트에 생성하고 OpenAI API 키를 설정합니다:OPENAI_API_KEY=your_api_key_here -
처리할 비디오 또는 PDF 파일을
data폴더에 넣습니다.
실행 옵션
-
전체 파이프라인 실행 (문서 처리 및 요약):
poetry run python src/main.py -
전처리만 실행 (요약 생성 건너뛰기):
poetry run python src/main.py --only-process -
요약만 생성 (이미 전처리된 파일 사용):
poetry run python src/main.py --only-summarize -
특정 파일만 처리:
poetry run python src/main.py --process-file 파일명.pdf -
결과는
preprocessed및topic_summaries폴더에서 확인할 수 있습니다.
각 모듈 개별 실행
개별 모듈을 직접 실행할 수도 있습니다:
-
비디오 처리:
poetry run python src/video_processor.py -
PDF 처리:
poetry run python src/pdf_processor.py -
주제별 요약 생성:
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 엔진
문제 해결
일반적인 문제
- OpenAI API 오류: API 키가 올바르게 설정되었는지 확인하세요.
- FFmpeg 오류: FFmpeg가 올바르게 설치되었는지 확인하세요.
- Tesseract OCR 오류:
- Tesseract가 올바르게 설치되었는지 확인하세요.
- 한국어 언어 팩이 설치되었는지 확인하세요.
pytesseract.pytesseract.tesseract_cmd경로가 올바른지 확인하세요 (Windows).
- 비디오 처리 실패: 비디오 파일 형식이 지원되는지 확인하세요.
- PDF 텍스트 추출 실패: 스캔된 PDF의 이미지 품질이 낮거나 너무 복잡한 경우 OCR 결과가 부정확할 수 있습니다.
로그 확인
문제가 발생하면 터미널 출력을 확인하여 오류 메시지를 찾을 수 있습니다. 각 처리 단계별로 발생한 오류가 출력됩니다.