乐于分享
好东西不私藏

Token救星,PDF转Markdown每秒100页—OpenDataLoader PDF 小白安装使用指南

Token救星,PDF转Markdown每秒100页—OpenDataLoader PDF 小白安装使用指南

token救星,PDF转Markdown,每秒100页—OpenDataLoader PDF

手把手教你搭一条 PDF 自动变笔记的流水线

很多人手里有一堆 PDF。

论文、体检报告、行业资料、项目文档——

能看,但很难用。

想搜索,找不到。

想交给 AI 处理,读出来乱七八糟。

想放进 Obsidian 管理,不知道从哪里下手。

这篇文章,就是帮你把这个问题一次解决。

跟着走完,你会得到一条这样的流水线:

PDF 丢进去 → 自动转换 → Obsidian 笔记出来。


你需要准备什么?

三个工具,各司其职:

OpenDataLoader PDF — 负责把 PDF 变成 AI 读得懂的 Markdown 和 JSON。

Claude Code — 负责帮你把整个流程自动化,以后一条命令搞定。

Obsidian — 负责长期管理你的笔记,可搜索、可串联、可继续编辑。


第一步:确认你的电脑环境

在开始之前,先检查三件事。

检查 Java(OpenDataLoader PDF 需要 Java 11 以上)

打开 PowerShell,输入:

java -version

如果显示版本号是 11 或更高,就没问题。没有的话,去 Java 官网下载安装。

检查 Python(需要 3.10 以上)

输入:

python --version

显示 3.10 或更高版本,继续。

检查 Claude Code

claude --version

如果提示找不到命令,按照 Claude Code 官网的说明安装一下。


第二步:建好项目骨架

我们把项目放在 D 盘。

打开 PowerShell,逐行复制粘贴运

New-Item -ItemType Directory -Force -Path "D:\Projects\pdf-obsidian-pipeline"cd D:\Projects\pdf-obsidian-pipelineNew-Item -ItemType Directory -Force -Path "inbox"New-Item -ItemType Directory -Force -Path "output"New-Item -ItemType Directory -Force -Path "vault-drop"New-Item -ItemType Directory -Force -Path "scripts"New-Item -ItemType Directory -Force -Path ".claude\skills\pdf-ingest"

运行完之后,你的项目文件夹里会长这样:

pdf-obsidian-pipeline├─ inbox        ← 放原始 PDF├─ output       ← 放转换后的内容├─ vault-drop   ← 放整理好的 Obsidian 笔记├─ scripts      ← 放自动化脚本└─ .claude      ← 放 Claude Code 相关配置

逻辑很简单:PDF 从左边进,笔记从右边出。


第三步:安装 OpenDataLoader PDF

在项目目录里创建一个虚拟环境(避免影响电脑上其他 Python 项目):

python -m venv .venv

激活它:

.\.venv\Scripts\Activate.ps1

如果提示脚本被禁止运行,先执行这一行解除限制,再激活:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass.\.venv\Scripts\Activate.ps1

然后安装工具:

python -m pip install -U pippython -m pip install -U opendataloader-pdf

验证安装成功:

python -c "import opendataloader_pdf; print('安装成功')"

看到”安装成功”四个字,就可以继续了。


第四步:跑通第一份 PDF

把任意一份 PDF 放进 inbox/ 文件夹里,命名为 test.pdf

然后运行这条命令:

opendataloader-pdf .\inbox -o .\output -f markdown,json

这条命令的意思是:把 inbox 里的 PDF,转换成 Markdown 和 JSON,输出到 output 文件夹。

遇到报错怎么办?

Windows 下有时候终端会显示编码报错,但这不代表转换失败。

先去 output/ 文件夹看一眼,如果已经有 .md 和 .json 文件,说明转换其实成功了,报错只是终端显示的问题。

如果想直接屏蔽这个报错,在命令后面加 -q

opendataloader-pdf .\inbox -o .\output -f markdown,json -q

第五步:把 Markdown 整理成 Obsidian 笔记

PDF 转成 Markdown 之后,还差最后一步。

Obsidian 需要的笔记,不只是一个 .md 文件,还需要有标题、来源、标签这些信息,这样你以后才方便检索和管理。

在 scripts/ 文件夹里新建一个文件,命名为 prepare_obsidian.py,把下面的代码复制进去:

