Gemini 1.5 Pro 实战:一键摘要 500 页 PDF 与长视频(附 Python 代码
import ostext = """""分块处理超长文本,避免超过 200 万 token 限制"""
·
Gemini 1.5 Pro 支持 200 万 token 上下文,可一次性处理整本《三体》三部曲。本文将介绍如何用 Gemini API 实现超长文档摘要、多轮对话问答,并提供可直接运行的 Python 脚本,适合处理论文、财报、讲座视频等场景。
1. 为什么选择 Gemini 1.5 Pro
| 特性 | Gemini 1.5 Pro | ChatGPT (GPT-4o) | Claude 3.7 |
|---|---|---|---|
| 上下文长度 | 200 万 token | 128k token | 200k token |
| 原生多模态 | ✅ 视频/音频/图像 | ✅ 图像 | ❌ 仅图像 |
| 免费额度 | 60 次/分钟 | 无 | 无 |
| 价格(输入) | $2.5/百万 token | $5/百万 token | $3/百万 token |
Gemini 的长上下文在处理整本书、整场会议录像时优势明显。
2. 准备工作
2.1 获取 Gemini API Key
访问 Google AI Studio,需要海外支付方式。若无法自行申请,可使用已验证的 API Key(笔者来源见文末)。
2.2 安装依赖
pip install google-generativeai pypdf ffmpeg-python
3. 核心代码:PDF 全本摘要
3.1 脚本 pdf_summarizer.py
import google.generativeai as genai
import os
from pypdf import PdfReader
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
def read_pdf(file_path: str) -> str:
reader = PdfReader(file_path)
text = ""
for page in reader.pages:
text += page.extract_text()
return text
def summarize_long_text(text: str, chunk_size: int = 50000) -> str:
"""分块处理超长文本,避免超过 200 万 token 限制"""
model = genai.GenerativeModel('gemini-1.5-pro')
chunks = [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
summaries = []
for i, chunk in enumerate(chunks):
print(f"Summarizing chunk {i+1}/{len(chunks)}...")
response = model.generate_content(f"请用 300 字以内总结以下内容:\n{chunk}")
summaries.append(response.text)
# 最终汇总
final = model.generate_content("将以下多个摘要合并成一篇连贯的总结:\n" + "\n".join(summaries))
return final.text
if __name__ == "__main__":
pdf_path = input("请输入 PDF 路径: ")
full_text = read_pdf(pdf_path)
print(f"总字符数: {len(full_text)}")
summary = summarize_long_text(full_text)
with open("summary.txt", "w") as f:
f.write(summary)
print("摘要已保存至 summary.txt")
3.2 运行示例
export GEMINI_API_KEY="YOUR_KEY"
python pdf_summarizer.py
输出摘要片段(以 500 页技术文档为例):
本文档主要介绍了 Kubernetes 的核心组件:API Server 负责所有 REST 请求,etcd 存储集群状态,Scheduler 负责 Pod 调度,Controller Manager 运行各种控制器。第 5-10 章详细讲解了 Deployment、Service、Ingress 的配置方法。最佳实践部分强调资源限制、健康检查、命名空间隔离。
4. 进阶:分析 YouTube 视频并生成时间轴摘要
Gemini 可直接处理上传的视频文件(MP4),或通过音频轨道分析。
4.1 脚本 video_summarizer.py
import google.generativeai as genai
import yt_dlp
def download_youtube_audio(url: str, output: str = "audio.mp3"):
ydl_opts = {
'format': 'bestaudio/best',
'outtmpl': output.replace('.mp3', ''),
'postprocessors': [{'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3'}]
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download([url])
def analyze_video(audio_path: str) -> str:
model = genai.GenerativeModel('gemini-1.5-pro')
video_file = genai.upload_file(audio_path, display_name="lecture")
response = model.generate_content([
video_file,
"请按时间顺序总结这段讲座的关键点,每个要点标注出现的时间戳(格式 mm:ss)。"
])
return response.text
if __name__ == "__main__":
video_url = input("YouTube URL: ")
download_youtube_audio(video_url)
summary = analyze_video("audio.mp3")
print(summary)
4.2 输出示例
- 0:00-3:15 介绍 Transformer 基础架构
- 3:16-8:40 详解 Attention 计算公式 QK^T/√d
- 8:41-15:20 多头注意力机制的作用
- 15:21-22:00 实际代码演示(PyTorch 实现)
5. 成本对比
| 文档长度 | 页数(PDF) | Token 估算 | Gemini 成本 | GPT-4o 成本 |
|---|---|---|---|---|
| 短篇论文 | 30 页 | ~30k | $0.075 | $0.15 |
| 中篇小说 | 200 页 | ~180k | $0.45 | $0.90 |
| 500 页技术书 | 500 页 | ~450k | $1.125 | $2.25(需截断) |
对于超过 128k token 的文档,只有 Gemini 能一次性处理。
6. 注意事项与最佳实践
- 速率限制:免费版每分钟 60 次请求,付费版可提升。
- 文件上传:视频最大 1GB,音频最大 20MB。超过请先压缩。
- 中文支持:Gemini 对中文理解良好,但 prompt 用英文时结果可能更结构化。
- 错误处理:遇到
429 RESOURCE_EXHAUSTED等待几秒后重试。
7. 常见问题
| 问题 | 解决方法 |
|---|---|
pypdf 无法提取中文 |
使用 pdfplumber 代替 |
| 视频上传超时 | 使用音频轨道(提取 mp3)减少大小 |
| 摘要内容遗漏关键信息 | 在 prompt 中强调“保留所有技术参数和数字” |
| API Key 无效 | 检查是否已在 Google Cloud 启用 Generative Language API |
8. 参考来源
文中使用的 Gemini API Key 来自 gpt108.com(该渠道提供 ChatGPT Plus、Claude Pro、Cursor Pro、Gemini Advanced 等 AI 服务的账号及 API 充值)。笔者团队已稳定使用 3 个月,仅作技术方案记录。
完整脚本及示例文件已上传至 GitHub Gist,评论区获取链接。
更多推荐

所有评论(0)