Skip to main content

Humanities Doc Toolkit: AI-assisted PDF renaming/classification/sorting pipeline

Project description

Humanities Doc Toolkit(人文文献工具链)

Humanities Doc Toolkit 是一套面向人文学科研究与文献治理的命令行工具链,用于把“杂乱的 PDF/文档文件”整理为可检索、可复核、可持续维护的个人/团队资料库。

它包含三个核心工具,并提供一个统一的交互式主菜单入口:

  • Renamer:批量提取文献信息并重命名(支持人文常见命名范式;多线程;多密钥轮询)
  • Classifier:智能分类与归档(默认 dry-run;先生成清单,核对后再 apply 执行移动;强调可复核、低风险)
  • Sorter:按研究主题智能分拣(两轮筛选:文件名语义初筛 + 内容深度分析;默认 copy,降低误操作风险)

1. 适用场景

  • 研究生/学者:把下载目录里的大量 PDF 统一命名、分类、形成结构化资料库,为后续写作/综述/笔记做准备。
  • 课题组/图书馆/档案工作流:批量整理大规模文献,追求可审计、可复核、可批处理(日志与清单输出)。
  • 需要多模型/多密钥轮询的 AI 文献处理管线:通过多线程与多 Key 轮询提高吞吐,降低限流导致的失败率。

2. 工具概览(主菜单与三件套)

2.1 hdt(统一主菜单:推荐入口)

运行后会显示主菜单,选择 1/2/3/4/0 执行对应功能;每个功能结束后会返回主菜单。

首次运行会自动从 configs/ 复制示例配置到项目根目录生成:

  • global.yaml
  • renamer.yaml
  • classifier.yaml
  • sorter.yaml

你需要先编辑 global.yaml 填入 API Key,才能使用 AI 功能。

2.2 Renamer(批量重命名)

功能要点:

  • 扫描目录中的 PDF(默认只扫描 .pdf,可在配置中调整)
  • 提取指定页范围文本(默认 1–10 页,可配置)
  • 调用 AI 提取元信息(title/author/year/type/journal/publisher 等)
  • 按模板生成文件名,并按模式执行:
    • 分类模式:输出到“处理成功/处理失败/问题文件”等子目录(适合清洗下载目录)
    • 原地重命名模式:在原目录直接重命名(适合已整理目录的统一标准化)

适合场景:

  • 文献下载目录的清洗与标准化命名
  • 为后续 Zotero/Obsidian/向量库/检索系统提供稳定的文件命名与元信息

2.3 Classifier(安全归类:dry-run + apply)

这是一个强调“低风险与可复核”的分类器:

  • 默认 dry-run:只生成 JSON/TXT 清单与日志,不移动文件
  • 你核对清单后,再执行 apply:严格按清单中的 planned_to 路径执行移动

推荐工作流:

  1. dry-run 生成分类清单(JSON/TXT)
  2. 打开 JSON 检查每个文件的 planned_to 是否符合预期
  3. 确认无误后执行 apply 落盘

适合场景:

  • 重要资料库的归档(不允许误操作)
  • 团队协作中需要审计与复核的批处理流程

2.4 Sorter(研究主题智能分拣)

用于“按研究需求”从大库中筛出与主题高度相关的一部分文献:

  • 第一轮:基于文件名批量评估相关性(高吞吐、低成本)
  • 第二轮:基于内容预览进行深度分析(更精准)
  • 支持“仅第一轮快速筛选”模式,适合探索性研究

默认行为是 copy:把结果复制到新的输出文件夹,保留原库不动。

适合场景:

  • 写论文/开题/综述时,从大库中快速筛出“真正相关”的阅读集
  • 主题变动频繁时,快速构建多个主题子库

3. 安装与一键启动(推荐)

本项目要求 Python 3.10 或更高版本

3.1 Windows(推荐:双击一键启动)

  • 直接双击:run_windows.bat
  • 脚本会自动创建 .venv 并安装依赖,然后启动主菜单

失败排查:

  • 查看 run_windows.log
  • 常见原因:Python 未安装/版本过低/系统环境变量异常

3.2 macOS(推荐:Finder 双击启动)

  • 双击:run.command
  • 脚本会自动选择可用的 Python(3.10+),创建 .venv,安装依赖,然后启动主菜单

失败排查:

  • 查看 run_macos_launch.log
  • 若系统提示“无法打开/来源不明”,在系统设置 → 隐私与安全 中选择“仍要打开”
  • macOS(新手一键命令)

