ChatGPT 上传的 PDF 分析不正确

PDF 上传成功但 ChatGPT 漏读表格、跳页、数字错——多半是抽取层而不是模型本身的问题。附逐步诊断与当前上限。

ChatGPT 看 PDF 的方式跟你不一样。在 Free、Go、Plus、Pro 这几档套餐上,PDF 的处理是纯文本的:解析器先把可选中的文本层抽出来,建一个私有语义索引,然后模型从这个索引里检索片段来回答。一旦文本层是坏的——扫描页根本没文本、多栏排版抽取顺序乱、表格被压扁成一串连排数字、嵌入子集字体解码成乱码、整页是图片——模型总结的就是噪声,答案自然错。图片和图表则被直接丢掉(截至 2026 年 6 月,只有 ChatGPT Enterprise 的 “Visual Retrieval with PDFs” 功能能在对话里读图表)。

这一个事实会彻底改变你的排查顺序:绝大多数”ChatGPT 把我的 PDF 分析错了”其实是抽取失败,不是推理失败。 先验证抽出来的文本,确认输入没问题之后,再去动模型和 prompt。

一句话总结

  • ChatGPT 读的是文本层,不是页面本身。没文本层(扫描 / 拍照 PDF)= 没内容进得了模型。
  • 它不会可靠地自动 OCR 扫描件,Free/Go/Plus/Pro 上还会忽略嵌入的图片 / 图表。这些都得在上传之前处理好。
  • 大文件:上限是单文件 512 MB、200 万 token(截至 2026 年 6 月)。超过约 200 万 token 的尾部会被悄悄丢掉,所以一份 3000 页的报告会显得”只读了一半”。
  • 收益最高的两步——给扫描件做 OCR、把复杂表格本地转成 Markdown——能解决大约 70% 的情况。
  • 不用命令行、30 秒先试的办法: 用 Chrome 或 Edge 打开这份 PDF,Print -> Save as PDF,再上传。浏览器会用一层干净的文本层重写文件,常常能救活那种被 ChatGPT 以 No text could be extracted from this file 拒收的 PDF。
  • 验证修好没:让 ChatGPT 原文引一句话,再在原始 PDF 里用 Ctrl+F 搜,搜得到就是真修好了。

常见原因

按命中率从高到低:

1. 扫描页没文本层

最常见。来自手机拍照、纸质文件扫描的 PDF 看起来正常,实际每页是一张大图,没有任何”文本”可以被抽取。模型只看到 “[image]” 和空白,回”该页没有内容”。

如何判断:阅读器(Preview / Adobe)里逐页试鼠标拖选文字。选不中 = 没文本层 = 扫描页。

2. 多栏 / 复杂排版抽取顺序错

学术论文 / 杂志双栏 PDF,抽取器经常按 z-order(左到右、上到下)扫,把左栏第一段拼上右栏第一段——句子被打乱。

如何判断:让它”原文引第 3 页第 1 段”,引出来的内容句子拼接奇怪 / 主谓不连贯 = 抽取顺序错。

3. 表格被压扁丢行列

PDF 的表格只是绘制的线条 + 文本框,抽取器把行列结构丢了,输出变成一串没结构的数字。“Q1 营收 100, Q2 200” 可能被抽成 “Q1 营收 Q2 100 200”。

如何判断:表格相关问题答错 / 数字对错位 = 这条。让它”逐行抽取 Table 2 的所有行”输出结构混乱 = 验证。

4. 嵌入字体 / 非标 CID 抽出乱码

中文 PDF / 数学公式 / 特殊字体经常用 embedded subset font + 非标 CID 映射。抽取出来变 ”���” 或者英文字母替代汉字。

如何判断:让它原文引一段,输出明显乱码 / 字符替换 = 字体问题。

5. 巨型 PDF 超出 200 万 token 索引,尾部被丢

ChatGPT 不会把整份大 PDF 装进上下文。它建的是语义索引(截至 2026 年 6 月,单文件上限 200 万 token),每次检索只拉相关片段——大约每轮 11 万 token——进模型。超过 200 万 token 上限的部分会被悄悄忽略。一份 3000 页的法律文书体积可能远低于 512 MB 上限,但最后三分之一从没被索引,所以模型对前几章答得很自信,对后面却一片空白。

