LLM용 PDF를 Markdown으로

ChatGPT, Claude, 직접 만든 파이프라인을 위한 깔끔한 Markdown. 토큰 수가 늘 보이고, 줄일 때마다 얼마나 아끼는지 알려 주며, 청크는 JSONL로 내려받을 수 있습니다.

여기에 PDF를 놓으세요

붙여넣거나 파일을 골라도 됩니다. 한 번에 20개까지, 이 탭 안에서 변환합니다.

가진 파일이 없다면 이걸로 해 보세요:

파일은 이 브라우저 탭 안에서 읽히며 업로드되지 않습니다.

모델에 PDF 대신 Markdown을 주는 이유

채팅에 PDF를 첨부하면 앱이 텍스트를 대신 뽑아 주지만, 모델이 실제로 무엇을 받았는지는 보이지 않습니다. 먼저 직접 변환하면 세 가지가 좋습니다.

  • 텍스트가 보입니다. 깨진 표, 뒤섞인 단, 텍스트 없는 페이지가 모델을 헷갈리게 하기 전에 드러납니다.
  • 구조가 살아남습니다. 제목, 목록, 표가 모델이 잘 읽는 Markdown으로 남고, 밋밋한 줄의 나열이 되지 않습니다.
  • 토큰이 덜 듭니다. 쪽 번호, 반복되는 머리글, 줄 끝 하이픈, 레이아웃용 여백이 사라져서 컨텍스트 창을 내용에 더 많이 씁니다.

이 페이지는 처음부터 그에 맞춘 설정으로 열립니다. 이미지는 빼고, 각 페이지가 시작하는 곳에 <!-- Page N --> 주석을 넣어 모델이 페이지를 인용할 수 있게 하며, 이미지 줄은 뺍니다.

믿을 수 있는 토큰 수

Markdown 위의 숫자는 복사하거나 내려받을 내용의 정확한 토큰 수이며, 프런트매터와 페이지 구분도 포함합니다. GPT-4o와 그 이후 OpenAI 모델이 쓰는 인코딩 o200k_base로 셉니다. Claude를 비롯한 다른 모델은 자체 토크나이저를 쓰므로, 그런 모델에는 정확한 값이 아니라 가까운 추정치로 보세요.

LLM용으로 줄이기의 스위치마다, 켜기 전에 그 파일에서 몇 토큰을 아끼는지 보여 줍니다.

스위치하는 일
링크 주소 빼기링크 글자는 두고 URL을 없앰
굵게와 기울임 빼기**와 * 기호를 없앰
이미지 줄 빼기이미지 자리 표시도 링크도 없음
HTML 태그를 일반 텍스트로<sup>, <sub>, <br>을 일반 텍스트로
문자 정규화fi 같은 합자는 fi로, 특이한 공백은 보통 공백으로
표 압축빈 열과 셀 여백을 없앰

PDF를 다시 읽지 않으므로 스위치는 밀리초 안에 반영됩니다.

RAG용 청크

검색에는 임베딩할 수 있을 만큼 작고 그 자체로 뜻이 통하는 조각으로 나눈 문서가 필요합니다. 청크 탭이 Markdown을 나눠 줍니다.

  • 먼저 제목에서 나눕니다. 할 수 있는 한 절 중간에서 시작하지 않으므로, 청크마다 한 가지 주제를 다룹니다.
  • 고른 토큰 한도 안에서 나눕니다. 256에서 8,192 토큰까지 고를 수 있습니다. 한도보다 큰 절은 문장 사이에서, 큰 표는 행 사이에서 나누고 머리글 행을 반복합니다.
  • 제목 경로와 함께. 청크마다 방법 › 데이터 수집처럼 위에 있는 제목을 알고, 그것으로 시작할 수 있어서, 검색된 청크도 어디서 왔는지 알려 줍니다.
  • 페이지와 함께. 답변이 원본의 12쪽을 가리킬 수 있습니다.

JSONL 다운로드를 누르면 한 줄에 JSON 객체 하나가 들어 있습니다.

{
  "id": "report.pdf#3",
  "source": "report.pdf",
  "chunk": 3,
  "headings": ["Methods", "Data collection"],
  "page_start": 4,
  "page_end": 5,
  "tokens": 812,
  "text": "..."
}

코드 몇 줄로 쓰고 있는 벡터 저장소에 넣을 수 있습니다.

잘 통하는 작업 순서

  1. PDF를 놓고 확인할 페이지부터 보세요. 잘못 나온 페이지는 고치거나 OCR로 읽습니다.
  2. 아끼는 양이 가치 있는 줄이기만 켜세요. 모델이 출처를 밝히게 하려면 링크는 두세요.
  3. 채팅이라면 Markdown을 복사해 붙여 넣으세요. 파이프라인이라면 JSONL 청크를 쓰세요.

모든 일이 브라우저 안에서 일어나고, 여기서는 그게 중요합니다. 사람들이 모델에 주는 문서는 내부 보고서, 계약서, 연구 자료처럼 또 다른 서비스에 올리면 안 되는 것이 많기 때문입니다.

자주 묻는 질문

LLM에는 정말 일반 텍스트보다 Markdown이 낫나요?

구조가 있는 문서라면 대개 도움이 됩니다. 제목은 절이 어떻게 겹쳐 있는지 모델에 알려 주고, 표는 숫자를 이름표 옆에 둡니다. 산문 한 페이지라면 차이가 작습니다. 스위치로 그 구조를 남기거나 뺄 수 있습니다.

청크 크기는 얼마로 해야 하나요?

문서에 대한 질의응답이라면 512나 1,024 토큰으로 시작하세요. 작은 청크는 좁은 질문에 더 정확히 맞고, 큰 청크는 문맥을 더 많이 함께 둡니다. 청크 탭 아래 요약에 개수와 가장 큰 청크가 나오니 효과를 바로 볼 수 있습니다.

토큰은 제 기기에서 세나요?

네. 토크나이저는 변환기의 다른 부분처럼 탭 안에서 돌아갑니다. 세기 위해 OpenAI나 다른 누구에게도 보내지 않습니다.

데이터셋용으로 PDF를 많이 처리할 수 있나요?

한 번에 20개까지 놓고 모두 하나의 .zip으로 내려받을 수 있습니다. 파일이 수천 개라면 스크립트가 더 맞습니다. Python으로 PDF를 Markdown으로를 보세요.