name: pdf-processor description: 学术PDF处理:提取文字、判断语言、翻译(英文→中文)、生成200字纯中文概述。使用本地Ollama模型,不消耗线上API。适用于学术论文、研究报告等PDF文件的处理。当用户说"处理PDF"、"翻译论文"、"生成论文概述"时,或用户将PDF放入论文处理目录时使用。
处理学术论文PDF的完整工作流:文字提取、语言判断、翻译、概述生成。使用本地Ollama模型(qwen2.5:7b),成本为0元,适合处理大量学术文献。
核心功能: - 提取PDF全部文字(按页分隔) - 判断语言(中文/英文) - 提取和翻译论文标题(英文→中文) - 英文PDF分段翻译(每段2000字符) - 实时进度显示(显示当前段/总段数、百分比) - 断点续传(中断后可从断点继续) - 生成200字纯中文概述 - 自动文件组织和清理
python3 scripts/process_pdf.py <pdf_path> <output_base_dir>
示例:
# 处理英文PDF
python3 scripts/process_pdf.py \
~/Documents/论文处理/未处理/英文/2602.23362v1.pdf \
~/Documents/论文处理
# 处理中文PDF
python3 scripts/process_pdf.py \
~/Documents/论文处理/未处理/中文/test.pdf \
~/Documents/论文处理
PDF处理前需先创建目录:
~/Documents/论文处理/
├── 未处理/
│ ├── 中文/
│ └── 英文/
├── 处理中/
├── 已完成/
│ ├── 原文/
│ ├── 翻译/
│ └── 概述/
└── 索引/
1. PDF提取文字 → 保存到"处理中/文件名_提取.txt"
2. 提取和翻译论文标题(英文→中文)
3. 判断语言(中文/英文)
4. 如果是英文:
- 分段(每段2000字符)
- 逐段翻译(本地Ollama)
- **显示实时进度**(当前段/总段数 | 百分比 | 字符数)
- **保存进度**(处理中/文件名_progress.json)
- 合并翻译结果
- **删除进度文件**
5. 生成概述(200字纯中文,本地Ollama)
6. 保存翻译文件到"已完成/翻译/"
7. 保存概述文件到"已完成/概述/"(包含中英文标题)
8. 移动PDF到"已完成/原文/"
9. 删除"处理中/提取.txt"
详细说明见 workflow.md
对于45,873字符的PDF: - 分段数: 17段 - 每段字符数: 2,000-4,000 - 总翻译时间: 约8-17分钟
位置: 已完成/翻译/文件名_翻译.txt
格式:
# 论文翻译
**源文件**: 文件名.pdf
**处理时间**: YYYY-MM-DD HH:MM:SS
**翻译模型**: 本地Ollama (qwen2.5:7b)
**分段数**: N
## 📄 翻译内容
[翻译内容]
位置: 已完成/概述/文件名_概述.txt
格式:
# 论文概述
**源文件**: 文件名.pdf
**处理时间**: YYYY-MM-DD HH:MM:SS
**概述模型**: 本地Ollama (qwen2.5:7b)
## 📚 论文标题
**英文**: [论文英文标题]
**中文**: [论文中文标题]
## 📝 论文概述
[200字纯中文概述]
可独立运行或被其他脚本调用
generate_index.py: 索引生成脚本
性能特点
directory-structure.md: 目录结构和使用说明
错误: Connection refused
解决:
# 启动Ollama服务
ollama serve
错误: model 'qwen2.5:7b' not found
解决:
# 安装模型
ollama pull qwen2.5:7b
# 查看已安装模型
ollama list
错误: PDF文件不存在
检查: - 确认PDF路径正确 - 确认输出目录存在 - 确认有读写权限
可能原因: - 分段过大(超过4000字符) - 温度设置过高(当前0.3)
调整:
- 修改split_text()函数的max_length参数
- 修改translate_segment()的temperature选项
处理中/文件名_progress.json,完成后自动删除这个工具能很好地完成论文翻译和概述生成,使用本地模型完全不花钱,非常适合需要处理大量文献的学者。进度显示和断点续传功能很实用,处理大文档时不用担心中断。不过初次配置需要安装配置环境,对非技术用户稍有门槛。总体质量可靠,能有效解决学术论文处理的核心需求。