PDF를 로컬에서 마크다운으로 변환하기, 업로드 없이
작성 pdftomd.tools 팀 · 업데이트 · 5분 분량
PDF를 로컬에서 마크다운으로 변환하려면 PDF를 MD로 변환하는 저희 도구처럼 브라우저 안에서 돌아가는 변환기를 연 다음, 네트워크를 끊고 변환해 보세요. 그래도 된다면 아무것도 기기 밖으로 나가지 않은 겁니다. 스크립트나 대량 작업이라면 파이썬 라이브러리나 명령줄 도구가 내 컴퓨터에서 같은 일을 합니다.

'로컬'의 뜻과 확인하는 방법
로컬 변환이란 내 기기의 소프트웨어가 파일을 읽어 Markdown으로 바꾸고, 파일 사본이 어떤 서버로도 가지 않는 것을 말합니다. 그러니 PDF를 업로드해 원격에서 처리하고 결과를 돌려보내는 '무료 온라인 변환기' 대부분은 해당하지 않습니다. 노트북에서 돌아가긴 하지만 어려운 부분은 몰래 클라우드 서비스를 부르는 도구도 마찬가지입니다.
누구의 말도, 저희 말도 그냥 믿을 필요는 없습니다. 어떤 방법으로 PDF를 로컬에서 마크다운으로 변환하든, 어느 도구에나 통하는 확인 방법이 두 가지 있습니다.
- 네트워크 끊기. 도구를 불러온 뒤 와이파이를 끄고(또는 브라우저 개발자 도구를 오프라인으로 설정하고) 변환하세요. 서버가 필요한 도구라면 실패합니다.
- 트래픽 지켜보기. 브라우저에서 파일을 놓기 전에 네트워크 탭을 열고, 변환하는 동안 POST 요청이나 데이터를 실은 요청이 있는지 보세요. 데스크톱 프로그램이라면 방화벽 알림이나 네트워크 모니터가 같은 걸 알려 줍니다.

방법 1: 브라우저에서 PDF를 로컬로 마크다운 변환
파일은 하나인데 파이썬 환경이 없다면 브라우저 도구가 가장 빠릅니다. 저희 변환기는 오픈 소스 엔진 PDF.js로 탭 안에서 PDF를 읽습니다. 글꼴 크기로 제목을 찾고, 목록과 세로선 표를 다시 만들고, 반복 머리글과 쪽 번호를 지울 수 있습니다. 업로드 단계가 아예 없으니 계약서든 레시피든 똑같이 비공개로 변환됩니다.
2026년 10월 19일에 스크립트로 네트워크 끊기 테스트를 했습니다. Chrome 155.0.8059.84에서 페이지를 열고 브라우저를 오프라인으로 바꾼 다음, 반복 머리글과 쪽 번호, 표 하나가 있는 4쪽 보고서를 변환했습니다. 오프라인 변환은 87ms 만에 끝났고 Markdown 546자가 나왔습니다. 오프라인 상태에서 페이지가 보낸 요청은 1건으로, 페이지 아래쪽 장식 이미지를 불러오는 GET이었고, 데이터를 담은 요청은 하나도 없었습니다. 페이지를 불러올 때도 POST 요청은 없었습니다.

