Adaptive PDFs: Embedding Markdown for LLM-Ready Documents

Adaptive PDFs 讓單一 .pdf 檔案能同時服務兩類不同的受眾:看到視覺化格式化文件的真人,以及能提取乾淨、結構化 Markdown 的機器(例如 LLMs)。這種方法解決了一個常見問題,即文字提取工具在從通常僅儲存字形座標和字體大小的視覺格式中重建文件層級結構時非常困難。

How Adaptive PDFs Work

Adaptive PDFs 利用了 PDF 規範中的一個屬性(自 PDF 1.4 版本,2001 年起可用),該屬性允許為標記內容(marked content)定義替換文字。雖然 PDF 渲染器會忽略此屬性並繪製視覺內容流,但相容的文字提取工具會返回替換文字而非視覺文字。

這個功能最初是為了連字(ligatures)或無法自然映射到 Unicode 的字元而設計的。Adaptive PDFs 在文件層級應用此功能,透過標記內容序列(marked-content sequences)將替換文字附加到內容流中。這確保了像 PyMuPDF 和 Poppler 這樣的工具可以返回結構化的 Markdown(包括標題、表格和列表),而視覺外觀在 Adobe Acrobat 或 macOS Preview 等檢視器中保持不變。

Performance and Extraction Benchmarks

基準測試顯示,嵌入結構化 Markdown 並不會顯著影響檔案大小或 LLMs 的 token 數量,但它能大幅提升資訊密度。

Token and Size Impact

Document Pages Size Δ Normal Token Smart Token
Resume 1 +15.7% 650 668
Textbook 417 -8.5% 193,064 195,858
Novel Chapter 38 +4.7% 16,472 15,958
Research paper 18 +2.5% 7,897 7,897

Key Findings

  • Token Efficiency: Token 數量在一般 PDF 與 smart PDFs 之間大致相當。其價值在於 token 現在攜帶了明確的結構(例如,## Overview 相對於 Overview),減少了 LLMs 需要猜測文件層級結構的需求。
  • File Size: 檔案大小的開銷通常在個位數百分比範圍內。某些檔案大小的減少(如教科書範例所示)歸功於 PyMuPDF 的 garbage=3 設定等一般 PDF 優化工具,而非技術本身。
  • LLM Verification: 使用 ChatGPT 和 Claude 的測試顯示,當要求它們複製貼上原始文字時,這兩個模型都會返回嵌入的 Markdown 格式(例如 #- 項目符號),證實了模型正在存取該嵌入層。

Technical Considerations and Limitations

雖然 Adaptive PDFs 提供了一種流暢的方式來交付結構化數據,但仍存在一些技術與安全方面的考量。

Extractor Compatibility

此方法的有效性取決於提取器是否遵循替換文字屬性。如果工具忽略此屬性,它將回退到標準且混亂的提取過程,且使用者可能不會察覺到結構化版本是可用的。

Security and Prompt Injection

因為替換文字對人類讀者是不可見的,這為「提示詞注入」(prompt injection)或惡意指令創造了潛在的攻擊向量。使用者可以嵌入針對 LLM 的隱藏指令(例如,指示招聘機器人推薦某位候選人),而人類審查員卻完全不會察覺。

Comparison to Tagged PDFs

雖然作者指出許多常見的匯出工具(例如 Chrome 的 print-to-PDF)不會產生標籤,但有些使用者指出 LaTeX 是可以產生標籤 PDF 的,儘管使用者通常對其利用率不高。此外,美國政府規範(Section 508)已要求 PDF 中的語義結構,以便於螢幕閱讀器和輔助技術使用。

Community Perspectives

關於此技術的討論突顯了兩類文件格式之間的根本緊張關係。有些人認為 PDF 格式本質上不適合機器閱讀,應該改用 HTML 或其他標記語言。其他人則認為,這是在文件日益由 AI agent 消耗的時代中,一個必要的橋樑。

"Optimizing for humans vs. agents is like the new wave of Desktop vs. Mobile... agents are going to win even faster."

專案代碼位於 github.com/iminoaru/adaptivepdf

Sources