如何判断:让它”列出每一章及其页数”对照实际目录,明显缺尾几章 = 索引被截断了。

6. 加密 / 受保护 PDF 抽不出来

带 password 或 DRM 的 PDF 上传后能看到文件但抽取失败。模型答”无法访问此文件内容”。

如何判断:本地用 qpdf --is-encrypted 检查 = 加密。

7. 图片 / 图表内容完全被忽略

在 Free、Go、Plus、Pro 上,PDF 处理是纯文本的——图表、流程图、扫描进来的图片根本不会被读。模型从没看到它们,自然引用不了。只有 ChatGPT Enterprise 的 “Visual Retrieval with PDFs” 功能(截至 2026 年 6 月仅 Enterprise 可用,Free、Plus、Pro、Team、Edu 都没有)才能在普通上传里读懂图表里的数字和示意图。

如何判断:明明图表里有数字,回答却完全没提,而且问”Figure 3 说明了什么”只能瞎猜或拒答 = 这张图从没被读过。

值得知道的当前上限(2026 年 6 月)

下面这些数字常常是”只读一半”或”被拒收”的隐形元凶。全部数据截至 2026 年 6 月。

上限数值触顶时会怎样
单文件大小512 MB直接拒绝上传
索引上限(文本 / PDF)单文件 200 万 token超过约 200 万 token 的尾部被悄悄丢弃
每轮检索量每次查询约拉 11 万 token长文档靠片段回答,不是看全文
可靠处理体积建议控制在约 25 MB 以内更大也能上传,但建索引时容易出问题
每条消息文件数10 个(Plus 及以上)第 11 个附件被忽略
上传频率 Free约 3 个 / 天再传被拦
上传频率 Plus最高 80 个 / 3 小时超额后被限流
上传频率 Team/Enterprise最高 160 个 / 3 小时超额后被限流

来源:OpenAI 文件上传 FAQ 及 OpenAI 公布的各档套餐上限。

动手前先确认

  • 确认问题出在哪里:是 Project、Custom GPT 还是普通对话。PDF 走的都是同一条纯文本管线,但 Project 会把文件在整个项目里持续保留,这会改变某条具体消息实际挂载的是什么。
  • 复现前把当前对话复制一份,避免清掉历史影响下次诊断。
  • 确认订阅:Free、Go、Plus、Pro、Team、Enterprise 共用 512 MB / 200 万 token 上限,但只有 Enterprise 能在对话里读图表。

需要收集的信息

  • PDF 类型(数字原生 / 扫描 / 混合)、总页数、文件大小(MB)。
  • 是否含中文 / 数学公式 / 表格 / 图表 / 双栏排版。
  • 完整 prompt 文案 + 错误回答截图;具体哪几页 / 哪个表 / 哪个数字错。
  • 当前模型 + 上传方式(对话 / Project / Custom GPT)。

最短修复路径

按收益从高到低,前 2 步通常修 70% 问题。

Step 0:不用命令行、30 秒就能试的办法

装任何工具之前,先试一下”浏览器重写”。用 Chrome 或 Edge 打开这份 PDF,按 Print,选 Save as PDF(或 Microsoft Print to PDF),保存后上传这个新文件。浏览器会用一层干净、单流的文本层重新渲染文档,常常能修好那种被 ChatGPT 以 No text could be extracted from this file 拒收、或者抽出来一团乱的 PDF。这招只在原文件本来就有一些真实文本层时管用(它没法凭空给纯扫描件造出文字——那种情况直接看 Step 2),但试错成本为零,能解决相当一部分排版 / 编码类问题。

Step 1:逐页验证文本可选中

在本地 PDF 阅读器(macOS Preview / Adobe / 浏览器)打开:

  1. 翻到内容错的那几页
  2. 尝试鼠标拖选文字
  3. 能选中 = 有文本层;不能 = 扫描页 / 位图

或者命令行批量检查:

# 提取文本,看每页字数
pdftotext -layout your.pdf - | wc -l
# 或者用 Python
pip install pdfplumber
python -c "import pdfplumber; pdf = pdfplumber.open('your.pdf'); print([len(p.extract_text() or '') for p in pdf.pages])"

