2022 캡스톤 디자인 경진대회 (2022년 1학기 1차 예선)
-
작두
- 팀장
- 유호성 (소프트웨어학부 | 3)
- 팀원
- 노제원 (소프트웨어학부 | 3)
- 허보성 (소프트웨어학부 | 3)
작품영상
-
개발 동기
일반적으로 도서 판매 단위는 ‘권' 입니다. 하지만 한 권 전체를 사야만 하는 현 상황으로 부터 도출 될 수 있는 여러 문제점에 주목해보았습니다.
첫째, 구매자는 당장 도서 1권이 모두 필요하지 않을 수 있습니다. 예로, 대학 강의에서 1권 전체의 내용을 모두 다루지 않는 경우가 있습니다. (합리적 소비 불가)
둘째, 전공책의 경우 책이 매우 두껍고 무거운 경우가 많아 불법 분철 및 복제가 매우 빈번합니다. (불법 복제 원인)
우리 팀은 위와 같은 문제점들을 해결하기 위한 새로운 아이디어와 결합한 플랫폼을 고안했습니다.
e-book 도서 분할 판매 플랫폼, 작두입니다.
구매자는 작두를 이용하여 등록된 책을 자신의 필요에 맞게 분할 구매할 수 있으며 여러번의 걸쳐 같은 책을 부분 구매하더라도 이질감 없이 가볍게 전자 도서를 읽을 수 있습니다.
하지만 플랫폼의 활성화를 위해서는 판매자에 의한 도서 공급이 매우 중요합니다.
작두는 판매자를 유입하기 위한 대책을 다음과 같이 제시합니다.첫째, 분할 판매 플랫폼을 이용하는 부담을 줄이고자 목차 분석 기술 기반 자동 목차 기능을 개발하여 쉽고 빠른 도서 등록 절차를 제공하고
둘째, 판매자의 지적재산권을 보호하고자 판매 단위 별 암복호화 기술을 개발하여 안전한 판매 환경을 제공합니다.
우리 서비스는 도서 분할 판매라는 새로운 아이디어를 반영하여 플랫폼을 개발하였습니다.
이를 통해 구매자는 합리적 소비가 가능하고, 판매자는 새로운 수익 구조 창출 기회 제공받을 수 있으며, 나아가 사회적 문제인 불법 도서 복제 문제를 해결하는 데 기여할 것으로 예상합니다.
우리 플랫폼을 이용하는 모두에게 선한 영향을 미칠 것을 기대합니다.
-
이론적 배경
(1) TABLE OF CONTENTS RECOGNITION AND EXTRACTION FOR HETEROGENEOUS BOOK DOCUMENTS(ZHAOHUI WU, PRASENJIT MITRA, C. LEE GILES, 2013)
(2) AUTOMATED DETECTION AND SEGMENTATION OF TABLE OF CONTENTS PAGE FROM DOCUMENT IMAGES(S. MANDAL, S. P. CHOWDHURY, A. K. DAS)
위 두 연구를 통해 목차의 구성 타입을 크게 Flat, Ordered, Divided 3가지로 구분할 수 있음을 참고할 수 있었습니다. “목차”, “차례” 등의 단어가 목차 페이지에 속한 경우가 다양하며 목차 섹션 내용의 맨 오른쪽에 페이지 번호가 있는 경우가 대부분이라는 사실을 알 수 있었습니다. 선행 연구를 통해 목차 분석을 위해 어떤 특징을 사용해야 하는지에 대해 쉽게 발견할 수 있었습니다.
다만, 적용된 책의 종류가 전공 도서에 한정된다는 것이 큰 한계점이었으며, 구체적인 기술 구현에 대한 내용을 찾아볼 수 없었습니다. 이론적인 내용 우리 프로젝트의 기술 구현에 도움을 받은 부분이 있는 것은 사실이나, 보다 넓은 책 종류를 다루는 우리 서비스에 적용하기 위해서는 활용할 수 있는 정보들을 좀 더 추려내어 자체적인 기술 구현을 해야 했습니다.
목차분석 기술
1) 텍스트 추출
목차가 존재하는 페이지에 접근하여, 해당 페이지 속에 모든 텍스트를 추출하여 객체화 합니다. 이 과정에서 텍스트의 순서와 위치를 보장하면서 객체로 저장되지 않기 때문에 아래의 과정을 통해서 목차를 재배열 해야 합니다.
2) 재배열
텍스트 각각은 모두 고유의 x,y 좌표를 가지고 있습니다. y좌표를 기준으로 텍스트를 정렬하고, 정렬된 묶음을 다시 x좌표를 이용하여 텍스트를 정렬하는 것이 재배열의 전부가 아닙니다. 책 별로 목차의 형태는 다양합니다. 1열, 2열, 그리고 3열의 목차형태가 존재하기 때문에 각각의 열 형태에 따라 개별화하여 재배열을 실시합니다.
3 ) 접두어 분석
목차를 보시면 “1.”이나 “첫째”, 또는 “I”와 같이 다양한 형태의 접두어가 나타나는 것을 확인하실수 있으실 겁니다. 저희는 목차에서 나타날 수 있는 모든 형태의 접두어에 대해 정규식을 이용하여 필터링한 후 각각의 객체별로 접두어 타입을 저장합니다.
4) 2줄로 이루어진 목차를 하나의 객체로 재구성
왼쪽 그림의 첫번째 목차인 “유형 15 로그함수의 최대,최소 - 상술평균과 기하평균의 관계” 부분을 보시면 한 줄이 아닌, 두 줄로 목차가 나타나 있는 것을 확인할 수 있습니다. 그렇기 때문에 첫 번째 재배열 알고리즘에서는 1차적으로 두줄의 서로 다른 객체로 파악하여 저장하게 됩니다. 그래서 저희는 해당 객체에 대해 앞의 과정에서 구한 접두어 정보에 더해 해당 접두어에 객체가 페이지를 가지고 있는지 여부를 탐색합니다. 책의 페이지는 목차의 가장 마지막에 나타나 있기 때문입니다. 정렬된 목차를 하나씩 확인하면서 해당 접두어 타입에 페이지 번호가 있어야 하지만, 없는 경우 해당 객체를 이전에 탐색한 객체와 연결하여 재구성합니다.
5) 목차의 계층 파악
목차의 계층파악을 위한 알고리즘은 아래와 같습니다.
자체 분석 과정에서 pdf 텍스트의 폰트 크기, 좌표, 접두어 정보 등 여러 요소를 고려하여 구현합니다. 하지만 목차의 계층 구조 파악 시, 동일 계층임에도 폰트 크기 등의 정보가 다른 경우가 있어 다른 계층으로 분류되는 오류가 발생할 수 있었습니다. 따라서 이러한 오류를 조금이나마 보정하고자 알고리즘을 개선하였습니다.
- 암호화/ 복호화
1. PDF 암호화
페이지별 암호화를 위해 각 페이지별로 PDF파일을 분할하는 것이 아닌(분할된 파일을 별개의 파일로 다운로드 하는 사용자 경험 측면이 좋지 않을 것이라고 생각), 한 파일 내에서 각 페이지에 해당하는 부분을 서로다른 key로 암호화하는 것이 목적이었습니다. 이를 위해 먼저, 암호화의 대상을 구체화 하였습니다. PDF 파일의 구조를 조사한 결과 PDF의 텍스트, 이미지 같은 컨텐츠로 표현되며 이를 통해 PDF파일의 각 페이지의 ContentStream을 추출하여 암호화 한다면 하나의 파일을 통한 페이지별 부분 암호화를 구현할 수 있다고 생각하였습니다.
[PDF 한 페이지 원본]
[추출한 ContentStream]
위의 두 자료는 위쪽과 같이 보이는 PDF 페이지의 ContentStream을 추출한 결과입니다. 추출한 ContentStream을 AES256 알고리즘으로 암호화 합니다.
[암호화된 ContentStream]
ContentStream은 위의 자료와 같이 암호화 됩니다. 이 부분은 PDF의 Viewer에서 읽을 수 없습니다. 해당 콘텐츠가 있던 페이지는 존재하지만 페이지의 콘텐츠들이 암호화되어 보여줄 컨텐츠들을 읽어오지 못하기 때문에 아래 자료와 같이 빈 페이지로 보입니다.
[3페이지 암호화 전(좌)과 후(우)비교]
2. PDF 복호화
복호화 기능은 클라이언트 사이드에서 필요하기 때문에 자바스크립트의 pdf-lib라이브러리를 활용하였습니다. 앞서 암호화한 PDF파일을 복호화 하기 위해서는 암호화와 마찬가지로 암호화된 각 페이지의 ContentStream을 추출해야 합니다. 추출된 암호화된 ContentStream을 CryptoJS 라이브러리를 통해 AES256 알고리즘을 활용하여 복호화 합니다. 그리고 복호화된 내용을 암호화 되었던 ContentStream과 치환하여 파일을 복호화합니다.
[암호화된 페이지의 ContentStream을 찾아 복호화]
3. EPUB 암호화
EPUB은 보편적으로 하나의 소목차에 해당하는 내용이 각 html파일로 구분되어 있습니다.
따라서 저희는 각각의 목차에 따른 html파일을 분할의 대상으로 정하였고 이 파일들을 암호화 하였습니다.
[epub 파일을 반디집으로 열기]
위 자료와 같이 epub파일은 확장자만 다른 zip파일의 형태로 압축되어 있습니다. 따라서 이 내부 파일들에 접근하기 위해 zip과 관련된 라이브러리들을 활용하였습니다. zip 내부로 접근하여 먼저 각 html파일의 내용을 추출합니다.
[추출된 HTML 코드]
이렇게 추출된 내용을 AES256 알고리즘을 통해 암호화 합니다. 그리고 암호화된 내용과 원본을 치환하고 저장하여 암호화된 파일을 생성합니다.
[암호화된 HTML 코드]
4. EPUB 복호화
암호화와 마찬가지로 zip파일 내부의 HTML파일을 찾아 해당 파일의 key로 복호화합니다.
[암호화된 HTML 내용 추출]
[HTML 내용 복호화]
복호화한 내용과 암호화된 내용을 치환하여 EPUB을 복호화합니다.
5. 암호화된 페이지 - 유저 식별 UI 적용
구매자가 해당 페이지가 구매하지 않은 페이지라는 것을 보다 쉽게 알 수 있도록 도서의 일부분이 암호화 되어 있는 경우 해당 UI를 통해 알려줄 수 있도록 하였습니다.
- 시스템 아키텍쳐
역할 분담 및 마일스톤
팀의 목표를 크게 네 파트(공통 작업, 목차 분석, 암호화, UI/UX)로 구성하여 역할 분담을 진행했고, 효율적이고 책임감 있는 분배로 프로젝트를 성공리에 마무리하였습니다.
-
도서 분할 판매 플랫폼, 작두는 크게 2가지 효과가 기대됩니다.
우선, 전체 불법복제시장 규모의 70%를 차지하는 대학생들의 불법복제시장의 규모가 줄어들 것입니다. 그 결과 불법복제시장의 크기는 매년 증가하였으며, 불법복제물 유통량에 불법복제물 유통가격을 적용하여 산출한 시작의 규모는 2018년 기준 1,410억원에 달합니다. 소비자들은 저작권의 존재를 인지함에도 불구하고, 지금까지 경제적, 그리고 편의적인 이유로 인해 많은 도서를 불법으로 복제하였습니다. 그러나, 저희 서비스에서는 원하는 부분만큼만 구매할 수 있으며, 휴대가 편리한 전자책을 제공하여 위의 원인에 대한 해결책을 제시합니다. 이러한 부분은 저작권법을 인지한 소비자들에게 새로운 기회가 되며, 정당한 수익권자인 저자는 불법적 경로에서 유통되던 돈이 자신에게 돌아오는 새로운 수익을 창출할 기회를 얻게 됩니다. 이러한 선순환을 통해 시장은 건강하게 성장할 것입니다.
두번째로, 도서 분할 판매 플랫폼 작두의 자동적인 목차분석을 위해 개발한 새로운 기술인, 목차분석 기술의 다양한 적용입니다. 작두의 목차분석 기술은 이를 필요로 하는 다양한 서비스에 확장될 수 있다고 생각합니다. 시중에는 다양한 도서 판매 플랫폼들이 존재합니다. 각각의 플랫폼들에서 책의 상세페이지를 보면 목차가 적혀있는 것을 확인할 수 있습니다. 해당 상세페이지를 입력하는데에 있어서 저희의 목차 분석 기술을 이용한다면, 책의 정보를 입력하는 시간이 현저히 줄어들 것이며, 이는 곧 생산속도의 향상으로 이어질 것입니다. 이러한 활용 뿐만 아니라 목차 분석이 필요한 여러 분야에 작두의 목차 분석 기술을 적용한다면 기존의 작업 시간을 줄일 수 있을 것입니다.
-