한계는 텍스트 레이어를 읽는 모든 변환기와 같습니다. 스캔한 페이지에는 읽을 텍스트가 없고 저희 도구는 OCR을 하지 않으니, 추측하는 대신 스캔본으로 보인다고 알려 줍니다. 여러 단 레이아웃과 복잡한 표는 변환 후에 확인이 필요합니다. 무엇을 볼지는 서식 유지 가이드에 정리해 두었습니다.
방법 2: 내 컴퓨터의 파이썬 라이브러리
반복 작업에는 파이썬 라이브러리가 더 잘 맞습니다. 폴더를 돌고, 코드를 버전 관리하고, 내가 관리하는 서버에서 돌릴 수 있습니다. 코드는 파이썬 가이드에서 자세히 다루고, 여기서는 자주 쓰는 패키지 네 개를 '로컬'이라는 기준으로만 봅니다.
- PyMuPDF4LLM은
pymupdf4llm.to_markdown("report.pdf")한 줄로 PDF를 Markdown으로 바꿉니다. 완전히 오프라인으로 돌아갑니다. 라이선스는 먼저 확인하세요. 이 패키지와 PyMuPDF는 AGPL-3.0이고, 상용 라이선스는 따로 판매합니다. - MarkItDown(Microsoft, MIT)은 여러 파일 형식을 변환합니다.
pip install 'markitdown[pdf]'로 PDF 확장을 설치하고markitdown report.pdf -o report.md를 실행하세요. 기본 PDF 경로는 로컬입니다. 선택 확장 중에는 파일을 Azure Document Intelligence나 Content Understanding으로 보내는 것이 있으니, 기밀 파일에는 쓰지 마세요. - Docling(MIT)은 레이아웃·표 모델을 쓰며, 민감한 데이터를 위한 로컬 실행을 기능으로 내세웁니다. 모델은 처음 쓸 때 내려받으며, 네트워크 없는 기기를 위해 미리 받는
docling-tools models download명령이 문서에 나와 있습니다. - Marker(코드는 Apache-2.0, 모델 가중치는 상업적 제한이 있는 별도 라이선스)도 모델 기반입니다. 선택 옵션
--use_llm은 내용을 LLM 서비스(기본값은 Gemini)로 보내므로, 직접 운영하는 모델을 지정할 때만 로컬입니다.
python -m venv .venv && . .venv/bin/activate
pip install pymupdf4llm 'markitdown[pdf]'
# then work with the network off
python -c "import pymupdf4llm; open('report.md','w').write(pymupdf4llm.to_markdown('report.pdf'))"
markitdown report.pdf -o report-markitdown.md맥에서 PDF를 마크다운으로 변환할 때도 달라지는 건 없습니다. 두 패키지 모두 macOS에서 pip로 설치되고, Homebrew의 poppler 패키지가 다음 방법에 쓰는 pdftotext를 제공합니다.
방법 3: 명령줄 도구
전통적인 오프라인 도구는 Poppler의 pdftotext입니다. 빠르고 거의 어디에나 깔려 있지만, Markdown이 아니라 일반 텍스트를 씁니다. # 제목도, 세로선 표도 없습니다. -layout 옵션은 공백으로 열을 맞춰 줘서 사람이 읽기엔 좋지만, 파서나 모델이 구조를 알아야 할 때는 덜 도움이 됩니다. 형식 변환의 단골 해답인 Pandoc은 PDF를 아예 읽지 못합니다.
같은 파일로 방법들을 비교하려고, 저희 빌드 기기(Linux x86_64, 8 vCPU)에서 프로세스의 네트워크를 막은 채 파이썬 패키지 두 개와 pdftotext를 돌려 결과를 셌습니다. 파일은 브라우저 테스트와 같은 4쪽 보고서입니다. 저희 변환기 행은 같은 파일을 'AI 흔적 정리' 모드로 돌린 결과입니다.
| 도구 | 시간 | 제목 수 | 세로선 표 | 머리글 사본 | 쪽 번호 줄 | 하이픈으로 끊긴 단어 |
|---|---|---|---|---|---|---|
| PyMuPDF4LLM 1.28.2 | 1초 | 4 | 예 | 4 | 4 | 아니요 |
| MarkItDown 0.1.8 | 0.32초 | 0 | 예 | 4 | 4 | 예 |
| pdftotext 25.03.0 -layout | 0.02초 | 0 | 아니요 | 4 | 4 | 예 |
| 저희 브라우저 변환기(AI 흔적 정리) | 87ms | 4 | 예 | 0 | 0 | 아니요 |
작업별로 맞는 방법

