API 怎么读 PDF?文件输入、扫描页与页码证据验收
API 读取 PDF,需要把真实文件交给支持该输入方式的端点,再核对回答所依据的页面与原文。文件名、上传成功或一段摘要,都不足以证明全文已读。本文从一份 PDF 的输入和证据验收入手;云岚API整理的模板是空白记录,未读取用户文件、上传 PDF 或调用真实 API。官方资料核对日期为 2026 年 10 月 24 日。
先确认 PDF 里是文字、扫描图,还是两者混合
先在本地查看与任务有关的页面,检查文字能否选中、复制后顺序是否合理,表头、脚注和数字是否清楚。能复制文字也不保证表格关系提取正确;一页有文字层,不代表整份文件都有。
只提取文字的方案可能漏掉扫描页与图表。pypdf 官方明确说明其文本提取不是 OCR,已有 OCR 文字层也可能带入识别错误。pypdf 文字提取边界
支持视觉 PDF 处理的接口可以接收页面图像。例如 OpenAI 文档说明,在支持视觉的模型上,PDF 输入会包含提取文字与页面图像。不要把这项能力推到所有模型或第三方渠道。若只需分析一张页面截图,可转到图片输入教程;这里保留文件整体及页码关系。OpenAI 文件处理说明
文件 URL、Base64 和 file_id,按端点分别选
下面列的是核对日官方文档中的 PDF 入口。文件 ID 应来自实际使用的服务与可访问范围,不能凭字符串长得相似就在不同平台之间复用。
| 官方接口 | PDF 来源 | 内容块 |
|---|---|---|
| OpenAI Responses | 文件 URL、上传后的 ID、Base64 文件数据 | input[].content[] 中的 input_file |
| OpenAI Chat Completions | 上传后的 ID、Base64 文件数据;不支持文件 URL | messages[].content[] 中的 file |
| Anthropic Messages | URL、Base64、Files API 的 ID | messages[].content[] 中的 document |
字段不能只改名字互换。以下三个 JSON 仅为内容块片段,占位符必须替换,还需补模型、消息和鉴权;没有可直接发送的真实文件。OpenAI 两种结构依据文件输入指南,Anthropic 结构依据PDF 支持说明。
Responses 的 URL 方式:
{"type":"input_file","file_url":"YOUR_DIRECT_PDF_URL"}
Chat Completions 的文件 ID 方式:
{"type":"file","file":{"file_id":"YOUR_UPLOADED_PDF_ID"}}
Anthropic Messages 的文件 ID 方式:
{"type":"document","source":{"type":"file","file_id":"YOUR_UPLOADED_PDF_ID"}}
URL 要能返回 PDF 文件本身,登录页、网盘预览页或普通文章链接不能当作文件。选择 Base64 时再查对应字段:OpenAI 示例使用 file_data 和 filename,Anthropic 使用 source.media_type=application/pdf 与原始 source.data。不要把 PDF 数据放入图片的 image_url。
发送前记录哪些限制和文件状态?
记录模型、服务、端点、SDK 版本、文件版本、页数与字节数,再核对目标组合的限制。OpenAI 当前文件输入说明为单文件小于 50 MB、同次请求全部文件合计不超过 50 MB;这是官方接口口径,不是云岚API容量承诺。OpenAI 使用限制
Anthropic 当前 PDF 文档列出 32 MB 请求体限制(平台可能不同)、每请求最多 600 页;上下文窗口小于 1M token 时为 100 页,并要求标准、未加密的 PDF。页数和体积通过后,仍要检查上下文与任务可读性。Anthropic PDF 要求
如果改用拆分文件,保存“子文件第几页对应原文件第几页”的映射;不要截取一部分后仍把结论标为全文检查。上传后得到 ID,也应确认文件用途、状态和可访问性满足后续请求,不能把上传回执当作分析结果。
页码引用怎样核对,才不会错到另一页?
验收表分别保存三种编号:PDF 文件内从 1 起的页面序号、页面上印刷的页码、拆分后的子文件页序。封面、目录和罗马数字页码可能让它们不同。提问时写清希望使用哪一种,核对时始终回到同一版本的原文件。
要求回答逐项给出“结论、所在页、短引文或图表定位、未确定之处”。这只是提示约定,模型输出的页码仍需人工验证,不等于接口返回了可靠的引用对象。
Anthropic 的 citations 功能则有专门的 PDF page_location:start_page_number 从 1 开始,end_page_number 是不包含的结束边界,例如 5 到 6 指第 5 页。启用该功能需要按文档设置;其当前只支持文字引用,没有可提取文字的纯扫描 PDF 不能产生这类引用。能视觉分析页面与能返回文字引用,要分别验收。Anthropic 引用规则
用一张证据表验收,而不只看摘要流畅
在请求前,先从原文件选出少量可核对的问题:一项明确文字事实、一项带单位或脚注的表格信息、一项文件中没有答案的问题。预先保存人工答案,不把答案写进给模型的提示词。
| 检查项 | 合格判据 |
|---|---|
| 文件与范围 | 用的是预期版本,实际处理范围没有被冒充为全文 |
| 引文与位置 | 能在对应页面定位,不拼接无关页面成为一句话 |
| 事实含义 | 单位、日期、条件、行列标题和脚注均吻合 |
| 缺失信息 | 找不到或看不清时明确保留未知,不自行补值 |
有引文也可能读错含义:例如引用到的是上期数值,回答却称本期;因此“定位通过”和“事实通过”分别记录。图表信息应保留图号、表号或区域说明,并检查原始页面,不只检查提取出来的文字。
下载 PDF 请求检查与证据验收模板。包内有请求清单、页码映射、逐项证据表和空白 CSV;没有 PDF、密钥、请求程序或预填成绩。核对通过后,若要交给程序处理,再看结构与事实校验;大量文档的候选召回另见向量检索验收。
常见问题
扫描 PDF 必须先做 OCR 吗?
取决于处理路线。只抽文字时需要可用文字层;支持视觉 PDF 的模型可处理页面图像,但识别准确性仍须验证。要求文字 citations 时,还要满足引用功能的文字条件。
有页码和引文,就能自动入库吗?
不能。先核对位置,再核对事实含义和业务条件。Anthropic 当前 citations 也不能与 output_config.format 的结构化输出同时开启;保留原始引用后再设计后续整理流程。功能兼容说明
用 file_id 重复提问,就不再计输入费用了吗?
不能这样推断。复用文件引用不等于本次模型处理免费。保留响应 usage 与实际账单,按费用核对方法检查,不用文件大小或页数直接代替真实账单。
云岚API所有模型都能按这些格式读 PDF 吗?
本文没有做这项实测。已有账号可在控制台确认目标模型、端点及文件支持范围,再用非敏感小样本验收;“文本对话可用”不能替代 PDF 输入和证据检查。
