
自适应 PDF新技术的诞生背景PDF 作为一种视觉格式存储着在页面上绘制字形的指令。虽然规范支持“标签化 PDF”Tagged PDF用于标记标题、段落和列表但实际中多数 PDF 是未标记的。像 LaTeX、Chrome 的打印成 PDF 功能及大多数导出工具都不会生成标签文本提取器只能按从左到右、从上到下顺序读取绘制命令提取文本。在只有人类阅读 PDF 时这种情况无关紧要但如今多数 PDF 会被输入到大型语言模型LLM中而从本身不携带结构信息的 PDF 格式中重建结构成了所有处理工具面临的问题。自适应 PDF 的工作原理自 2001 年发布的 PDF 1.4 版本起PDF 规范中有一个属性允许为标记内容定义替换文本。渲染器会忽略这个替换文本按内容流指令绘制但支持该属性的文本提取器会返回替换文本而非视觉文本。在测试中PyMuPDF 和 Poppler 都支持这个属性主要的开源提取器也能处理它。该属性最初为连字和无法自然映射到 Unicode 的字符设计但未广泛应用。现在将其应用到文档层面通过标记内容序列将替换文本附加到内容流中支持该属性的提取器就会返回结构化的 Markdown 文本同一个 PDF 文件对不同阅读者会产生不同输出但渲染时外观相同。提取器实际看到的内容对比同一个 PDF 视觉外观相同但普通 PDF 和智能 PDF 经 PyMuPDF 提取的内容差异明显。普通 PDF 提取的文本无层次结构句子中间换行项目符号与段落难区分表格被拆分而智能 PDF 提取的文本有 # 标题、Markdown 表格、 - 项目符号句子不会在单词中间断开LLM 无需猜测章节标题和列表内容信息清晰。自适应 PDF 的基准测试使用自己的工具将多个 PDF 转换为智能 PDF分别用 PyMuPDF 的 get_text() 方法和 https://www.pdf2go.com/ 从普通 PDF 和智能 PDF 中提取文本都返回 Markdown 格式通过 tiktokencl100k_base统计标记数量。基准测试脚本可在代码仓库找到。测试结果显示标记数量大致相同该方法优势在于让相同标记携带结构信息提高了每个标记的信息密度。对于大多数文件大小开销在个位数百分比教科书大小减小是因为 PyMuPDF 使用 garbage 3 保存时移除未使用的 PDF 对象这是通用优化方法。将智能 PDF 上传到 ChatGPT 和 Claude要求复制粘贴原始文本两者都返回含 #、##、 - 项目符号的 Markdown 格式输出结果与嵌入的层次结构完全匹配。自适应文档的优势最终得到的自适应 PDF 是一种能根据阅读者自适应的文档。人类打开看到熟悉的格式化 PDF机器读取得到简洁的 Markdown 文本包含标题、列表和结构信息。只需一个文件无需单独版本和转换步骤根据阅读者不同自动呈现合适内容无需管理和维护两份副本文档本身会根据使用方式决定呈现内容。开发者正在积极探索更多相关内容并计划为 Google Docs 开发扩展以简化过程这只是首次尝试。