PDF导入Obsidian,变成能编辑的笔记

作者 pdftomd.tools 团队 · 更新于 · 阅读约 5 分钟

把 PDF 导入 Obsidian 有两种做法。一种是把文件放进库(Vault),用 ![[文件.pdf]] 嵌入来阅读;另一种是先转成 Markdown,比如用我们的 Obsidian 专用 PDF 转换器,得到一篇可以编辑、搜索、双链的笔记。大多数人两种都用:笔记用来思考,PDF 留作原始出处。

插图:一份 PDF 变成一小张由笔记卡片互相链接组成的关系图

简短回答:嵌入还是转换

PDF 能导入 Obsidian 吗?能。PDF 是 Obsidian 支持的文件格式之一,应用会用内置阅读器打开它。但放进库里的 PDF 依然只是 PDF:里面的文字不属于你的笔记,不能编辑,想链接某个观点也只能链接到整个文件。所以“PDF导入Obsidian怎么做成笔记”有两个答案:

  • 嵌入:适合主要用来阅读的文档,比如合同、说明书、幻灯片,凡是版式重要的东西。
  • 转换:适合要处理内容的时候,比如引用、改写、把某一节链接到其他笔记,或者和库里其他笔记一起搜索。

拿不准就先嵌入,以后再转换。不会有任何损失,PDF 无论如何都还在库里。很多人是在发现自己正对着阅读器一个字一个字抄引文时,才决定开始转换的。

插图:左边是嵌入了 PDF 阅读器的笔记,右边是带光标、文字可编辑的笔记
嵌入是把页面放进笔记里展示;转换是让页面本身变成笔记。

嵌入 PDF,以及它的局限

把 PDF 拖进一篇打开的笔记,Obsidian 会把它复制到附件文件夹并嵌入。你也可以手动输入嵌入语法。嵌入语法在 # 后面可以加参数:

