# 📄 01 — 시나리오 읽기

> **목표**: PDF 파일에 담긴 시나리오를 AI가 읽을 수 있는 **깨끗한 텍스트**로 만들고, **씬 단위**로 나눕니다.

---

## 왜 이 단계가 필요한가?

시나리오 PDF에는 글자 외에도 이런 것들이 섞여 있습니다:
- 페이지 번호 / 머리말·꼬리말
- 제작사 로고 / 워터마크
- 특수 기호 / 줄바꿈 / 탭 문자
- OCR 오류 (스캔 PDF의 경우)

이걸 그대로 AI에게 주면 "S1 옥탑 페이지3 방, 밤" 같이 **엉망으로 섞여** 나옵니다.

그래서 먼저 **텍스트 청소 작업**을 합니다.

---

## 이 단계의 세부 작업들

```mermaid
flowchart LR
    PDF[📄 원본 PDF<br/>18페이지] --> E[1. 텍스트 추출<br/>PyMuPDF]
    E --> C[2. 텍스트 정리<br/>Gemini AI]
    C --> S[3. 씬으로 나누기<br/>정규식 + Gemini]
    S --> Save[4. 씬별 저장]

    Save --> OUT[✓ 씬 30~70개<br/>각각 독립 텍스트]

    style PDF fill:#2a2d35,stroke:#6386FF,color:#fff
    style OUT fill:#2a2d35,stroke:#22c55e,color:#fff
```

---

## 단계 1: 텍스트 추출

**무엇을 하나요?**
PDF 파일에서 **글자만** 뽑아냅니다. 이미지나 도형은 무시.

**어떻게 하나요?**
Python 도구(PyMuPDF)가 각 페이지를 읽어 텍스트 조각을 꺼내줍니다.

**예시**:

원본 PDF:
```
       [로고 이미지]

    S1. 인천 변두리 옥탑방. 밤.

  수리영(38)이 낡은 TV 앞에 앉아 있다.
  TV 뉴스: "금월산 인근 해역에서..."

              - 1 -
```

추출 후:
```
S1. 인천 변두리 옥탑방. 밤.
수리영(38)이 낡은 TV 앞에 앉아 있다.
TV 뉴스: "금월산 인근 해역에서..."
- 1 -
```

**문제점**: 페이지 번호 "- 1 -"이 남고, 줄바꿈이 불규칙.

---

## 단계 2: 텍스트 정리

**무엇을 하나요?**
AI(Gemini)에게 **"청소 좀 해줘"** 라고 부탁합니다. AI가 자연스럽게 읽히도록 정리.

**제거되는 것들**:
- 페이지 번호 (- 1 -, Page 3)
- 머리말 / 꼬리말 (제작사명, 저자명)
- 불필요한 빈 줄
- 깨진 문자 (OCR 오류)

