이 변환기가 하는 일
PDF는 인쇄를 위해 만들어진 형식입니다. 각 텍스트 조각이 페이지의 어디에 어떤 글자 크기로 놓이는지는 기록하지만, 문단, 제목, 목록은 기록하지 않습니다. 그래서 PDF에서 텍스트를 복사하면 줄이 끊기고, 문장 중간에 페이지 번호가 끼고, 구조가 전혀 없는 경우가 많습니다.
이 PDF 마크다운 변환기는 PDF.js로 텍스트를 읽고 레이아웃에서 구조를 다시 만듭니다.
- 같은 줄에 있는 텍스트 조각은 하나로 잇고, 눈에 보이는 간격이 있는 곳에는 공백을 넣습니다.
- 가깝게 붙은 줄은 한 문단이 됩니다. 세로 간격이 더 크면 새 문단이 시작됩니다.
- 본문보다 확실히 큰 텍스트는 제목이 됩니다. 가장 큰 크기가
#, 그다음이##가 되는 식입니다. - 둥근 점 같은 글머리 문자로 시작하는 줄은 Markdown 목록 항목이 됩니다.
- 페이지 맨 위나 맨 아래에 페이지 번호만 있는 줄은 제거됩니다.
사용 방법
- PDF 선택을 누르거나
.pdf파일을 상자에 끌어다 놓습니다. - 페이지를 읽는 동안 기다립니다. 긴 파일은 상태 줄에 진행 상황이 나옵니다.
- 옵션을 조정합니다. 파일을 다시 읽지 않고 결과가 바로 바뀝니다.
- 제목 감지는 큰 텍스트를 Markdown 제목으로 바꿉니다.
- 페이지 번호 제거는 따로 떨어진 페이지 번호를 지웁니다.
- 페이지 구분 표시는 페이지 사이에
---구분선을 넣습니다. - 출력 형식에서 마크다운과 일반 텍스트 중 하나를 고릅니다.
- 결과를 확인합니다. 미리보기로 렌더링된 모습을 볼 수 있고, 입력란에서 Markdown을 직접 고칠 수도 있습니다.
- 복사나 다운로드를 누릅니다.
예시
두 페이지짜리 시험용 PDF를 만들었습니다. 첫 페이지에는 22포인트 제목, 15포인트 섹션 제목, 11포인트 문단 두 개, 글머리 기호 줄 두 개, 아래쪽 페이지 번호가 있습니다. 둘째 페이지에는 제목, 문장 하나, 페이지 번호가 있습니다. 변환기가 돌려준 결과입니다.
# Quarterly Report
## Overview
Revenue rose in all three regions this quarter. The largest gain came from online orders.
Costs stayed close to the plan.
## Next steps
- Hire two support staff
- Open the Leeds office
## Appendix
All figures are unaudited.
첫 문단은 PDF에서 두 줄이었지만, 줄 사이 간격이 일반 줄 간격이어서 하나로 합쳐졌습니다. “Costs stayed close to the plan.“은 위쪽 간격이 더 컸기 때문에 새 문단으로 시작합니다. 페이지 번호 두 개는 모두 제거되었습니다. 출력 형식을 일반 텍스트로 바꾸면 제목의 # 기호가 빠지고 글머리 기호는 원래의 점 문자를 유지합니다.
잘 되는 경우와 안 되는 경우
결과는 PDF가 어떻게 만들어졌는지에 따라 달라집니다.
잘 되는 경우: Word, Google 문서, LibreOffice, Pages, 웹 브라우저에서 내보낸 PDF입니다. 읽는 순서대로 실제 텍스트가 들어 있고, 제목의 글자 크기가 뚜렷하게 구분됩니다.
확인이 필요한 경우:
- 다단 레이아웃. 텍스트는 PDF가 그리는 순서대로 가져옵니다. 2단 문서 중에는 단별로 순서가 맞는 경우도 있지만, 양쪽 단의 줄이 섞이는 경우도 있습니다.
- 본문과 같은 크기의 제목. 크기는 같고 굵게만 한 제목은 감지되지 않습니다. PDF 텍스트 데이터에는 굵기가 확실하게 표시되지 않기 때문입니다.
- 표. 표의 텍스트는 줄이나 짧은 문단으로 나옵니다. 마크다운 표 만들기로 표를 다시 만드세요.
- 각주, 머리글, 바닥글. 반복되는 머리글은 페이지마다 나옵니다. 변환한 뒤 지우세요.
- 줄 끝 하이픈으로 나뉜 영어 단어는 공백 없이 이어집니다. 그래서 “well-” 다음에 “known”이 오면 “well-known”이 됩니다. 줄에 맞추려고 나눈 단어도 하이픈을 유지하므로 “infor-mation”처럼 남을 수 있으니 불필요한 하이픈을 찾아보세요.
- 한글 문단의 줄 이음. 한 문단의 줄은 항상 공백 하나로 이어 붙입니다. 한글 문서가 단어 중간에서 줄을 바꿨다면 그 자리에 공백이 생기므로, 예를 들어 ‘변환’이 ‘변 환’처럼 나뉘어 나올 수 있습니다.
- 페이지 번호 형식. 줄 전체가
3,3 / 10,3 of 10,Page 3같은 형식일 때만 페이지 번호로 보고 지웁니다. 국내 문서에 흔한- 3 -이나3쪽은 지워지지 않으니 변환 후 직접 정리하세요.
안 되는 경우:
- 스캔 PDF. 이미지이기 때문입니다. 텍스트가 거의 없으면 도구가 경고를 보여 줍니다. 먼저 OCR을 거쳐야 합니다.
- 이미지, 차트, 양식 필드. 건너뜁니다.
중국어, 일본어, 한국어 PDF의 텍스트도 지원합니다. 이런 PDF에 PDF.js가 필요로 하는 문자 맵(CMap)은 이 사이트에 함께 들어 있으며, 파일이 실제로 사용할 때만 불러옵니다.
팁
- 원본 문서가 아직 있다면 그것을 변환하세요. 워드 마크다운 변환기는 표, 링크, 정확한 제목 수준을 유지합니다. 한컴오피스 한글(HWP) 문서라면 한글에서 DOCX로 저장한 뒤 변환하는 편이 PDF보다 구조가 잘 남습니다.
- 결과를 마크다운 포매터에 넣으면 문단 줄바꿈을 한 가지 스타일로 맞출 수 있습니다.
- PDF로 저장한 웹 페이지라면 원래 HTML을 HTML 마크다운 변환기에 넣는 편이 더 깔끔한 경우가 많습니다.
PDF를 마크다운으로 바꾸는 다른 방법
- Poppler 도구 모음의 pdftotext는 명령줄에서 일반 텍스트를 추출합니다.
-layout옵션을 쓰면 공백으로 페이지 레이아웃을 유지합니다. - Python: pdfplumber, PyMuPDF 같은 라이브러리는 위치 정보가 붙은 텍스트를 주므로 제목과 표에 대한 규칙을 직접 짤 수 있습니다.
- Pandoc은 PDF 파일을 읽지 못하므로 이 변환을 직접 할 수 없습니다.
수백 페이지짜리 큰 PDF도 되지만, 모든 페이지를 기기에서 읽으므로 시간이 더 걸립니다. 브라우저가 멈추지 않도록 100MB가 넘는 파일은 받지 않습니다.