ChatGPT 读不了 PDF——三大常见原因

PDF 上传后说"没看到内容"?多半是扫描件、文件过大、加密三件事之一。

ChatGPT 读 PDF 的真实流程是:上传 → 在服务端跑一个 PDF parser 抽取文本层 → 把抽到的文本拼到 prompt 里发给模型。模型本身不会看像素、不会跑 OCR、不会读元数据。所以”读不出内容”几乎总是发生在抽取那一步——文件没有文本层、太大被截断、被加密阻止访问。

按命中率,下面 5 个原因覆盖了 95% 以上情形。

常见原因

按命中率从高到低:

1. PDF 是扫描件(纯图片,无文本层)

扫描的合同、拍照的发票、把图片塞进 PDF 的电子书——这些 PDF 打开能看到字,但里面没有可抽取的文本流,parser 抽出来是空字符串。模型只能干瞪眼。

如何判断:用 Preview / Acrobat 打开 PDF,按 Cmd+A 选中所有内容再 Cmd+C 复制,粘贴到记事本。

  • 能粘出文字 → 有文本层,问题在别处
  • 粘出来全是空白或乱码 → 是扫描件,必须先 OCR

2. 文件太大被截断 / 触发上传上限

ChatGPT 单文件官方上限是 ~512 MB(Plus),但实际抽取容量受单对话总 token 上限约束。粗略估算:超过 50 页的 PDF 容易在中段被截断;100+ 页的几乎必然只读到前 30–40%。

模型读了前面没看到你问的内容时,会回答”文件里没有这部分”——其实是没读到。

如何判断:问”请列出文件的目录 / 标题层级”。如果只列了前几节,就是被截断。

3. PDF 有密码 / DRM / 复制限制

带密码的 PDF 可以上传,但 parser 不会去解密,直接返回”无法读取”。某些出版社 DRM 保护的电子书也类似。

如何判断:本地打开看是否弹密码框,或菜单 → 文件属性 → 安全性 → 看是否有”密码保护”或”禁止复制”标记。

4. 文本编码异常 / 含大量公式 / 老 PDF

某些老软件生成的 PDF 把字体嵌入但没保留编码映射,抽出来是乱码 ASCII 串。数学论文里大量 LaTeX 公式 → 抽出来全是 \frac{}{}。表格大量合并单元格 → 顺序错乱。

如何判断:让模型”复述文件第 1 页第一段”。复述出乱码 / 缺字 = 编码问题。

5. 单对话已经塞太多文件

ChatGPT 单次对话能挂的文件总量有限(约 10 个),且 token 总和受模型上下文约束。第 6 个 PDF 上传后,前几个的内容可能被挤出 context。

如何判断:开新对话只上传这一个 PDF 试。能读 = 是堆积问题。

最短修复路径

按耗时从短到长:

Step 1:30 秒确认是不是扫描件

用 Preview 打开 PDF → Cmd+ACmd+C → 粘到记事本。

  • 全空白 → 扫描件,跳 Step 2 OCR
  • 有文本 → 跳 Step 3 看大小

Step 2:先 OCR 再上传

免费 / 简单方案:

  • macOS:把 PDF 拖进 Preview → 工具栏 → “Export As” → 选 “PDF” → 勾”Apply OCR”(macOS 14+)
  • 在线ilovepdf.com/ocr_pdf / Adobe Acrobat web
  • 专业:ABBYY FineReader(贵但精度最高,适合中英混排)
  • 本地命令行ocrmypdf input.pdf output.pdf -l chi_sim+eng(开源,准确率不错)

OCR 完拿处理后的 PDF 重新上传。注意:OCR 不是完美的,长公式 / 手写 / 模糊扫描可能识别不准,导出 .txt 再人工校对一遍最稳。

Step 3:拆 / 压

如果 PDF 大于 50 页:

# macOS:用 pdftk 拆
brew install pdftk-java
pdftk input.pdf cat 1-30 output part1.pdf
pdftk input.pdf cat 31-60 output part2.pdf

或直接在 Preview 里:选中页面缩略图 → 右键”Export selected pages”。

把每一段单独传,让模型分段总结,最后让它把所有总结再合并成一份全文摘要。

Step 4:去密码再上传

  • macOS Preview:打开 PDF(输入密码)→ File → Export as PDF → 不勾”Encrypt”
  • 在线smallpdf.com/unlock-pdf(注意隐私,机密文件别用)
  • 命令行qpdf --decrypt --password=YOUR input.pdf out.pdf

Step 5:编码 / 复杂排版问题——转纯文本贴

如果 PDF 抽不出干净文本,最后手段:

  1. Preview 选中文本复制到 .txt
  2. 用 Pandoc / pdftotext 转 Markdown
  3. 直接把内容粘到对话框(小于 4000 字符的直接粘,长的拆几次粘)

模型读纯文本比读复杂 PDF 准多了。

Step 6:开新对话单独传

如果对话历史已经堆了好几个文件,开个新对话只挂这一个 PDF。

预防建议

  • 扫描件先本地 OCR 再上传——不要等到出错才补救
  • 200 页大文档拆成 30–40 页一段,分段总结再合并
  • 关键结论另存笔记——对话结束后 context 可能丢
  • 含敏感信息的合同 / 财报,OCR 前先脱敏
  • 长文档分析放在 Projects 里,可以挂持久参考文件不占单次 context

相关阅读

标签: #ChatGPT #排查 #排查