5 月 14 日,不少用户发现 DeepSeek 的"专家模式"里文件上传按钮已经灰掉,官方提示只有一句——"资源紧张,不支持文件上传"。此前专家模式因为上下文窗口更长、推理链更深,一直是处理长 PDF、合同、论文的首选入口。现在这个能力突然缩水,快速模式还能上传图片做 OCR,但文本层面的深度推理没了载体。
这不是第一次出现资源紧张的情况,DeepSeek 在用户爆发式增长阶段多次限流。但这次直接砍掉专家模式的文件上传,影响面更广——依赖它做批量文档分析、代码审查、长报告摘要的工作流全被打断。
快速模式还能做什么
快速模式目前仍支持上传图片和文件,但仅做图片识别级别的处理,不走深度推理链。换句话说:
- 上传一张截图,它能 OCR 出文字并简单回答问题
- 上传一份 50 页 PDF,它不会逐段推理、不会做跨页引用分析
对于只需要"把图片里文字读出来"的场景,快速模式够用。但涉及逻辑判断、多段落交叉对比、结构化提取的任务,快速模式的输出质量明显下降。
手动绕过:自己拆文档再喂给专家模式
文件上传被禁,但专家模式的纯文本对话仍然可用。思路很直接:自己把文档内容提取出来,分段粘贴进对话,让专家模式基于文本做推理。
核心步骤:
- 用工具把 PDF/Word 转成纯文本
- 按逻辑段落切分,每段不超过模型上下文的安全阈值
- 分批送入专家模式,必要时在每批开头加上上下文衔接提示
下面给一个可运行的 Python 脚本,用 pdfplumber 提取 PDF 文本并按字符数切分,输出可以直接粘贴到 DeepSeek 对话框的文本块。
# pdf_chunk_for_deepseek.py
# 依赖:pip install pdfplumber
import pdfplumber
import textwrap
PDF_PATH = "your_document.pdf" # ← 改成你的文件路径
CHUNK_SIZE = 3000 # 每块字符数,留足推理空间
OVERLAP = 200 # 相邻块重叠字符,防止断句丢失上下文
def extract_text(pdf_path: str) -> str:
"""从 PDF 提取全部文本,按页拼接"""
full_text = ""
with pdfplumber.open(pdf_path) as pdf:
for i, page in enumerate(pdf.pages):
page_text = page.extract_text() or ""
full_text += f"\n--- 第 {i+1} 页 ---\n{page_text}"
return full_text
def chunk_text(text: str, size: int, overlap: int) -> list[str]:
"""按字符数切分,相邻块有重叠"""
chunks = []
start = 0
while start < len(text):
end = start + size
chunk = text[start:end]
chunks.append(chunk)
start = end - overlap # 回退 overlap 字符
return chunks
def main():
raw = extract_text(PDF_PATH)
chunks = chunk_text(raw, CHUNK_SIZE, OVERLAP)
for idx, chunk in enumerate(chunks, 1):
header = f"【文档片段 {idx}/{len(chunks)}】以下是文档的第 {idx} 段内容:\n"
print(header + chunk)
print("\n" + "=" * 60 + "\n")
print(f"共提取 {len(raw)} 字符,切分为 {len(chunks)} 块")
print("将每块粘贴到 DeepSeek 专家模式对话中即可逐段分析")
if __name__ == "__main__":
main()
运行方式:
pip install pdfplumber
python pdf_chunk_for_deepseek.py
脚本会逐块打印文本,每块带编号和页码标记。你只需要依次复制粘贴到 DeepSeek 专家模式的对话框里。如果文档特别长,建议在粘贴第 N 块时加一句引导:
"前面我已经提供了文档的第 1 到 N-1 段,现在继续提供第 N 段,请结合前文上下文进行分析。"
这样能弥补手动分段造成的上下文断裂。
如果想更自动化:用 DeepSeek API 直接送文本
DeepSeek 的 API(deepseek-chat / deepseek-reasoner)不受网页端文件上传限制——你本来就是把文本放在 messages 里发过去的。写一个简单的调用脚本:
# deepseek_api_chunk.py
# 依赖:pip install openai
from openai import OpenAI
import pdfplumber
API_KEY = "sk-xxx" # ← 替换成你的 DeepSeek API Key
PDF_PATH = "your_document.pdf"
CHUNK_SIZE = 3000
client = OpenAI(api_key=API_KEY, base_url="https://api.deepseek.com")
def extract_text(pdf_path):
with pdfplumber.open(pdf_path) as pdf:
return "\n".join(p.extract_text() or "" for p in pdf.pages)
def ask_deepseek(chunks: list[str], question: str):
"""逐块送入,最后一块提问"""
messages = []
for i, chunk in enumerate(chunks, 1):
messages.append({
"role": "user",
"content": f"文档片段 {i}/{len(chunks)}:\n{chunk}"
})
messages.append({
"role": "assistant",
"content": f"已收到片段 {i},请继续。"
})
# 最后一条 user 消息替换为真正的提问
messages[-2]["content"] = (
f"文档片段 {len(chunks)}/{len(chunks)}:\n{chunks[-1]}\n\n"
f"基于以上全部文档内容,请回答:{question}"
)
# 移除最后一条 assistant 占位
messages.pop()
resp = client.chat.completions.create(
model="deepseek-reasoner", # 专家模式对应 reasoner
messages=messages,
)
return resp.choices[0].message.content
raw = extract_text(PDF_PATH)
chunks = [raw[i:i+CHUNK_SIZE] for i in range(0, len(raw), CHUNK_SIZE)]
answer = ask_deepseek(chunks, "请总结这份文档的核心结论,并列出 3 个关键风险点")
print(answer)
注意:
deepseek-reasoner的 API 调用费用高于deepseek-chat,且推理耗时更长。如果文档超过 10 万字符,建议先用deepseek-chat做粗筛,再对关键段落用 reasoner 深挖。
当前限制与应对清单
| 问题 | 现状 | 建议 |
|---|---|---|
| 专家模式文件上传 | 已禁用,提示资源紧张 | 手动提取文本粘贴,或走 API |
| 快速模式文件上传 | 可用,但仅图片识别级别 | 只用于 OCR / 简单问答 |
| API 稳定性 | 偶有限流,但文本通道正常 | 加 retry 逻辑,控制并发 |
| 长文档上下文 | 手动分段会丢失跨段引用 | 每段加衔接提示,或用 overlap 切分 |
资源紧张不是永久状态,DeepSeek 之前也多次在扩容后恢复功能。但在恢复之前,依赖文件上传的生产流程需要有个 fallback。上面的脚本和 API 方案就是目前最直接的替代路径——自己掌控文本提取和分段,把"文件上传"这个环节从平台侧挪到本地。