输出页字符数都是 0 / 个位 = 扫描或抽取坏。

Step 2:自己给扫描页跑 OCR

Free/Go/Plus/Pro 上 ChatGPT 不会可靠地 OCR 扫描件——它指望的是现成的文本层。本地用 ocrmypdf(基于 Tesseract)补一层。扫描质量很关键:尽量 300 DPI 以上、高对比、页面摆正。

# 安装 ocrmypdf
brew install ocrmypdf  # macOS
sudo apt install ocrmypdf   # Ubuntu/Debian

# OCR(中英文)
ocrmypdf input.pdf output.pdf --language eng+chi_sim

# 已有残缺 / 损坏文本层时,强制干净重做
ocrmypdf input.pdf output.pdf --force-ocr --deskew --language eng+chi_sim

上传 output.pdf,“该页看不到任何内容”这种回答就消失了。

Step 3:高质量结构化抽取转 Markdown

复杂表格、公式、多栏排版要用懂版面的抽取器,不能靠裸 pdftotext。下面这些工具产出的 Markdown 会保留表格结构和阅读顺序:

# Marker(CPU / GPU 都可)— 公式、版面还原都强
pip install marker-pdf
marker_single input.pdf --output_dir ./output --max_pages 300
# 输出 output/input/input.md

# 或者 Docling(IBM)— 输出干净的 Markdown/HTML,表格还原度业界最佳
pip install docling
docling input.pdf --to md --output ./output

上传生成的 Markdown,而不是 PDF。检索质量和表格准确度都会飞跃,因为模型现在索引的是干净的结构化文本,而不是一串乱掉的字符流。

什么时候用哪个抽取器(截至 2026 年 6 月):

