뒤로
Peterslab
Peterslab ·

만화 압축 파일, 페이지 순서 맞추는 게 생각보다 까다로운 이유
만화 번역기에 CBZ, CBR, ZIP 업로드를 붙이면서 제일 먼저 부딪히는 문제는 번역이 아니라 "몇 쪽이 몇 번째냐"입니다. 메이커 분들 중에 파일 업로드 기능 만드시는 분이 많을 것 같아서, 만화 압축 파일에서 페이지 순서를 맞추려면 무엇을 처리해야 하는지 정리해 봤습니다. 제가 만들고 있는 건 AI Manga Translator라는 만화 번역 도구입니다.

  1. 압축 파일에는 "페이지 번호"가 없다

CBZ는 확장자만 바꾼 ZIP이고, CBR은 RAR입니다. 안에는 이미지 파일만 들어 있습니다. 순서 정보가 따로 없어서, 결국 파일 이름으로 순서를 정해야 합니다.

  1. 문자열 정렬을 쓰면 10쪽이 2쪽보다 먼저 온다

page1, page2, page10을 그냥 문자열로 정렬하면 page1, page10, page2 순서가 됩니다. 한 글자씩 비교하다가 “1"과 “2"를 만나는 순간 끝나기 때문입니다. 그래서 숫자 덩어리는 숫자로 비교하는 자연 정렬(natural sort)이 필요합니다.

  1. 자연 정렬만으로도 부족한 경우들

cover.jpg 같은 이름 붙은 파일: 숫자보다 뒤로 밀려서 표지가 마지막에 옵니다. 이름에 “cover”가 들어간 파일은 맨 앞으로 보내는 규칙이 따로 필요합니다.
_MACOSX 폴더, .DSStore, Thumbs.db: 맥이나 윈도우에서 압축하면 같이 들어가는 숨김 파일입니다. 이미지가 아니니 걸러야 하고, 안 거르면 빈 페이지가 생깁니다.
챕터별 하위 폴더: Chapter 1, Chapter 10, Chapter 2처럼 폴더 이름에도 똑같은 정렬 문제가 있습니다. 폴더 순서를 먼저 정하고, 폴더 안의 페이지 순서를 그다음에 정해야 합니다.
001.jpg와 1.jpg가 섞인 경우: 스캔한 사람이 중간에 이름 규칙을 바꾼 파일입니다. 자연 정렬로는 순서가 맞지만, 같은 숫자로 판정되는 파일이 두 개 생길 수 있어서 중복 처리를 따로 해야 합니다.

  1. 일본 만화는 오른쪽에서 왼쪽으로 읽는다

파일 순서 자체는 001, 002, 003 그대로지만, 두 쪽짜리 펼침면이 파일 두 개로 쪼개져 있으면 오른쪽 절반이 앞 번호여야 합니다. 이걸 거꾸로 붙이면 펼침면 그림이 반대로 이어집니다.

  1. 그래서 업로드 직후에 "미리보기"가 필요하다

어떤 규칙을 넣어도 원본 파일 이름이 엉망이면 기계가 정답을 알 방법이 없습니다. 그래서 압축 파일을 올리면 페이지 목록을 먼저 보여 주고, 사용자가 순서를 확인하고 필요한 페이지만 골라서 번역을 시작하게 만들었습니다. 번역에 들어간 뒤에 순서가 틀린 걸 발견하면 다시 돌려야 하니까요.

정리하면, 만화 압축 파일 처리는 대략 이 순서입니다.

이미지가 아닌 파일 거르기
폴더 순서 정하기 (자연 정렬)
폴더 안 페이지 순서 정하기 (자연 정렬 + 표지 규칙)
중복 번호 처리
사용자에게 미리보기로 확인받기

번역 엔진보다 훨씬 지루한 부분인데, 여기가 틀리면 번역이 아무리 좋아도 읽을 수가 없습니다. 압축 파일을 통째로 번역하는 방법은 한 챕터 통째로 번역하기에 사용자 입장에서 따로 정리해 두었습니다.

파일 업로드 기능 만드시는 분들께 조금이라도 도움이 되면 좋겠습니다. 다른 포맷에서 비슷한 문제 겪으신 분 있으면 댓글로 알려 주세요.

AI Manga Translator

웹 브라우저 및 크롬 확장 프로그램을 통해 원본 만화를 실시간으로 인식하여 완벽한 번역과 식자 디자인을 제공하는 AI 기반 번역 서비스입니다.

1

댓글

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.