Adaptive PDFs: LLM 추출을 위한 구조화된 Markdown 삽입
Adaptive PDFs는 PDF 형식에 내재된 구조적 손실을 해결하기 위해 기계 추출기가 읽을 수 있는 숨겨진 구조화된 Markdown 레이어를 삽입하고, 인간 독자는 표준 형식의 문서를 보게 합니다.
문제: PDF는 시각 형식이다
PDF는 특정 좌표에 글리프를 그리는 시각적 지시사항이며, 구조화된 데이터가 아닙니다. "Tagged PDF" 사양이 헤딩과 단락을 표시하도록 존재하지만, Chrome의 인쇄‑PDF 기능이나 많은 LaTeX 설정 등 대부분의 일반적인 내보내기 도구는 이러한 태그를 생성하지 않습니다.
태그가 없는 PDF를 Large Language Model(LLM)이나 텍스트 추출기가 처리할 때는 원시 좌표와 글꼴 크기에서 구조를 재구성해야 합니다. 이 과정에서 문장이 끊기고, 표가 평평해지며, 계층 구조가 손실되어 LLM이 헤딩이 끝나는 지점과 단락이 시작되는 지점을 추측해야 하는 상황이 발생합니다.
Adaptive PDFs 작동 방식
Adaptive PDFs는 PDF 1.4 사양(2001)에서 도입된, 표시된 콘텐츠에 대한 교체 텍스트를 정의할 수 있는 속성을 활용합니다.
- Human View: PDF 렌더러는 교체 텍스트를 무시하고 시각 콘텐츠 스트림을 의도대로 그립니다.
- Machine View: 이 속성을 지원하는 텍스트 추출기(Python의 PyMuPDF, Poppler 등)는 시각 텍스트 대신 교체 텍스트를 반환합니다.
마크드‑콘텐츠 시퀀스를 통해 콘텐츠 스트림에 구조화된 Markdown을 첨부함으로써, 단일 .pdf 파일에서 두 가지 다른 출력을 제공합니다. 인간은 포맷된 페이지를 보지만, 기계는 명시적인 헤딩(#), 표, 그리고 리스트 항목을 포함한 깔끔한 Markdown 문자열을 받습니다.
성능 및 벤치마크
테스트 결과, 구조화 레이어를 추가해도 파일 크기와 토큰 수에 미치는 영향은 무시할 수준이며, LLM에 대한 정보 밀도는 크게 증가합니다.
토큰 및 크기 영향
| 문서 | 페이지 | 크기 변화 | 일반 토큰 | 스마트 토큰 |
|---|---|---|---|---|
| 이력서 | 1 | +15.7% | 650 | 668 |
| 교과서 | 417 | -8.5%* | 193,064 | 195,858 |
| 소설 챕터 | 38 | +4.7% | 16,472 | 15,958 |
| 연구 논문 | 18 | +2.5% | 8,082 | 7,897 |
*Note: 교과서의 크기 감소는 적응 기술 자체가 아니라 일반 PyMuPDF 최적화(garbage=3)에 기인했습니다.
LLM 검증
ChatGPT와 Claude에 업로드했을 때, 두 모델 모두 원시 텍스트 제공을 요청하면 삽입된 Markdown(# 및 - 기호 포함)을 반환했습니다. 이는 모델이 레이아웃 분석에만 의존하지 않고 삽입된 구조화된 레이어에 접근하고 있음을 시사합니다.
기술적 고려사항 및 커뮤니티 피드백
이 접근법은 기계가 읽을 수 있는 데이터를 제공하는 간소화된 방법을 제시하지만, 커뮤니티에서는 여러 기술적·보안적 주의사항을 제기했습니다.
추출 신뢰성
이 기술은 추출기가 교체 텍스트 속성을 준수한다는 전제에 의존하므로 “무음 실패” 위험이 있습니다. 도구가 해당 속성을 무시하면 구조화된 버전이 존재한다는 알림 없이 혼란스럽고 태그가 없는 시각적 추출로 되돌아갑니다.
보안 및 프롬프트 인젝션
인간에게는 보이지 않지만 LLM에게는 보이는 텍스트를 숨길 수 있는 능력은 프롬프트 인젝션의 잠재적 경로를 만들 수 있습니다. 사용자는 악의적인 지시나 “숨겨진 힌트”(예: 채용 AI에 영향을 주기 위한 이력서 내) 등을 삽입할 수 있으며, 인간 검토자는 이를 절대 보지 못합니다.
대안 접근법
일부 개발자는 업계가 HTML로 전환하거나 별도의 Markdown 소스를 유지해야 한다고 제안합니다. 한 커뮤니티 구성원은 압축 레벨 0으로 PDF와 소스 파일을 함께 ZIP으로 압축하는 기술을 공유했으며, 이를 통해 파일을 보는 사람은 PDF로, 소스를 찾는 사람은 ZIP으로 읽을 수 있습니다.
구현
이 프로젝트는 오픈 소스이며 github.com/iminoaru/adaptivepdf에서 GitHub을 통해 제공됩니다. 저자는 현재 이러한 Adaptive 문서 생성을 간소화하기 위한 Google Docs 확장 기능을 탐색 중입니다.