**보존되는 것들**:
- 씬 헤딩 (S1., S2., #1, INT. EXT. 등)
- 인물 대사
- 지문 (행동 설명)
- 작품 고유 묘사

**예시**:

청소 전:
```
S1. 인천 변두리 옥탑방. 밤.

수리영(38)이 낡은 TV 앞에 앉아 있다.

- 1 -
                    [제작사 로고]

TV 뉴스: "금월산 인근 해역에서..."
```

청소 후:
```
S1. 인천 변두리 옥탑방. 밤.

수리영(38)이 낡은 TV 앞에 앉아 있다.
TV 뉴스: "금월산 인근 해역에서..."
```

⚠️ **주의**: AI가 **작품 내용을 바꾸지 않아야** 합니다. 청소만 하고 원문 보존.

---

## 단계 3: 씬으로 나누기

**무엇을 하나요?**
긴 시나리오를 **씬 단위로 쪼갭니다**.

**어떻게 판별하나요?**
1. **정규식** (패턴 매칭)으로 씬 헤딩을 먼저 찾습니다:
   - `S1.`, `씬 1`, `#1`, `INT.`, `EXT.` 등
2. 긴 씬(600자 이상)은 AI가 **의미 기반으로 추가 분할**합니다:
   - "이 씬 안에서 장소가 바뀌나?"
   - "시간이 크게 점프하나?"

**예시**:

원본 (한 덩어리):
```
S1. 인천 변두리 옥탑방. 밤.
수리영이 TV를 본다.
...(많은 내용)...
수리영이 짐을 챙긴다.

S2. 인천 부둣가. 새벽.
배가 뱃고동을 울린다.
...
```

분할 후:
- **씬 1**: "S1. 인천 변두리 옥탑방. 밤." + 해당 내용만
- **씬 2**: "S2. 인천 부둣가. 새벽." + 해당 내용만
- (긴 씬이면) **씬 1-A**, **씬 1-B** 로 더 쪼개짐

---

## 단계 4: 에피소드 요약 & 세계관 규칙

씬을 다 나눈 뒤, AI가 **에피소드 전체를 요약**하고 **시각적 세계관 규칙**을 만듭니다.

### 에피소드 요약
시나리오 전체를 3~5문장으로 요약. 이후 단계에서 "이 작품이 뭔지" 맥락 파악용.

**예시** (금월도 1부):
> 인천 변두리 옥탑방에 사는 수리영은 TV에서 금월산·효장동 변사체 소식을 듣고, 엄마 민숙의 실종과 살해 환영을 겪는다. 그러나 경찰은 시신이 없다고 하고, 수리영은 CCTV와 위치추적으로 민숙의 마지막 좌표가 바다 쪽임을 확인한다. 민숙의 손목 표식과 붉은 원, 정체불명의 사진을 단서로 수리영은 금월도행 배를 타고, 인우의 강한 경고 속에 안개 낀 바다로 들어간다.

### 시각적 세계관 규칙

작품의 **물리·문화·판타지 법칙**을 정리. AI가 나중에 이미지 그릴 때 참고.

**예시**:
- **시대**: 현대 (2020년대)
- **지역**: 한국 인천, 바닷가 마을
- **분위기**: 미스터리, 어둡고 축축한 스릴러
- **판타지 요소**: 환영 / 빙의 (주인공이 겪는 환시)
- **주의 사항**: 어린이 주인공 없음, 잔혹 장면 포함 (환시 속 살해)

---

## 이 단계가 잘못되면?

🚫 **PDF 청소 실패**:
- 페이지 번호가 씬 텍스트에 섞임 → 이후 AI가 "수리영이 1번째로 TV를 봤다" 같이 오해.

🚫 **씬 분할 실패**:
- 씬 2와 씬 3이 한 덩어리로 묶임 → AI가 "어? 인물이 옥탑방에 있다가 갑자기 바닷가에 있다" 혼란.

🚫 **에피소드 요약이 틀림**:
- 주인공이 "민숙"이라고 잘못 요약되면, 이후 샷 설계에서 민숙 중심으로 그림을 그리게 됨.

### 해결 방법

**사람이 검수**하여 직접 수정 가능:
- 시나리오 원본 텍스트 확인
- 씬 분할 임계값(몇 자부터 추가 분할할지) 조정
- 에피소드 요약 편집

---

## 실제 예시: 금월도 1부

- **원본 PDF**: 18페이지
- **추출된 씬**: 약 37씬 (정규식) → 분할 후 55씬 (긴 씬 추가 분할)
- **에피소드 요약**: 206자 (위 예시 참조)

---

## 다음 단계

이제 시나리오가 **씬 단위 깨끗한 텍스트**가 되었습니다.
다음은 각 씬에서 **누가 나오고, 어디서 일어나고, 무슨 물건이 중요한지** 찾을 차례입니다.

→ [02-finding-characters.md](./02-finding-characters.md) — 등장 요소 발견