from pathlib import Pathfrom datetime import dateimport rePROJECT_ROOT = Path(__file__).resolve().parent.parentOUTPUT_DIR = PROJECT_ROOT / "output"VAULT_DIR = PROJECT_ROOT / "vault-drop"VAULT_DIR.mkdir(parents=True, exist_ok=True)def safe_name(name: str) -> str:    name = re.sub(r'[<>:"/\\|?*]'"_", name)    name = re.sub(r"\s+"" ", name).strip()    return namedef build_frontmatter(title: str, source_pdf: str) -> str:    today = date.today().isoformat()    return f"""---title: {title}source_pdf: {source_pdf}source_type: pdfprocessed_by: opendataloader-pdfcreated: {today}tags: [pdf, obsidian, imported]---"""md_files = sorted(OUTPUT_DIR.glob("*.md"))if not md_files:    print("未找到 Markdown 文件,请先确认 output/ 里有 .md 文件。")    raise SystemExit(1)for md_file in md_files:    title = safe_name(md_file.stem)    source_pdf = str((PROJECT_ROOT / "inbox" / f"{md_file.stem}.pdf").resolve())    content = md_file.read_text(encoding="utf-8", errors="ignore")    if content.startswith("---\n"):        final_text = content    else:        final_text = build_frontmatter(title, source_pdf) + content    out_file = VAULT_DIR / f"{title}.md"    out_file.write_text(final_text, encoding="utf-8")    print(f"已生成: {out_file}")print("处理完成。现在可以在 Obsidian 里打开 vault-drop 文件夹。")```保存之后,运行:```python .\scripts\prepare_obsidian.py```完成后,`vault-drop/` 里就会出现整理好的 Obsidian 笔记。---## 第六步:在 Obsidian 里打开打开 Obsidian,点击左下角 **Manage Vaults**,选择 **Open folder as vault**,找到并选中:```D:\Projects\pdf-obsidian-pipeline\vault-drop```就这样,你转换好的笔记立刻变成了一个可浏览、可搜索、可继续编辑的知识库。---## 第七步(可选):用 Claude Code 实现一键自动化前面六步,已经可以正常用了。但如果你想以后更省心,可以再多做这一步。在项目目录里启动 Claude Code:```cd D:\Projects\pdf-obsidian-pipelineclaude```然后让它帮你创建自动化脚本和 skill 文件。创建好之后,以后你只需要输入一条命令:```/pdf-ingest
保存之后,运行:
```
python .\scripts\prepare_obsidian.py
```

完成后,`vault-drop/` 里就会出现整理好的 Obsidian 笔记。

---

## 第六步:在 Obsidian 里打开

打开 Obsidian,点击左下角 **Manage Vaults**,选择 **Open folder as vault**,找到并选中:
```
D:\Projects\pdf-obsidian-pipeline\vault-drop
```

就这样,你转换好的笔记立刻变成了一个可浏览、可搜索、可继续编辑的知识库。

---

## 第七步(可选):用 Claude Code 实现一键自动化

前面六步,已经可以正常用了。

但如果你想以后更省心,可以再多做这一步。

在项目目录里启动 Claude Code:
```
cd D:\Projects\pdf-obsidian-pipeline
claude
```

然后让它帮你创建自动化脚本和 skill 文件。

创建好之后,以后你只需要输入一条命令:
```
/pdf-ingest

它会自动检查 inbox、运行转换、整理笔记、汇报结果。

从”记得做六步”,变成”记得输一个命令”。


日常使用,就这么简单

流程搭好之后,你每天的操作就三件事:

第一步: 把 PDF 放进 inbox/ 文件夹。

第二步: 运行 /pdf-ingest(或者手动跑脚本)。

第三步: 打开 Obsidian,笔记已经在了。


遇到复杂 PDF 怎么办?

这套方案的基础版,适合普通的数字 PDF。

如果你遇到下面这些情况,可以考虑开启 hybrid 模式:

扫描件 PDF、图片型 PDF、复杂表格、大量公式、中日文混排。

hybrid 模式更强,但需要额外配置,适合有需要的时候单独处理。


项目文件夹解决4个问题:

inbox/ — 放原始 PDF,这是起点。

output/ — 放解析后的 Markdown 和 JSON,这是中间层。

vault-drop/ — 放整理好的 Obsidian 笔记,这是终点。

scripts/ — 放自动化脚本,这是让流程跑起来的引擎。

简单说就这一句话:PDF 丢进去,笔记自动出来。

但细节里有一步,很多人会忽略。

PDF 转成 Markdown 之后,还差半步——它只是”多了一个文件”,还不是”一篇可管理的笔记”。

所以我给每篇 Markdown 自动加上了 YAML frontmatter:标题、来源、类型、创建日期、标签。

这一步,才是把”机器转换结果”升级成”人能长期使用的知识资产”的关键。


四、为什么最后还加了 Claude Code?

Claude Code 做的事,不是替代解析器,而是把一连串重复动作变成一个固定流程:

检查 inbox 有没有新 PDF → 运行解析 → 整理成笔记 → 汇报结果。

最后的目标,就是我只需要输入一个命令:

/pdf-ingest

别的,全交给系统。


这个项目价值在于你不用每次都想——

这个 PDF 怎么提取?要不要复制到 Word?怎么变成笔记?怎么放进 Obsidian?哪一步交给 AI?

你只需要记住一件事:

把 PDF 放进收件箱。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Token救星,PDF转Markdown每秒100页—OpenDataLoader PDF 小白安装使用指南

猜你喜欢

  • 暂无文章