![[Annual report.pdf]]
![[Annual report.pdf#page=3]]
![[Annual report.pdf#page=3&height=400]]
整个文件、从第 3 页打开,以及在 400 像素高的阅读器里显示第 3 页。

嵌入 PDF 是把原文放在自己文字旁边最快的办法。桌面端的阅读器有页面缩略图、文件目录和文内搜索,还能从缩略图复制某一页的链接,贴到任何笔记里。局限写在 Obsidian 自己的 PDF 帮助页上:

“Obsidian 不支持给 PDF 添加批注或高亮。”
Obsidian Help, PDFs(译文)

移动端也不能在 PDF 里搜索,不能从中复制引文。想要高亮、引用、链接到具体观点,就需要文字,也就是需要转换。

通过转换,把 PDF 导入 Obsidian 变成笔记

要把 PDF 导入 Obsidian 变成可编辑的笔记,先把它转成 Markdown。只要 PDF 带文字层,我们的转换器就会在浏览器里读取文件,重建标题、列表和表格,并去掉重复的页眉和页码。下载 .md 文件,移进库里,它就会像其他笔记一样出现在文件列表中。

截图:导入 Obsidian 之前先转换 PDF,转换器里显示一份 5 页指南的 Markdown
截图:在我们的 Obsidian 页面上转换的 5 页指南,可以直接下载成笔记。

开始建链接之前,先检查三件事。标题要形成清晰的大纲,因为它们就是你以后的链接目标。每个表格只能有一行表头。扫描版 PDF 转出来是空的,因为我们的工具不做 OCR;这类文件就保持嵌入,或者先用 OCR 工具处理。完整的检查清单见 格式保留指南。

导入后花几分钟整理一下很值得。把笔记标题改短,因为以后你要在 [[ ]] 里输入它。把层级不对的标题改过来,大纲视图和标题链接都依赖层级。删掉重复的文字,比如每章末尾的版权声明。等各节都有了标题,再把作者写的“见第 4 节”这类交叉引用改成真正的链接。

模板:Front Matter、出处链接、标签

给每篇转换来的笔记顶部加上同一组 属性。Obsidian 会读取两行 --- 之间的 YAML 并显示成字段,tags 和 aliases 是内置属性。最重要的是 source 链接,它把笔记和原文件连在一起。

---
source: "[[Annual report.pdf]]"
author:
year:
aliases:
tags:
  - literature
  - to-read
---
粘贴到笔记最上方。属性里的链接要加引号。

这就是典型的文献笔记:一份资料一篇笔记,在作者的每个标题下面写自己的想法。标签保持统一,Obsidian 的搜索和 Bases 视图就能按作者、年份或状态列出所有资料。如果你每周都要把 PDF 导入 Obsidian,固定一个模板,最后得到的是一百份能检索的资料,而不是一百个结构各异的文件。

把长 PDF 拆成互相链接的笔记

一份 40 页的报告放在一篇笔记里,很难链接。按小节标题拆开,就得到每节一篇笔记,外加一篇列出它们的索引笔记。每一部分里的标题链接照样能用([[小节笔记#小标题]]),关系图也能显示你自己的笔记和哪些小节有关。

插图:一篇很长的 Markdown 笔记被切成一篇索引笔记,链接到四篇小节笔记
一个转换后的文件变成一篇索引笔记,加上每节一篇笔记。

我们写了一个只用 Python 标准库的小脚本来做这件事。它在标题下面最高的那一级小节处拆分,因为转换器不一定用 ## 表示小节(我们的转换器根据字号,给其中一个测试文件用了 ###)。每篇小节笔记都带同样的属性,外加一个返回索引的链接:

import re, pathlib

def split_into_notes(md, title, pdf_name, out):
    out.mkdir(parents=True, exist_ok=True)
    levels = [len(h) for h in re.findall(r"(?m)^(#{2,6}) ", md)]
    if not levels:
        return []
    parts = re.split(rf"(?m)^{'#' * min(levels)} +", md)
    intro, names = parts[0], []
    for sec in parts[1:]:
        heading, _, body = sec.partition("\n")
        name = " ".join(re.sub(r'[\\/:*?"<>|#^\[\]]', " ", heading).split())[:80]
        names.append(name)
        (out / f"{name}.md").write_text(
            f'---\nsource: "[[{pdf_name}]]"\nparent: "[[{title}]]"\ntags: [literature]\n---\n'
            f"# {heading.strip()}\n{body.strip()}\n", encoding="utf-8")
    links = "\n".join(f"- [[{n}]]" for n in names)
    (out / f"{title}.md").write_text(
        f'---\nsource: "[[{pdf_name}]]"\ntags: [literature]\n---\n{intro.strip()}\n\n{links}\n', encoding="utf-8")
    return names
从文件名里去掉的字符,正好是会弄坏 Obsidian 链接或文件系统的那些。

在我们的测试里,这个脚本把 5 页英文指南拆成 10 篇笔记(1 篇索引、9 个小节),把 11 页中文报告拆成 13 篇笔记,所有链接都能正常跳转。如果是一整个文件夹的论文,先用我们的 批量转换器,再对每个文件运行一次脚本。

拆分不是必须的。短文章、不到十页的论文、只读一遍的资料,一篇带标题链接的笔记更省事。当各节各有用处时再拆:要分章引用的书、条款编号的标准,或者各部分会在不同笔记里讨论的报告。

让原始 PDF 始终和笔记关联

  • 一个附件文件夹。在设置的“文件与链接”里,把新附件的存放位置设成 资料/ 这样的文件夹,拖进来的 PDF 都会放到那里。
  • 同一个文件名。年度报告.pdf 和 年度报告.md 放在一起,一眼就能对上。
  • 双向链接。笔记的 source 属性指向 PDF;需要看版式时,在正在写的段落下面用 ![[年度报告.pdf#page=12]] 嵌入那一页。
  • 不要为了改笔记去改 PDF。改 Markdown。PDF 始终是没动过的原始依据。

有了这层关联,几个月后从 PDF 到笔记这条路依然可靠,你随时能回到引文出自的那一页。这也是 PDF导入Obsidian 的最后一步,之后就是平常的记笔记了。

社区插件:安装前要检查什么

有不少社区插件号称能导入 PDF、提取高亮或做 OCR。启用之前,先读一下 Obsidian 的 插件安全 页面。上面写着 Obsidian 无法把插件限制在特定权限内,所以插件可以访问你电脑上的文件、连接互联网、安装其他程序。检查四件事:

  1. 它会把你的 PDF 发到在线服务吗?README 里应该写明;如果要你填某个服务的访问密钥,就默认它会上传。
  2. 最近一次更新是什么时候?和你的 Obsidian 版本兼容吗?
  3. 源代码公开吗?用的什么许可证?
  4. 用 Obsidian 之外的转换器加一篇普通笔记,能不能达到同样效果?很多时候可以,而且库里不用多跑任何东西。

参考来源

  1. Accepted file formats — Obsidian Help
  2. Embed files: Embed a PDF in a note — Obsidian Help
  3. PDFs — Obsidian Help
  4. Internal links: Link to a heading in a note — Obsidian Help
  5. Properties — Obsidian Help
  6. Plugin security — Obsidian Help

常见问题

PDF 能导入 Obsidian 吗?

能。放进库里,Obsidian 会用阅读器打开,或者用 ![[文件.pdf]] 嵌入到笔记里。想编辑文字,就把 PDF 转成 Markdown,再作为笔记导入。

怎么把 PDF 导入 Obsidian 做成笔记?

把 PDF 转成 Markdown,把 .md 移进库里,加上带 source 链接(指向 PDF)的属性;如果想每节一篇笔记,就按标题把长文件拆开。

能在 Obsidian 里给 PDF 做高亮吗?

内置阅读器不行,Obsidian 帮助文档写明不支持批注和高亮。可以在转换后的 Markdown 里用 ==文字== 高亮,或者在别的应用里给 PDF 做批注。

怎么链接到 PDF 的某一页?

用 ![[文件.pdf#page=3]] 嵌入,或者在阅读器里右键点页面缩略图,复制它的链接。

转换后的笔记会保留 PDF 的标题吗?

带文字层的 PDF 一般会:我们的转换器按字号对应标题层级。记得检查大纲,最高一级有时会变成 ### 而不是 ##。

转换器会上传我的 PDF 吗?

不会。它在你的浏览器里运行,Markdown 在你的设备上生成。