생활코딩/AI를 이용한 코딩

[바이브코딩] PDF2html - 편집 스타일, 문단/줄 정

내.맘.대.로 2026. 3. 4. 10:14
300x250

http://jikji.duckdns.org:8085/cloud/pdf2html_demo.zip

 

전자책 제작자가 코딩만 하네요 ^^;

hello world 정도 만드는 수준의 코딩 실력으로 AI를 이용해 만든 앱입니다.

이 앱은 PDF를 EPUB으로 편집하기 위한 XHTML 파일로 변환합니다.

아직 만드는 중이라 PDF 10쪽만 변환하도록 기능을 제한했습니다.

 

인터넷 찾아 보면 PDF를 EPUB으로 변환해 주는 웹서비스나 앱도 많은데 왜 이런 앱이 필요해? 라고 하시는 분도 많을거예요.

네. 그런 앱이 좋다면 그 앱을 사용하시면 됩니다.

 

이 앱은 PDF를 EPUB으로 만들어 출간을해야 하는 출판계에 계신 분들을 위한 앱입니다.

뿐만 아니라 PDF 원고를 html로 저장 후 hwp로 불러와 편집을 할 수 있습니다.

원고 없이 PDF로 보관하고 있는데 개정판 등을 내기 위해 재편집을 해야 할 때 유용합니다.

 

너무나 당연한 얘기지만, 

이미지 PDF나 아웃라인 PDF는 사용 할 수 없습니다. 이런 PDF는 OCR을 이용하세요.

 

이 앱의 특징은, 

1. PDF의 글자 편집 스타일을 그대로 유지해 준다.

    - 글꼴, 글자크기, 색상, 첨자, 기울임, 진하게 등의 기본 스타일을 그대로 유지합니다.

    - 추출하고 싶은 스타일을 직접 지정 할 수 있습니다.

2. 문단/줄 정리

    - PDF에서 텍스트를 추출 할 때 가장 큰 문제가 문단이 잘리는 문제가 있습니다.

다 자란 새들이 둥지를 떠나듯 성장한 자녀는 부모를 떠난
다. 의심의 여지는 추호도 없는, 유구한 본능이며 당연한 사
실이다. 생애 이벤트(교육, 연애, 취업, 결혼, 출산 등)를 거치면
서 아이는 어른이, 자녀는 부모가 된다. 그런데 오늘날 이
현상은 사뭇 달라졌다. 아들딸이 집을 떠나지 않거나, 나갔
다가 되돌아온 경우가 급격히 늘어난 것이다.

 

이렇게 잘린 문단을 정리해야 하는데, 정리를 하면 이런 문제가 생기지요.

다 자란 새들이 둥지를 떠나듯 성장한 자녀는 부모를 떠난 다. 의심의 여지는 추호도 없는, 유구한 본능이며 당연한 사 실이다. 생애 이벤트(교육, 연애, 취업, 결혼, 출산 등)를 거치면 서 아이는 어른이, 자녀는 부모가 된다. 그런데 오늘날 이 현상은 사뭇 달라졌다. 아들딸이 집을 떠나지 않거나, 나갔 다가 되돌아온 경우가 급격히 늘어난 것이다.

 

이렇게 잘린 줄이 신국판 300쪽 기준으로 3000개 ~ 5000개 정도 나옵니다.

제가 표시를 해서 눈에 잘 보이지만, 저런 부분은 찾아 정리하려면 시간이 오래 걸려요.

이런 문단을 정리해 줍니다.

3. 일괄 처리

PDF 한두개라면, 시간 들여 하나씩 정리하면됩니다. 그런데 10개, 20개를 정리하려면 시간이 많이 걸리지요?

여러개의 PDF를 일괄로 처리하는 일괄 처리 기능을 추가했습니다.

일괄 처리는 PDF를 HTML로 추출, 문단 정리, LLM 정리를 알아서 진행합니다.

 

**사용 방법**

1. 앱을 실행하세요.

(윈도우에서 강제로 Xbox Game Bar(ms-gamingoverlay)를 띄우려고 시도하는데, 이걸 막는 방법을 찾지 못했어요. 이와 관련한 메시지가 뜨면, 무시하면 됩니다.)

 

