Play Android & Windows

텍스트 추출, 스크린샷, OCR | 직접 구매한 전자책, 활자 컨텐츠의 개인 보관을 위한 방법들

#RPIE 2025. 10. 10. 16:18

그런데 짜잔! 실제로 영구 소장 전자책이 사라졌었음

최근 YES24 해킹 및 접속 장애 사태 때에도 이 문제가 크게 이슈가 되었지만, 이미 KT의 ‘올레 이북’ 전자책 사업 철수 당시 ‘전자책에는 영구 소장이란 없다’는 사실이 증명된 바 있습니다. 당시 서비스를 인수한 업체는 전체 저작권의 약 10% 정도만 확보했기 때문에, 나머지 저작권을 확보하지 못한 책들은 열람이 불가능, 이후 그 업체마저 몇 년 뒤 전자책 사업을 종료하면서 이용자들이 구매했던 책들은 흐지부지 사라지고 말았었죠.

그래서 '직접 구매한 컨텐츠는 따로 개인 보관, 백업을 해야겠다' 싶어 나름의 자구책을 찾아봤습니다.


Universal Copy

1. 텍스트 추출 방법 : Universal Copy 外

안드로이드 텍스트 추출은 Universal Copy 등과 같은 안드로이드 접근성 서비스를 이용한 안드로이드의 화면에 있는 텍스트 추출 - 복사 앱을 이용하면 됩니다. 이외에도 비슷한 앱들이 몇가지 더 있긴 한데 위 앱이 대표적이고요.

텍스트 추출 방식에는 노멀모드와 스캔모드(OCR)가 있는데, 노멀모드 사용시 원본 텍스트 내용 그대로 추출이 가능합니다. 특히 화면을 스크롤하면서 추출 복사가 가능한게 장점. 그래서 연재 컨텐츠의 경우에 한 회차를 통째로 추출할 수 있습니다.

단점은 문장의 줄간 간격 구분을 인식하지 않습니다. 한 회차씩 추출한다면 매번 직접 검수를 간단히 하면 되지만, 분량이 많으면 사실상 하나씩 검수하고 있기에는 불가능하니 그냥 일괄적으로 문장과 문장 사이를 한 줄씩 추가하는 방법 정도로 타협합니다. (짧은 문장, 따옴표가 있는 대화문 등은 문장을 붙이는 등의 후처리 작업)

Tasker 와 같은 매크로 앱을 활용하여 플랫폼에 따라서 적절하게 매크로를 잘 짜는 것이 포인트. 회차별 텍스트 합치기, 필요 없는 내용 삭제 등 모든 후처리 작업은 파이썬 스크립트를 자작해서 사용하면 됩니다.

사용시 팁 : 그냥 한 화면에 많은 글자를 담으면 되니 뷰어에서 글자 크기는 가장 작게 세팅하고, 해상도가 높은 태블릿 기기, 낮은 DPI 세팅이 유리합니다. 윈도우 블루스택을 사용하는 경우에도 마찬가지.


블루스택

2-1. 스크린샷 보관 방법 : 컨텐츠를 스크린샷으로 보관하기

'스크린샷 방지' 기능이 탑재된 앱에서 스크린샷 찍는 방법은 '블루스택'과 윈도우의 스크린샷 앱인 '픽픽'을 이용하면 됩니다.

OCR 작업을 한다면 OCR 인식률을 높이기 위해 '명조체'보다는 '고딕체', 복잡한 한글 활자가 잘 구분이 되도록 현재 사용하는 모니터 해상도에 맞게 적당한 사이즈의 폰트로 설정합니다. 일단 폰트 크기를 바꿔가며 캡쳐를 한장씩 해보고 사용할 OCR 툴에서 OCR이 잘 되는지 미리 테스트를 해봅니다. 4K 모니터라면 스크린샷 한장에 글자를 많이 담을 수 있어서 더 좋습니다.

OCR 작업을 하지 않는다면 스크린샷을 찍을 때 모니터와 윈도우를 세로 모드로 전환해서 스크린샷을 찍고, 이렇게 찍은 이미지가 실제 컨텐츠를 확인할 기기인 스마트폰, 태블릿, 이북리더의 뷰어 설정과 비슷하게 보이도록 하는 것이 좋겠죠.

블루스택과 픽픽 : 블루스택 앱 설정에서 가로 세로 자유롭게 픽셀 단위로 해상도 설정이 가능하며, 윈도우 창 크기와 설정 해상도가 동일한 경우 폰트 테두리가 흐릿하지 않고 명료하게 나오니 해상도를 맞추는게 포인트. 픽픽에서는 '윈도우 컨트롤 캡쳐'로 캡쳐 영역 지정이 가능하며 '마지막 캡쳐 반복'을 단축키 세팅해서 매크로로 활용하면 됩니다.

설정이 끝났다면, 오토핫키 등의 간단한 매크로 앱을 이용해 페이지 넘김과 스크린샷 저장을 무한 반복 시작. 다만, 단행본이 아닌 연재 컨텐츠는 다음 회차가 로딩되는 시간을 기준으로 페이지 전환 간격을 정해야 하므로, 스크린샷을 찍는 데 예상보다 오랜 시간이 소요될 수 있습니다.


※ 스크린샷 보관시 이미지 용량 줄이는 방법 : ImageMagick, Pngoo, Pngquant 등의 앱을 이용하면 흰색 배경에 글자만 나오는 스크린샷 이미지인 경우에 PNG8 (옵션은 8 Color Grayscale 추천) 형식으로 변환하면 해상도는 유지한채 용량을 -75% 가량 줄일 수 있습니다. 단순히 webp 로만 변환해도 -30% 가량 용량을 줄일 수 있고요.

 