1)最推荐:在终端一键启动(无需理解任何 Python)

  1. 打开 终端(Terminal)
  2. 进入项目目录(把路径替换成你的项目所在位置):
cd "/path/to/humanities-doc-toolkit"
  1. 直接运行一键脚本:
bash run.command

说明:run.command 会写日志到 run_macos_launch.log,并自动创建/复用 .venv 安装依赖后启动主菜单 [16]。


2)如果提示“权限不足/不能执行”:一键修复再启动

cd "/path/to/humanities-doc-toolkit"
chmod +x run.command
bash run.command

3)如果提示 bash\r 或类似换行符问题:一键修复(常见于脚本从 Windows 拷贝过来)

cd "/path/to/humanities-doc-toolkit"
sed -i '' $'s/\r$//' run.command
sed -i '' $'s/\r$//' run.sh
bash run.command

4)之后再访达里双击run.command运行即可

3.3 Linux / WSL(推荐:终端运行)

进入项目根目录后运行:

bash run.sh

WSL 注意事项:

  • /mnt/c/mnt/d 访问 Windows 挂载目录时,可能遇到权限或换行符问题
  • 建议总是用 bash run.sh(不依赖可执行位),并确保脚本是 LF 换行

4. 配置文件说明(必须先配置)

4.1 配置文件总览

  • global.yaml:全局配置(AI 服务、密钥、默认服务、超时等),三个工具共享
  • renamer.yaml / classifier.yaml / sorter.yaml:各工具差异化策略配置(命名模板、分类规则、分拣阈值等)