- 파일 하나, 지금 바로, 설치 없이: 브라우저. PDF를 MD로 변환하는 도구나, 파일이 많다면 일괄 변환 페이지를 쓰세요.
- 매주 폴더 하나, 또는 자동화 파이프라인: AGPL이 괜찮다면 PyMuPDF4LLM, MIT와 다양한 파일 형식이 필요하다면 MarkItDown.
- 까다로운 레이아웃, 스캔본, 수식: Docling이나 Marker. 모델을 내려받아야 하고 더 느립니다.
- 검색이나 빠른 비교용으로 글자만: pdftotext.
- 바로 보관함으로: 브라우저에서 변환한 뒤 Obsidian 작업 흐름을 따르세요.
용어 하나 짚고 가겠습니다. 오프라인 도구와 개인정보를 지키는 도구는 같은 약속이 아닙니다. 오프라인은 네트워크가 필요 없다는 뜻이고, 개인정보 보호는 캐시, 로그, 오류 보고서처럼 도구가 디스크에 남기는 것까지 포함합니다. 설치하는 모든 것의 개인정보 처리방침을 읽어 보세요.
기밀 PDF 점검 목록
- 도구의 개인정보 처리방침을 읽고, 위의 오프라인 테스트로 직접 확인하세요. 저희 방침은 개인정보 처리방침 페이지에 있습니다.
- 패키지 설치와 모델 다운로드는 온라인에서 하고, 그다음 네트워크를 끄고 PDF를 로컬에서 마크다운으로 변환하세요.
- 클라우드 확장은 꺼 두세요. MarkItDown의 Azure 옵션, Marker의 LLM 모드, 외부 서비스를 부르는 'AI 정리' 스위치 모두입니다.
- 내가 관리하는 폴더에서 변환하고, 끝나면 중간 사본을 지우세요.
- Markdown을 채팅 모델에 붙여 넣기 전에: 그 단계는 업로드입니다. 변환할 때 업로드하지 않았다고 해서 그 뒤까지 보호되는 건 아닙니다.
- 법률·의료 파일이라면 코드를 읽을 수 있는 도구를 고르고, 사용한 버전을 결과물과 함께 보관하세요.
출처
- PDF.js — Mozilla
- PyMuPDF4LLM (README and licence) — Artifex, GitHub
- MarkItDown (README and licence) — Microsoft, GitHub
- Docling: model prefetching and offline usage — Docling project
- Marker (README and licence) — Datalab, GitHub
- Poppler (pdftotext) — freedesktop.org
자주 묻는 질문
PDF를 로컬에서 마크다운으로 변환하려면 어떻게 하나요?
탭 안에서 파일을 처리하는 브라우저 변환기를 쓰거나, PyMuPDF4LLM이나 MarkItDown 같은 파이썬 라이브러리를 설치해 내 컴퓨터에서 돌리세요. 어느 쪽이든 네트워크를 끄고 시험해 보면 업로드가 없는지 확인할 수 있습니다.
온라인 변환기가 파일을 업로드하는지 어떻게 알 수 있나요?
브라우저의 네트워크 탭을 연 뒤 변환하세요. 파일을 실은 요청은 POST나 업로드 트래픽으로 보입니다. 더 간단하게는 변환 전에 오프라인으로 바꾸세요. 업로드하는 도구는 연결 없이 끝나지 않습니다.
이 변환기는 오프라인에서도 되나요?
네, 텍스트 레이어가 있는 PDF라면 됩니다. PDF 엔진을 내려받도록 온라인에서 페이지를 한 번 불러온 뒤 연결을 끊으면 됩니다. 테스트에서 4쪽 보고서가 데이터를 담은 요청 없이 오프라인으로 변환됐습니다.
로컬 변환에는 어떤 파이썬 라이브러리가 가장 좋나요?
작은 테스트에서는 PyMuPDF4LLM이 구조를 가장 많이 살렸지만 AGPL입니다. MarkItDown은 MIT이고 여러 형식을 다룹니다. Docling과 Marker는 까다로운 레이아웃과 스캔본에 맞지만 모델을 내려받아야 합니다.
스캔한 PDF도 로컬에서 변환할 수 있나요?
내 컴퓨터에서 OCR을 하는 도구로만 가능합니다. Docling과 Marker는 할 수 있습니다. 저희 브라우저 변환기는 텍스트 레이어만 읽고 OCR을 하지 않아서, 스캔본으로 보인다고 알려 줍니다.
Markdown 대신 pdftotext로 충분할까요?
검색이나 빠른 읽기에는 대개 충분합니다. 다만 Markdown 문법의 제목이나 표를 만들지 않으니, 구조가 중요한 노트, 문서, AI 프롬프트에는 제대로 된 Markdown 변환기가 필요합니다.

