PDF论文处理器 - 功能总结
📋 项目概述
PDF论文处理器是一个专门为网安科研论文设计的PDF文本分割工具,支持生成Dify知识库可直接使用的高质量数据块。
✅ 已实现的核心功能
1. 智能文本提取
- ✅ 使用PyMuPDF提取PDF文本
- ✅ 识别论文章节结构(Abstract, Introduction, Method等)
- ✅ 清洗和规范化文本内容
- ✅ 提取论文标题和元数据
2. 语义感知分割
- ✅ 基于论文章节结构进行智能分割
- ✅ 在句子边界处保持语义完整性
- ✅ 支持自定义chunk大小和重叠率
- ✅ 避免在单词中间切分
3. 元数据管理
- ✅ 自动提取论文类型(从文件夹路径)
- ✅ 自动提取年份(从文件夹路径或文件名)
- ✅ 自动识别章节
- ✅ 统计字符数
- ✅ 记录来源文件
- ✅ 提取论文标题
4. CSV输出模式
- ✅ Merged模式(推荐):所有信息合并到content列
- ✅ Standard模式:三列独立格式(content, metadata, source)
- ✅ 自动生成统计信息
- ✅ 支持JSON和CSV两种输出格式
5. Dify分隔符功能
- ✅ 默认分隔符:
- ✅ 确保chunk边界准确
- ✅ 保持元数据完整性
- ✅ 支持自定义分隔符
- ✅ 可选择启用/禁用
🔧 技术改进
1. 元数据精简
精简前 :包含chunk_id等冗余字段 精简后:仅保留核心检索字段
- category
- category_cn
- year
- section
- char_count
- source_file
- title
2. CSV模式优化
Merged模式:
- 所有信息合并到content列
- 分隔符在最末尾
- Dify可以准确分段
- 元数据不会丢失
Standard模式:
- 三列独立格式
- metadata和source列为空(在merged模式下)
3. 统计功能增强
- 支持从merged模式的CSV中提取元数据进行统计
- 按类型、年份、章节统计
- 生成详细的统计报告
📁 项目结构
. ├── process_papers.py # 主执行脚本 ├── requirements_pdf_processor.txt # 依赖包列表 ├── COMPLETE_GUIDE.md # 完整使用指南 ├── CSV_MODE_GUIDE.md # CSV模式详细说明 ├── QUICK_REFERENCE.md # 快速参考卡片 ├── README_PDF_PROCESSOR.md # 项目详细说明 ├── DIFY_SEPARATOR_GUIDE.md # Dify分隔符详细说明 ├── DIFY_SEPARATOR_FEATURE.md # Dify分隔符功能说明 ├── DIFY_SEPARATOR_GUIDE_APPENDIX.md # CSV模式附录 ├── diagnose_pdfs.py # PDF诊断工具 ├── organize_papers.py # 文件组织工具 ├── test_pdf_extraction.py # PDF提取测试 ├── test_processor.py # 处理器测试 ├── test_csv_modes.py # CSV模式测试 ├── test_dify_separator.py # 分隔符测试 ├── test_complete_workflow.py # 完整工作流测试 └── src/ └── pdf_processor/ ├── __init__.py # 模块初始化 ├── config.py # 配置文件 ├── pdf_extractor.py # PDF文本提取器 ├── chunker.py # 语义分割器 ├── metadata_manager.py # 元数据管理器 ├── output_manager.py # 输出管理器 └── processor.py # 主处理器
🎯 使用场景
1. 研究现状总结
python process_papers.py \ --input ./papers \ --chunk-size 800 \ --overlap 200 \ --csv-mode merged
2. 对比查新
python process_papers.py \ --input ./papers \ --chunk-size 600 \ --overlap 150 \ --csv-mode merged
3. 创新点挖掘
python process_papers.py \ --input ./papers \ --chunk-size 700 \ --overlap 180 \ --csv-mode merged
4. 领域展望
python process_papers.py \ --input ./papers \ --chunk-size 800 \ --overlap 200 \ --csv-mode merged
📊 输出示例
Merged模式CSV格式
content,metadata,source "This paper presents a novel approach for vulnerability detection using deep learning. [Metadata: {""category"": ""vulnerability_mining"", ""category_cn"": ""漏洞挖掘"", ""year"": ""2024"", ""section"": ""Abstract"", ""char_count"": 135, ""source_file"": ""paper.pdf"", ""title"": ""Novel Approach""}] [Source: paper.pdf]",,
统计信息JSON格式
{ "total_chunks": 12, "total_chars": 3540, "avg_chunk_size": 295, "min_chunk_size": 248, "max_chunk_size": 357, "by_category": { "vulnerability_mining": 6, "llm_security": 3, "other": 3 }, "by_year": { "2024": 6, "2023": 3, "2022": 3 }, "by_section": { "Abstract": 4, "Introduction": 4, "Method": 4 } }
🏷️ Dify导入设置
推荐配置
- CSV模式:Merged(默认)
- 分段标识符:
- 索引模式:高质量
- Embedding模型:选择支持中英文的模型
导入步骤
- 登录Dify Cloud
- 创建或进入知识库
- 上传CSV文件
- 设置分段标识符
- 开始处理
🧪 测试工具
1. PDF诊断
python diagnose_pdfs.py -i ./papers -s 10
2. 文件组织
python organize_papers.py -i ./papers -o ./papers_english
3. CSV模式测试
python test_csv_modes.py
4. 完整工作流测试
python test_complete_workflow.py
✨ 核心优势
1. 准确分段
- 基于章节结构的语义分割
- 分隔符在最末尾,Dify可以准确切割
2. 元数据完整
- 精简但完整的元数据
- 在merged模式下不会丢失
3. 灵活配置
- 支持多种CSV模式
- 支持自定义分隔符
- 支持自定义chunk大小和重叠率
4. 易于验证
- 完整的测试工具链
- 详细的统计信息
- 清晰的文档
📝 推荐配置
python process_papers.py \ --input ./papers \ --output ./output \ --chunk-size 700 \ --overlap 150 \ --csv-mode merged \ --add-separator
🔗 相关文档
COMPLETE_GUIDE.md- 完整使用指南CSV_MODE_GUIDE.md- CSV模式详细说明DIFY_SEPARATOR_GUIDE.md- Dify分隔符详细说明QUICK_REFERENCE.md- 快速参考卡片README_PDF_PROCESSOR.md- 项目详细说明
🎉 总结
PDF论文处理器已经完成了所有核心功能的实现和测试,支持:
- ✅ 智能文本提取和语义分割
- ✅ 元数据自动提取和管理
- ✅ 两种CSV输出模式(Merged和Standard)
- ✅ Dify分隔符功能,确保准确分段
- ✅ 完整的测试工具和文档
该工具可以直接用于生产环境,处理网安科研论文并生成Dify知识库数据。