2-2. 스크린샷 보관 방법 : 회차별로 하나의 이미지로 합치기

스크린샷 개별 이미지를 하나씩 바로 OCR로 넘겨도 되겠지만, 유료 AI OCR 무료 횟수 제한이나 텍스트 취합 정리의 편의성을 고려하면 스크린샷 이미지를 적당한 크기로 세로로 미리 합치기를 해두는게 낫습니다.

이미지 합치기를 할때는 OCR의 처리 능력을 고려하여 단순하게 5개씩 합치기, 10개씩 합치기를 해도 되겠으나  반복되는 '이미지'를 판독하여 동일 회차 이미지를 합치는 방법도 가능합니다.

연재 컨텐츠라면 매번 반복되는 표지 이미지를 기준으로 삼을 수 있고, 단행본인 경우에는 표지 이미지가 매번 나오는게 아니니 회차별 제목에 반복되는 '제', '장', '화' 같은 Bold 처리된 폰트 글자를 기준으로 잡을 수 있겠고요.

Gemini, ChatGPT 같은 AI 서비스를 활용하여 파이썬 스크립트를 만들어서 스크린샷이 저장된 폴더 내의 모든 이미지의 표지 이미지를 비교 판독하고, 표지 이미지를 기준으로 동일 회차의 해당되는 스크린샷 이미지는 하나로 합칩니다. OCR 과정에서 표지 이미지는 필요가 없으니 합치기를 할때 표지 이미지는 제외합니다.


3-1. 스크린샷 → OCR : 스크린샷 이미지를 OCR 작업하기

유료 AI OCR : API를 사용하기 위한 결제 정보 등록이나 이런저런 준비 작업 등이 필요하고 세팅 과정이 번거롭지만 성능이 가장 좋습니다. 구글 클라우드 비전 AI 는 월 1000건, 마이크로소프트 AI 문서 인텔리전스는 월 500건까지는 무료 입니다. 문장의 컨텍스트를 파악하여 끊어진 문장을 복구해 주기도 하지만, 어차피 만능은 아니고 후처리 작업은 꼭 필요합니다.

구글 드라이브의 OCR

무료 OCR - 구글 드라이브 : 일반 윈도우 무료 앱들을 이것저것 테스트 해봤습니다. 더러는 말도 안되는 결과물을 보여주는 경우도 있었는데 게중에 '구글 드라이브'의 결과물이 꽤 쓸만했네요. 사용 방법은 구글 드라이브에 이미지를 전부 업로드해서 '파일 선택 → 키보드 메뉴키(=마우스 우클릭) → 연결 앱 → Google 문서' 클릭 순서를 자동화해서 OCR 돌린 Word 문서를 하나씩 만듭니다. 이후 Word 문서를 전부 다운로드 받아서 컨버터 앱이나 파이썬 스크립트를 활용하여 Word → TXT 텍스트 파일로 일괄 변환합니다.

3-2. 스크린샷 → OCR : 추출한 텍스트의 후처리 작업들

여기까지 진행했다면 각 회차별 텍스트 파일이 하나씩 만들어졌을테고, 이러한 회차별 텍스트 파일을 하나의 텍스트 파일로 합치기 위해서는 몇가지 필수 후처리 작업이 필요합니다.


첫째, 회차별 제목을 따로 구분하기 : 이 작업을 먼저 하는 이유는 '끊어진 문장 이어 붙이기' 작업을 할때 회차 제목 끝에 문장 기호가 없어서 '회차 제목'과 본문의 '첫번째 문장'이 이어지는 경우를 방지하기 위한 선처리 작업입니다. 제목 끝에 * 표시 또는 눈에 보이지 않지만 존재하는 빈 공백 문자 'ㅤ' 등을 추가합니다. 일반적으로 회차별 텍스트 파일의 첫 문장은 '회차 제목'이 나오니 모든 텍스트를 합치기 전에 실행하는게 파이썬 스크립트 짜기도 쉽고, 오류 발생의 가능성도 적습니다.

둘째, 모든 텍스트를 하나의 파일로 합치기 : 이쯤에서 모든 텍스트를 하나의 텍스트로 합치기를 합니다.

셋째, 스크린샷 찍는 과정과 OCR 과정에서 끊어진 문장을 이어 붙이기 : 온전한 문장이 스크린샷 찍는 과정이나 OCR 과정에서 문장이 엔터키 입력 처리되어 끊깁니다. 파이썬 스크립트로 엔터키 앞에 . ? ! ' " : ] 와 같은 문장 부호 및 빈 앞서 언급한 공백 문자 등의 유무로 판별하게 합니다. 만약 엔터키 앞에 일반적인 한글·한자·알파벳 등이 있으면 끊긴 문장이니 엔터키 입력을 없애서 문장을 이어 붙이고, 문장 부호가 있으면 그대로 놔두는 겁니다.

넷째, OCR 과정에서 사라진 문단과 문단 사이의 빈줄 넣기 : 여기까지 작업하면 원본 텍스트 형태와 거의 엇비슷하게 완성됩니다.

후처리 작업에 대한 설명이 다소 길었지만 각각 파이썬 스크립트로 만들어두고, 순서대로 한번에 처리하게끔 '딸깍화!'를 세팅해두면 됩니다.