피드로 돌아가기
Dev.toBackend
원문 읽기
ebooklib와 BeautifulSoup 기반 EPUB 구조 보존형 AI 번역 파이프라인 구축
Parsing and Rebuilding EPUB Files in Python: Lessons Learned
AI 요약
Context
표준을 준수하지 않는 파편화된 EPUB 파일 구조로 인한 파싱 불안정성 발생. 단순 텍스트 추출 시 목차(TOC) 및 내부 링크 파손과 메타데이터 손실이라는 기술적 제약 존재.
Technical Solution
- ebooklib의 Object-Oriented 모델을 채택하여 EPUB 구조 전체를 유지하며 콘텐츠만 수정하는 In-place Modification 전략 수립
- BeautifulSoup의 lxml 파서를 활용해 XHTML 내 태그 레퍼런스를 유지함으로써 번역 후 정확한 위치에 텍스트를 재삽입하는 구조 설계
- HTML Entity Escape/Unescape 프로세스를 LLM API 호출 전후에 배치하여 마크업 파손 방지 및 데이터 무결성 확보
- 내부 링크 및 앵커 유지를 위해 파일명 변경을 전면 금지하고 콘텐츠 내부 값만 교체하는 불변 식별자 유지 원칙 적용
- API 오버헤드 감소를 위해 5개 문단 단위의 Batch Processing을 도입하여 네트워크 지연 시간 최적화
Impact
- 500페이지 분량 소설 기준 전체 파이프라인 처리 시간 약 90초 달성
- 대용량 도서 처리 시 최대 300MB의 Memory Spike 발생 확인 및 단일 처리 큐 도입으로 안정성 확보
Key Takeaway
외부 표준 라이브러리(ebooklib)의 불완전성을 보완하기 위해 자체 검증 레이어(OPF 및 Spine 체크)를 추가하는 방어적 설계의 중요성 확인
실천 포인트
1. EPUB 처리 시 파일명/ID 변경을 피하고 In-place 수정을 통해 내부 링크 파손 방지
2. HTML 기반 문서 번역 시 LLM 전달 전 HTML Entity 처리 필수 적용
3. 외부 라이브러리 의존 시 메타데이터 유효성 검사 로직을 별도 레이어로 분리하여 구현
4. LLM API 비용 및 지연 시간 최적화를 위한 적정 단위의 Batch Size 산정