← ~/notes · 4 min read

Claude로 영문 규제 11개를 전공 단어 살려 번역하기 — 옵션과 함정

원자력 사이버보안 미국·영국 규제 11개 문서를 한국어로 옮겼다. 번역기 톤이 아닌 전공 자연스러움이 목표였다.

목차
  1. 대상 문서
  2. 첫 시도 — Google 번역
  3. Claude 번역 — 프롬프트
  4. 결과 비교
  5. Opus vs Sonnet 선택 갈등
  6. 함정 — 사진/그림이 있는 페이지
  7. 함정 — 약어 무한 반복
  8. 함정 — 표 구조
  9. 함정 — 600초 stall
  10. 자동화 — 병렬 처리
  11. 결과 검증
  12. 만들면서 알게 된 것들
  13. 한 줄 결론

연구 1차년도 작업으로 미국 NRC와 영국 ONR의 원자력 사이버보안 규제 11개 문서를 분석해야 했다. 대부분 PDF 30~80페이지짜리.

직접 다 읽으면 한 달. 번역기로 돌리면 5분이지만 톤이 안 맞는다. Google 번역 결과를 발표 슬라이드에 그대로 넣으면 어색하고 부자연스러움이 그대로 들킴.

Claude로 11개를 다 번역. 시행착오 정리.


대상 문서

출처문서
미국 NRC10 CFR 73.110, RG 5.71, RG 5.96, RG 1.168, NEI 08-09, NEI 13-10
영국 ONRSyAPs, NS-TAST-GD-046, CNS-INSP-GD-001, CNS-TAST-GD-2.1, CNS-TAST-GD-10.2

총 11개, 2,300페이지가량. 한국어 번역본 없음.

KINAC RS-015, RS-019는 비공개라 제외.


첫 시도 — Google 번역

원문:
"Licensees shall maintain the cybersecurity program in a manner that
ensures the protection of digital computer and communication systems
and networks associated with the following functions..."

Google 번역:
"라이센시는 다음 기능과 관련된 디지털 컴퓨터 및 통신 시스템 및
네트워크의 보호를 보장하는 방식으로 사이버 보안 프로그램을
유지해야 합니다..."

문법은 맞지만 번역기 냄새가 나는 부자연스러움. “라이센시”가 직역인데 한국 원자력 분야에선 “운영자” 또는 “사업자”로 번역.


Claude 번역 — 프롬프트

다음 영문을 한국어로 번역하세요.

조건:
- 전공: 원자력 사이버보안 / 정보보안
- 톤: 한국 KINAC 또는 KISA 자료 톤 (전문적이고 자연스러운)
- 영어 단어 그대로 두면 안 되는 것: licensee → 사업자, regulator → 규제기관,
  digital asset → 디지털 자산, etc.
- 영어 단어 그대로 두는 게 자연스러운 것: Cyber Security, IDS, ICS, SCADA
- 약어 등장 시 풀어서 한 번 (예: "Critical Digital Asset(CDA)") 후 이후엔 약어
- 표/리스트는 구조 유지
- 페이지 번호, 문단 번호는 제거 (재구성)

원문:
<여기에 PDF 한 섹션 붙여넣기>

이렇게 한 번에 한 섹션(약 1,500단어)씩 처리.


결과 비교

Google:
"라이센시는 다음 기능과 관련된 디지털 컴퓨터 및 통신 시스템 및
네트워크의 보호를 보장하는 방식으로 사이버 보안 프로그램을 유지해야 합니다..."

Claude:
"사업자는 사이버보안 프로그램을 유지하여, 다음 기능에 사용되는 디지털
컴퓨터 시스템·통신 시스템 및 관련 네트워크의 보호를 보장해야 한다."

차이:

  • “라이센시” → “사업자” (실제 사용 용어)
  • “및 … 및” 연속 → ”·” 활용
  • “~합니다” → “~한다” (규정 톤)
  • “유지하여” 분사로 자연스러운 연결

Opus vs Sonnet 선택 갈등

번역 시작할 때 Opus(비싼 모델) vs Sonnet 선택. Claude API 비용:

모델입력 토큰당출력 토큰당
Opus 4$15 / 1M$75 / 1M
Sonnet 4$3 / 1M$15 / 1M

페이지 1쪽 ≈ 500 단어 ≈ 1,500 토큰. 11개 문서 × 평균 50쪽 = 550쪽 = 825,000 토큰 입력.

  • Opus: $12.4 입력 + $20 출력 ≈ $33
  • Sonnet: $2.5 입력 + $4 출력 ≈ $6.5

품질 비교 — 핵심 섹션 5개를 둘 다로 번역해서 수동 비교. Sonnet이 90% 충분. Opus가 미묘하게 자연스럽지만 5배 비용 차이만큼 가치 있나? 아니. Sonnet 선택.


