일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 서프샤크
- 오토핫키 하루에 한번만 실행
- Monsgeek M1W 내수판 매뉴얼
- 토탈런처
- Youtube Revanced Extended
- 탬퍼몽키 스크립트
- Redmi Note 12
- HyperSploit 언락
- 포크5
- 리밴스드 익스텐디드
- M3U8 동영상 다운로드
- Surfshark
- CrDroid 커롬
- Revanced Extended Youtube Music
- Monsgeek M1W
- Revanced
- Revanced Youtube Music
- 레트로파이
- Revanced Manager
- 포크6
- VPN
- 홍미노트12
- 유투브
- RVX Manager
- 웹사이트 자동 출석 체크
- 라즈비안
- 라즈베리파이
- 리밴스드
- Monsgeek M1W 드라이버 소프트웨어
- Rpi3B+
- Today
- Total
Raspberry Pi & Desktop
스크린샷 OCR | 직접 구매한 전자책, 활자 컨텐츠의 개인 보관을 위한 자구책 본문
최근 YES24 해킹 및 접속 장애 사태 때에도 이 문제가 크게 이슈가 되었지만, 사실 훨씬 이전에 KT의 ‘올레 이북’ 전자책 사업 철수 당시, ‘전자책에는 영구 소장이란 없다’는 사실이 이미 한 차례 증명된 바 있습니다. 당시 서비스를 인수한 업체는 전체 저작권의 약 10% 정도만 확보했기 때문에, 나머지 저작권을 확보하지 못한 책들은 열람이 불가능했습니다. 이후 그 업체마저 몇 년 뒤 전자책 사업을 종료하면서, 이용자들이 구매했던 책들은 흐지부지 사라지고 말았고요.
또한 장르 소설의 경우 대부분 ‘무료 회차’ 시스템을 운영하고 있습니다. 그런데 저작권자와 플랫폼 간의 계약이 종료되어 작품이 ‘판매 중지’로 내려가면, 이 ‘무료 회차’ 부분에서 문제가 발생합니다. 예를 들어, 특정 작품의 유료 회차를 모두 구매했더라도, 작품이 플랫폼에서 내려가면 초반 1~25회의 무료 회차는 열람할 수 없습니다. (무료 회차는 별도 구매가 불가능하며, 단행본 역시 1~2권 분량의 무료 제공분은 마찬가지일 것으로 보입니다.)
그래서 어디까지나 '직접 구매한 컨텐츠는 따로 개인 보관, 백업을 해야겠다' 싶어 나름의 자구책을 찾아봤습니다.
1. 컨텐츠를 스크린샷으로 보관하기
안드로이드 가상 머신인 '블루스택'과 윈도우의 스크린샷 앱인 '픽픽'을 이용하면 됩니다.
OCR 작업을 고려한다면 OCR 인식률을 높이기 위해 '명조체'보다는 '고딕체', 복잡한 한글 활자가 잘 구분이 되도록 현재 사용하는 모니터 해상도에 맞게 적당한 사이즈의 폰트로 설정합니다. 일단 폰트 크기를 바꿔가며 캡쳐를 한장씩 해보고 사용할 OCR 툴에서 OCR이 잘 되는지 미리 테스트를 해봅니다. 4K 모니터라면 스크린샷 한장에 글자를 많이 담을 수 있어서 더 좋습니다.
OCR 작업까지는 하지 않는다면 스크린샷을 찍을 때 모니터와 윈도우를 세로 모드로 전환해서 스크린샷을 찍고, 이렇게 찍은 이미지가 실제 컨텐츠를 확인할 기기인 스마트폰, 태블릿, 이북리더의 뷰어 설정과 비슷하게 보이도록 하는 것이 좋겠죠.
블루스택과 픽픽 : 블루스택 앱 설정에서 가로 세로 자유롭게 픽셀 단위로 해상도 설정이 가능하며, 윈도우 창 크기와 설정 해상도가 동일한 경우 폰트 테두리가 흐릿하지 않고 명료하게 나오니 해상도를 맞추는게 포인트. 픽픽에서는 '윈도우 컨트롤 캡쳐'로 캡쳐 영역 지정이 가능하며 '마지막 캡쳐 반복'을 단축키 세팅해서 매크로로 활용하면 됩니다.
설정이 끝났다면, 오토핫키 등의 간단한 매크로 앱을 이용해 페이지 넘김과 스크린샷 저장을 무한 반복 시작. 다만, 단행본이 아닌 연재 컨텐츠는 다음 회차가 로딩되는 시간을 기준으로 페이지 전환 간격을 정해야 하므로, 스크린샷을 찍는 데 예상보다 오랜 시간이 소요될 수 있습니다.
※ 스크린샷 보관시 이미지 용량 줄이는 방법 : ImageMagick, Pngoo, Pngquant 등의 앱을 이용하면 흰색 배경에 글자만 나오는 스크린샷 이미지인 경우에 PNG8 (옵션은 8 Color Grayscale 추천) 형식으로 변환하면 해상도는 유지한채 용량을 -75% 가량 줄일 수 있습니다.
2. 회차별로 하나의 이미지로 합치기
스크린샷 개별 이미지를 하나씩 바로 OCR로 넘겨도 되겠지만, 유료 AI OCR 무료 횟수 제한이나 텍스트 취합 정리의 편의성을 고려하면 스크린샷 이미지를 적당한 크기로 세로로 미리 합치기를 해두는게 낫습니다.
이미지 합치기를 할때는 OCR의 처리 능력을 고려하여 단순하게 5개씩 합치기, 10개씩 합치기를 해도 되겠으나 반복되는 '이미지'를 판독하여 동일 회차 이미지를 합치는 방법도 가능합니다.
연재 컨텐츠라면 매번 반복되는 표지 이미지를 기준으로 삼을 수 있고, 단행본인 경우에는 표지 이미지가 매번 나오는게 아니니 회차별 제목에 반복되는 '제', '장', '화' 같은 Bold 처리된 폰트 글자를 기준으로 잡을 수 있겠고요.
Gemini, ChatGPT 같은 AI 서비스를 활용하여 파이썬 스크립트를 만들어서 스크린샷이 저장된 폴더 내의 모든 이미지의 표지 이미지를 비교 판독하고, 표지 이미지를 기준으로 동일 회차의 해당되는 스크린샷 이미지는 하나로 합칩니다. OCR 과정에서 표지 이미지는 필요가 없으니 합치기를 할때 표지 이미지는 제외합니다.
3. 스크린샷 이미지를 OCR 작업하기
유료 AI OCR : API를 사용하기 위한 결제 정보 등록이나 이런저런 준비 작업 등이 필요하고 세팅 과정이 번거롭지만 성능이 가장 좋습니다. 구글 클라우드 비전 AI 는 월 1000건, 마이크로소프트 AI 문서 인텔리전스는 월 500건까지는 무료 입니다. 문장의 컨텍스트를 파악하여 끊어진 문장을 복구해 주기도 하지만, 어차피 만능은 아니고 후처리 작업은 꼭 필요합니다.
무료 OCR - 구글 드라이브 : 일반 윈도우 무료 앱들을 이것저것 테스트 해봤습니다. 더러는 말도 안되는 결과물을 보여주는 경우도 있었는데 게중에 '구글 드라이브'의 결과물이 꽤 쓸만했네요. 사용 방법은 구글 드라이브에 이미지를 전부 업로드해서 '파일 선택 → 키보드 메뉴키(=마우스 우클릭) → 연결 앱 → Google 문서' 클릭 순서를 자동화해서 OCR 돌린 Word 문서를 하나씩 만듭니다. 이후 Word 문서를 전부 다운로드 받아서 컨버터 앱이나 파이썬 스크립트를 활용하여 Word → TXT 텍스트 파일로 일괄 변환합니다.
4. OCR로 추출한 텍스트의 후처리 작업들
여기까지 진행했다면 각 회차별 텍스트 파일이 하나씩 만들어졌을테고, 이러한 회차별 텍스트 파일을 하나의 텍스트 파일로 합치기 위해서는 몇가지 필수 후처리 작업이 필요합니다.
첫째, 회차별 제목을 따로 구분하기 : 이 작업을 먼저 하는 이유는 '끊어진 문장 이어 붙이기' 작업을 할때 회차 제목 끝에 문장 기호가 없어서 '회차 제목'과 본문의 '첫번째 문장'이 이어지는 경우를 방지하기 위한 선처리 작업입니다. 제목 끝에 * 표시 또는 눈에 보이지 않지만 존재하는 빈 공백 문자 'ㅤ' 등을 추가합니다. 일반적으로 회차별 텍스트 파일의 첫 문장은 '회차 제목'이 나오니 모든 텍스트를 합치기 전에 실행하는게 파이썬 스크립트 짜기도 쉽고, 오류 발생의 가능성도 적습니다.
둘째, 모든 텍스트를 하나의 파일로 합치기 : 이쯤에서 모든 텍스트를 하나의 텍스트로 합치기를 합니다.
셋째, 스크린샷 찍는 과정과 OCR 과정에서 끊어진 문장을 이어 붙이기 : 온전한 문장이 스크린샷 찍는 과정이나 OCR 과정에서 문장이 엔터키 입력 처리되어 끊깁니다. 파이썬 스크립트로 엔터키 앞에 . ? ! ' " : ] 와 같은 문장 부호 및 빈 앞서 언급한 공백 문자 등의 유무로 판별하게 합니다. 만약 엔터키 앞에 일반적인 한글·한자·알파벳 등이 있으면 끊긴 문장이니 엔터키 입력을 없애서 문장을 이어 붙이고, 문장 부호가 있으면 그대로 놔두는 겁니다.
넷째, OCR 과정에서 사라진 문단과 문단 사이의 빈줄 넣기 : 여기까지 작업하면 원본 텍스트 형태와 거의 엇비슷하게 완성됩니다.
후처리 작업에 대한 설명이 다소 길었지만 각각 파이썬 스크립트로 만들어두고, 순서대로 한번에 처리하게끔 '딸깍화!'를 세팅해두면 됩니다.