2. PDF를 불러온 후 추출 옵션을 설정하세요.

추출 할 필요 없는 쪽번호나 머리글 영역이 있다면 추출 범위를 설정해 본문만 지정합니다.

추출 할 스타일을 선택 할 수 있습니다. 추출을 원하는 스타일을 선택하세요.

 

3. [XHTM 저장] 버튼을 눌러 XHTML 파일로 저장을 합니다.

저장을 하면 바로 xhtml 정리를 할 것인지 물어봅니다.

YES를 누르면 XHTML 정리로 넙어갑니다.

나중에 작업을 하려면 No를 누르세요. [xhtml 정리] 탭에서 저장한 파일을 불러 올 수 있습니다. 

 

4. xhtml 정리 - 1. 태그 정리.

PDF에서 저장한 xhtml 파일은 문단이 줄 단위로 나눠져 있습니다.

[태그 정리]는 줄 단위로 구분된 문단을 문단 단위로 연결해 주는 기능입니다.

[1. 태그 정리]를 선택한 후 [실행]을 누르세요.

그럼 [PDF 파일명_raw_merged.xhtml]라는 xhtml 파일이 만들어 지고, 아래처럼 before에 단어가 들어갑니다.

단어를 클릭하면 html 편집 창에 단어가 있는 위치로 이동을 해요.

단어를 보고 띄어쓰기 문제가 있는 항목을 수정 할수 있습니다.

하지만, 신국판 300쪽 책 한권에 3000~5000개 정도 있는 단어를 모두 확인하기 힘들지요?

 

5. xhtml 정리 - 2. LLM 정리

단어 띄어쓰기는 LLM을 이용해 정리 할 수 있습니다.

먼저 ollama를 설치하세요. $200 넘는 유료 AI 모델을 사용한다면, 유료 모델을 권해드려요.

https://ollama.com/

저처럼 $20짜리 기본 모델을 쓰거나 유료 모델을 쓰지 않는다면 ollama를 이용해 돈 들이지 않고 LLM을 사용 할 수 있습니다.

Ollama 사용법은 인테넷에 많이 있으니 여기서는 설명하지 않겠습니다.

모델을 다운로드 받아야 하는데 gpt-oss:120b-cloud를 설치하세요.

Ollama를 설치하고, 모델을 다운로드 받았다면 창을 닫으세요.

그리고 LLM 정리로 돌아와 오른쪽 위에 있는 [API/프롬프트 설정]을 누르세요.

모델 명 옆에 있는 [불러오기]를 누르면 gpt-oss:120b:cloud가 나올거예요.

제대로 설정되었는지 확인하고 싶다면 [API 연동 확인]을 눌러보세요. AI가 인사하면 성공입니다.

이제 설정 창을 닫습니다.

 

이제 2. xhtml 정리(LLM) [실행] 버튼을 누릅니다.

시간이 오래 걸릴 수 있어요. 기다리면 됩니다.

 

7. 결과 확인

작어이 끝나면 after에 작업 결과가 표시됩니다.

Before는 수정 전, After는 수정 후 결과입니다.

[sp]는 띄어쓰기(spaced)되어야 할 단어, [nsp]는 붙여야 하는(nospaced)단어, [amb]는  확인이 필요한(ambiguous) 단어를 의미합니다.

결과는 [PDF 파일명_raw_merged_llm_clean.xhtml]으로 자동 저장 됩니다.

만약 단어 정리가 제대로 되지 않는다면 프롬프트를 수정해 보세요. AI 모델에 따라 프롬프트가 결과에 영향을 크게 줍니다.

 

 

 

8. 일괄 처리

여러 개의 PDF를 처리해야 할 때 사용합니다.

PDF 파일을 추가하고, 출력 폴더를 지정 후, [실행]을 누릅니다.

이 때 주의해야 할 것은, PDF 파일 별로 추출 범위가 다를 수 있습니다. 그러니 같은 판형에 시리즈 도서 처럼 편집이 유사한 도서 위주로 작업을 하세요.

300x250