함정 — 사진/그림이 있는 페이지

PDF에서 텍스트만 뽑으면 그림 없이 캡션만 들어와서 의미 잃음.

원문 페이지 14:
[그림 3-1: 사이버보안 통제 영역의 5개 카테고리]
다음과 같이 분류된다:
1. ...

Claude한테 그림 안 보여주면 “다음과 같이 분류된다”의 “다음”이 비어 있음. PDF에서 그림을 따로 추출해서 함께 첨부해야 자연스러운 번역.

# 그림 추출
pdftoppm -png input.pdf page -f 14 -l 14

그림이 들어간 페이지는 사진과 함께 보내고, “이 그림은 어떤 도식이며 캡션은 …” 같이 메타정보도 추가해서 보냄.


함정 — 약어 무한 반복

긴 문서에 같은 약어가 50번 나오면 매번 풀어 쓰는 건 번거롭다. 첫 등장만 풀어서, 이후엔 약어가 표준.

처음에 프롬프트에 안 박았더니 매번 풀어 써서 어색했음. 명시 후 해결.


함정 — 표 구조

원문:

| Function | Description | Reference |
|---|---|---|
| Reactor Protection | ... | 10 CFR 50.55a |

Claude는 마크다운 표를 잘 보존하지만 셀이 매우 길면 줄바꿈을 자체적으로 추가해서 표 깨짐. 셀 길이 100자 이상이면 미리 끊거나, “표는 원문 형태 유지” 명시.


함정 — 600초 stall

긴 문서를 한 번에 보내면 응답 생성 도중 watchdog이 끊는 경우. Claude API의 기본 timeout보다 긴 응답이 필요할 때 발생.

해결:

  • 한 번에 1,500 단어 이하로 분할
  • streaming API 사용 (각 토큰 즉시 반환, watchdog 갱신)
  • 너무 큰 청크는 미리 둘로 쪼개기

NS-TAST-GD-046은 80페이지라 한 번에 못 함. 본문 / Appendix 1 / Appendix 2 / Appendix 3 / refs로 5개 청크 분할.


자동화 — 병렬 처리

11개 문서를 한 번에 번역시키려고 Claude Agent를 11개 띄움. background 모드로:

import anthropic

async def translate_doc(doc_path):
    chunks = split_pdf_into_chunks(doc_path, max_words=1500)
    translated = []
    for chunk in chunks:
        resp = await client.messages.create(
            model='claude-sonnet-4',
            max_tokens=4000,
            messages=[{'role':'user', 'content': PROMPT.format(text=chunk)}]
        )
        translated.append(resp.content[0].text)
    return '\n\n'.join(translated)

# 11개 동시 실행
tasks = [translate_doc(d) for d in docs]
results = await asyncio.gather(*tasks)

11개 동시는 rate limit에 걸릴 수 있어 3~5개씩 묶어서 처리. 전체 약 40분.


결과 검증

번역된 한국어를 그대로 쓰는 게 아니라 한 번 더 검수 필수.

체크 포인트:

  • 핵심 용어 일관성 (같은 영어 단어가 매번 같은 한글로?)
  • 숫자/조항 번호 변경 없음
  • 표/리스트 누락 없음
  • 부정문/조건문 의미 뒤집힘 없음 (이게 자주 발생)

11개 문서 검수에 약 1주일. 자동 번역 자체는 1일. 검수가 진짜 작업.


만들면서 알게 된 것들

LLM 번역은 톤 매칭이 핵심이다. Google 번역 vs Claude 차이는 정확도가 아니라 자연스러움. 한국 전공 자료 톤을 명시한 프롬프트가 결정적.

비싼 모델이 항상 답은 아니다. Opus vs Sonnet 5배 차이지만 번역 품질은 90% 동일. 비용/품질 트레이드오프는 일이 시작된 후 빨리 결정.

검수가 진짜 일이다. 자동 번역으로 시간을 80% 줄여도 검수 시간이 그대로. “번역기 냄새 나는 부분” 잡아내기는 아직 사람이 빠름.

Claude API 워치독은 항상 의식. 큰 작업은 청크로. streaming 쓰면 안전. 11개 PDF를 600초 timeout 없이 처리하려면 모든 청크가 작아야 함.


한 줄 결론

LLM 번역은 Google 번역의 5배 자연스러움 + 검수 시간은 그대로다. 일을 끝내는 데 더 빠르진 않을 수 있지만, 결과물 품질은 분명히 올라간다.

같은 패턴으로 다른 언어 페이퍼나 매뉴얼 번역 가능. 한 번 잘 만든 프롬프트는 평생 쓴다.