만화 압축 파일, 페이지 순서 맞추는 게 생각보다 까다로운 이유
만화 번역기에 CBZ, CBR, ZIP 업로드를 붙이면서 제일 먼저 부딪히는 문제는 번역이 아니라 "몇 쪽이 몇 번째냐"입니다. 메이커 분들 중에 파일 업로드 기능 만드시는 분이 많을 것 같아서, 만화 압축 파일에서 페이지 순서를 맞추려면 무엇을 처리해야 하는지 정리해 봤습니다. 제가 만들고 있는 건 AI Manga Translator라는 만화 번역 도구입니다.
- 압축 파일에는 "페이지 번호"가 없다
CBZ는 확장자만 바꾼 ZIP이고, CBR은 RAR입니다. 안에는 이미지 파일만 들어 있습니다. 순서 정보가 따로 없어서, 결국 파일 이름으로 순서를 정해야 합니다.
- 문자열 정렬을 쓰면 10쪽이 2쪽보다 먼저 온다
page1, page2, page10을 그냥 문자열로 정렬하면 page1, page10, page2 순서가 됩니다. 한 글자씩 비교하다가 “1"과 “2"를 만나는 순간 끝나기 때문입니다. 그래서 숫자 덩어리는 숫자로 비교하는 자연 정렬(natural sort)이 필요합니다.
- 자연 정렬만으로도 부족한 경우들
cover.jpg 같은 이름 붙은 파일: 숫자보다 뒤로 밀려서 표지가 마지막에 옵니다. 이름에 “cover”가 들어간 파일은 맨 앞으로 보내는 규칙이 따로 필요합니다.
_MACOSX 폴더, .DSStore, Thumbs.db: 맥이나 윈도우에서 압축하면 같이 들어가는 숨김 파일입니다. 이미지가 아니니 걸러야 하고, 안 거르면 빈 페이지가 생깁니다.
챕터별 하위 폴더: Chapter 1, Chapter 10, Chapter 2처럼 폴더 이름에도 똑같은 정렬 문제가 있습니다. 폴더 순서를 먼저 정하고, 폴더 안의 페이지 순서를 그다음에 정해야 합니다.
001.jpg와 1.jpg가 섞인 경우: 스캔한 사람이 중간에 이름 규칙을 바꾼 파일입니다. 자연 정렬로는 순서가 맞지만, 같은 숫자로 판정되는 파일이 두 개 생길 수 있어서 중복 처리를 따로 해야 합니다.
- 일본 만화는 오른쪽에서 왼쪽으로 읽는다
파일 순서 자체는 001, 002, 003 그대로지만, 두 쪽짜리 펼침면이 파일 두 개로 쪼개져 있으면 오른쪽 절반이 앞 번호여야 합니다. 이걸 거꾸로 붙이면 펼침면 그림이 반대로 이어집니다.
- 그래서 업로드 직후에 "미리보기"가 필요하다
어떤 규칙을 넣어도 원본 파일 이름이 엉망이면 기계가 정답을 알 방법이 없습니다. 그래서 압축 파일을 올리면 페이지 목록을 먼저 보여 주고, 사용자가 순서를 확인하고 필요한 페이지만 골라서 번역을 시작하게 만들었습니다. 번역에 들어간 뒤에 순서가 틀린 걸 발견하면 다시 돌려야 하니까요.
정리하면, 만화 압축 파일 처리는 대략 이 순서입니다.
이미지가 아닌 파일 거르기
폴더 순서 정하기 (자연 정렬)
폴더 안 페이지 순서 정하기 (자연 정렬 + 표지 규칙)
중복 번호 처리
사용자에게 미리보기로 확인받기
번역 엔진보다 훨씬 지루한 부분인데, 여기가 틀리면 번역이 아무리 좋아도 읽을 수가 없습니다. 압축 파일을 통째로 번역하는 방법은 한 챕터 통째로 번역하기에 사용자 입장에서 따로 정리해 두었습니다.
파일 업로드 기능 만드시는 분들께 조금이라도 도움이 되면 좋겠습니다. 다른 포맷에서 비슷한 문제 겪으신 분 있으면 댓글로 알려 주세요.
웹 브라우저 및 크롬 확장 프로그램을 통해 원본 만화를 실시간으로 인식하여 완벽한 번역과 식자 디자인을 제공하는 AI 기반 번역 서비스입니다.
댓글
로그인 후 댓글을 남길 수 있습니다.
아직 댓글이 없습니다.