工具最适合说明
ocrmypdf(Tesseract)扫描 / 纯图片页原地补文本层,仍是 PDF
Docling(IBM)密集表格、多栏论文自带 TableFormer 模型,表格准确度领先(2026 年基准约 88% F1);纯 Python 安装;输出 Markdown/HTML/JSON
Marker(marker-pdf数学公式、高保真版面输出 Markdown;GPU 快很多,CPU 也能跑;公式最强
MinerU复杂 / HTML 渲染表格、中英混排文档2026 年新出的开源选项,速度快,复杂表格处理好
pdfplumber定点抽单个表格转 CSV可脚本化,表格抽取精确
Adobe Acrobat OCR一次性、不想用命令行图形界面;纸质扫描 OCR 稳

如果是”从这些表格里答题”的 RAG 场景,Docling 是最稳的默认选项;公式或版面保真最重要时再上 Marker。这几个工具偶尔都会把多级标题判断错,所以长文档转完后先抽查一下章节顺序再信它。

Step 4:表格单独显式抽取

直接给 ChatGPT 的 prompt:

The document contains a table on page 12. Extract that table:
- Quote the exact title / caption
- Quote every column header in order
- Quote each data row verbatim, row by row
- Format as Markdown table

强制结构化抽取 → 模型不能再”压扁成 prose”。

Step 5:巨型 PDF 切成 30-50 页一段

如果怀疑是触了 200 万 token 索引上限(见上面”巨型 PDF”那条),就把文档切开,让每一段都被完整索引,检索时也少了互相干扰的片段:

# 按页数固定切
qpdf --split-pages=30 large.pdf part-%d.pdf

# 按章节切(如果有书签)
pdftk full.pdf cat 1-46 output ch1.pdf
pdftk full.pdf cat 47-92 output ch2.pdf

每段独立上传、独立查询。这样能保证尾部章节确实被索引,而不是超过 200 万 token 上限后被丢掉。

Step 6:加密 PDF 先解密

# 你有密码
qpdf --decrypt --password=YOURPASSWORD encrypted.pdf decrypted.pdf

上传 decrypted.pdf。

Step 7:含关键图表的页转图给 vision 看

抽取层抽不出图表 → 把那几页转 PNG / JPG 上传给 vision 读:

# pdftoppm(PDF → 图)
pdftoppm -r 200 -png mypdf.pdf page

# 输出 page-1.png, page-2.png, ...

把关键页的图传给 ChatGPT,让 vision 直接读图。比让它读坏抽取强。

怎么确认已经修好

  • 开新对话上传 OCR / Markdown 后的版本,问同一题,引用的原文 + 页码能在 PDF 里 Ctrl+F 找到 = 真修好。
  • 让它原文引第 50 页一句话,对比原始 PDF 那一句字一字对得上 = 抽取无损。
  • 让同事用相同 OCR / 转换流程跑一份再上传,结果一致 = 流程稳定。

如果还是没修好

  • 把 PDF 切到最小:保留出问题那 1-3 页,转 Markdown 上传,看深度能不能拉起来。
  • 换抽取工具:依次试 Marker、Docling、Adobe Acrobat,对比各自产出的 Markdown,上传最干净的那份。
  • 重要场景换平台。Claude(Opus 4.7 / Sonnet 4.6)在标准定价下就有 100 万 token 上下文,中等大小的 PDF 可以直接装进上下文,而不是藏在检索后面;Gemini 3.1 Pro 同样提供 100 万 token;Google 的 NotebookLM 专为带引用的文档问答而做。
  • 准备好原 PDF + 抽取后的 Markdown + 错误回答截图 + 期望内容,去 help.openai.com 提工单。

预防建议

  • 上传前永远做一次健全检查:让 ChatGPT “原文引第 3 页一句话”。引不出就先修抽取。
  • 优先用数字原生 PDF(直接从 Word / LaTeX / Pages 导出),少用”打印—扫描”链路。
  • 高 stakes 分析(财务、合规、合同)一律本地先转 Markdown 再上传,不要直接上传 PDF。
  • 表格 / 数字密集的页提前转 CSV / Markdown,分析准确度跨数量级提升。
  • 200 页只读一章 → 提前本地切出那一章,不要全传。

常见问题

怎么修 “No text could be extracted from this file”?

这个报错说明解析器没找到可用的文本层。按顺序两个快办法:(1) 用 Chrome 或 Edge 打开 PDF,用 Print -> Save as PDF 重存一份(Step 0)——这会重建一层干净文本层,常常立刻就好;(2) 如果是真扫描件,本地跑 ocrmypdf(Step 2)补一层真正的文本,再上传。两招都不行,文件多半是加密的(qpdf --is-encrypted)或已损坏。

明明那页有字,ChatGPT 为什么说没内容?

那一页几乎肯定是扫描进来的图片,没有文本层。ChatGPT 读的是抽出来的文本,不是像素,而且在 Free/Go/Plus/Pro 上它不会可靠地 OCR 扫描件。本地跑 ocrmypdf(Step 2)补上文本层再上传即可。

ChatGPT 能接受多大的 PDF?

单文件 512 MB,外加单文件 200 万 token 的索引上限(截至 2026 年 6 月)。一份 PDF 可能体积过关却超 token 上限,这时尾部会被悄悄丢掉。想索引稳,文件尽量控制在约 25 MB 以内,超长文档先切分。

ChatGPT 为什么忽略我 PDF 里的图表?

在 Free、Go、Plus、Pro 上,PDF 处理是纯文本的——嵌入的图片和图表根本不读。只有 ChatGPT Enterprise 的 “Visual Retrieval with PDFs” 功能才能在普通上传里读图表。消费档套餐想让它读某张图,就用 pdftoppm 把那页导成 PNG,当图片上传,让 vision 直接读(Step 7)。

PDF 看着没问题,为什么表格里的数字是错的?

PDF 表格只是画出来的线条加一堆散落的文本框。抽取器经常丢掉行列网格,把单元格压成一串连排,于是数值落进了错的列。本地用 Marker、Docling 或 pdfplumber 把表格转成 Markdown 或 CSV,上传这份而不是原 PDF。

大文件或扫描件是不是干脆换个工具更好?

重要文档的话,是的。Claude(Opus 4.7 / Sonnet 4.6)和 Gemini 3.1 Pro 都提供 100 万 token 上下文窗口,中等大小的文件能直接装进上下文,而不是藏在检索索引后面;NotebookLM 则专为带引用的文档问答而做。只要喂给 ChatGPT 的是干净的结构化文本,它本身没问题。

相关阅读

标签: #ChatGPT #ChatGPT 文件 #排查 #排查 #PDF 分析