安全提示:

  • 不要在仓库提交真实 global.yaml(包含密钥)
  • 建议仅提交 configs/*.example.yaml 作为模板

4.2 global.yaml:AI 服务与密钥

你可以配置多个服务(如 OpenAI-compatible、Claude、Gemini 等),并为每个服务设置多把密钥。一般建议:

  • 日常使用:只启用一个主力服务 + 多把 key
  • 工业/批处理:启用多个服务或多把 key,以降低限流风险

常用可调项:

  • 默认服务选择
  • 请求超时
  • 模型名称与输出 token 上限
  • temperature(越低越稳定)

4.3 renamer.yaml:用户可自定义项(重点)

  • 文本提取页范围:起始页/结束页
  • prompt 截断长度:控制发送给模型的最大字符数(影响成本与准确度)
  • 最大线程数:线程数会结合可用 key 数量进行限制(key 不足时会自动降线程)
  • 命名模板:支持按文档类型(book/paper/others/unknown 等)使用不同模板
  • 语言策略
    • keep_original:保留原文
    • translate:把指定字段翻译到目标语言
      注意:作者字段不翻译(避免引用不一致)

4.4 classifier.yaml:用户可自定义项(重点)

  • 分类模式:预设 / 动态 / 混合(推荐混合)
  • 预设分类字典:可按你的学科与研究方向扩充(中文/英文关键词混合)
  • 置信度阈值:低于阈值默认不移动,并记录为“低置信度”
  • 多线程:可配置线程数;线程越高吞吐越大,但也更容易触发限流
  • PDF 提取引擎:可选择自动/指定引擎;自动模式会尝试更快更稳的引擎并在失败时回退
  • 备份开关:重要资料库建议开启备份

4.5 sorter.yaml:用户可自定义项(重点)

  • 筛选模式:fast_first_round / balanced / precise / broad(影响阈值、批大小、是否跑第二轮)
  • 阈值:第一轮更宽松用于召回,第二轮更严格用于精度
  • 线程数:可运行时输入;也可配置默认值
  • 输出行为:默认 copy;如需 move 建议在充分验证后再启用
  • 扫描格式:默认支持多种格式;若某些格式暂不需要,建议从列表删除以提升稳定性与速度

5. 多线程与大规模处理(工程/工业级建议)

本项目支持多线程与多密钥轮询,适合处理大量文献,但需要正确配置以获得稳定吞吐。

5.1 线程数与 API Key 数量

经验原则:

  • 如果 AI 服务有限流,线程数过高会导致大量失败、重试与限流
  • 建议线程数与可用 key 数量保持合理比例:key 越多,吞吐越高;key 少时应降低线程数以提升稳定性

5.2 大规模任务建议

  • 先用小样本目录验证命名/分类/分拣策略,再对全库执行
  • Classifier 强烈建议先 dry-run 再 apply
  • 对于重要资料库,开启备份,并把 output/backup 放在空间充足的磁盘上
  • 长任务建议在稳定网络环境运行,必要时使用固定代理或企业网络出口

6. 常见问题(FAQ)

6.1 运行脚本后没有反应/闪退

  • Windows:查看 run_windows.log
  • macOS:查看 run_macos_launch.log,或在终端执行 bash run.command
  • Linux/WSL:使用 bash run.sh 并查看 run_unix.log

6.2 AI 服务不可用/一直失败

请检查 global.yaml

  • 服务是否启用
  • 是否填入有效 key
  • base_url / model 是否正确
  • 网络是否可访问 API

7. 开发与移植建议

7.1 作为 Python 包安装(适合开发者/自动化)

在项目根目录:

pip install -e .

安装后可用命令:

  • hdt
  • hdt-renamer
  • hdt-classifier
  • hdt-classifier-apply --log <classification_details_*.json>
  • hdt-sorter

7.2 面向未来扩展的建议(路线图)

本项目定位为“文献治理基础设施”,后续扩展方向包括:

  • PDF/图像 → Markdown:接入视觉大模型或本地 OCR/版面分析,对扫描件/古籍等难识别材料输出结构化 Markdown,并保留可校对中间产物。
  • Web UI:提供任务创建、进度与日志查看、清单审核(尤其适合 Classifier 的 dry-run 审核流程)。
  • 自然语言入口:用自然语言描述任务,由解析组件将意图转换为可执行的命令与配置,并生成可复核的执行计划,实现“自然语言操控本机文件”的安全闭环。

8. 开源规范(建议遵守)

  • 仓库只保留 configs/*.example.yaml 模板;真实 global.yaml 等配置只存在于本地
  • 不提交运行产物:.venv/logs/output/classified/backup/*.log
  • 大规模任务前先在小样本验证,再对全库运行

9. 许可证

本项目使用 MIT License


10. 基本命令自查表(Windows / macOS / Linux/WSL)

这一节用于“最小化排错”:当你遇到启动失败、依赖缺失、版本不对时,按顺序执行即可定位问题。

10.1 Windows(PowerShell 或 CMD)

检查 Python 与 Launcher:

py -3.10 --version
python --version

进入项目并启动(推荐脚本):

cd /d D:\path\to\humanities-doc-toolkit
run_windows.bat

手动启动(脚本失败时备用):

py -3.10 -m venv .venv
.venv\Scripts\python.exe -m pip install -U pip setuptools wheel
.venv\Scripts\python.exe -m pip install -e .
.venv\Scripts\python.exe -m hdt.cli

查看日志:

type run_windows.log

10.2 macOS(Terminal)

检查 Python(确保 ≥3.10):

python3 --version
python3.12 --version

运行可点击脚本(或在终端直接跑):

cd /path/to/humanities-doc-toolkit
bash run.command

手动启动(脚本失败时备用):

python3.12 -m venv .venv
.venv/bin/python -m pip install -U pip setuptools wheel
.venv/bin/python -m pip install -e .
.venv/bin/python -m hdt.cli

查看日志:

tail -n 200 run_macos_launch.log

10.3 Linux / WSL(bash)

检查 Python(确保 ≥3.10):

python3 --version

推荐启动:

cd /path/to/humanities-doc-toolkit
bash run.sh

WSL 从 Windows 盘进入示例:

cd /mnt/d/humanities-doc-toolkit
bash run.sh

若脚本因换行符报错(出现 bash\r),修复后再跑:

sed -i 's/\r$//' run.sh
bash run.sh

查看日志:

tail -n 200 run_unix.log

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

humanities_doc_toolkit-0.2.0.tar.gz (94.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

humanities_doc_toolkit-0.2.0-py3-none-any.whl (105.6 kB view details)

Uploaded Python 3

File details

Details for the file humanities_doc_toolkit-0.2.0.tar.gz.

File metadata

  • Download URL: humanities_doc_toolkit-0.2.0.tar.gz
  • Upload date:
  • Size: 94.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for humanities_doc_toolkit-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2a148c2059be1f86533846d9af5a0dc8dc05c14c5608d220a450a432d5e1c66c
MD5 a61d95b6bdefb5a41039f24709070d85
BLAKE2b-256 55205781d466155e1cdba4697065d28fcac1ad3d0bcb888e85301c8e31b2b82b

See more details on using hashes here.

File details

Details for the file humanities_doc_toolkit-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for humanities_doc_toolkit-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3a443730222c355445ea8116b1c960660fb044f2e00e14845105e8b88dbe77c1
MD5 deb64fa077d138113ea17c4cd02b1685
BLAKE2b-256 a85da3b64ec049ad319defa4314612f5bbf79102458e734c96b8b007b027df1d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page