← 返回
未分类

Pdf To Markdown Knowledge

将 PDF 笔记内容抽取为结构化 Markdown 知识整理文档。支持文本型 PDF 和扫描件 OCR。自动检测当前 agent 的 PDF 读取能力,优先使用原生 PDF 阅读(视觉理解),备选使用 Python 库(PyMuPDF/pdfplumber/Tesseract OCR)提取文本和图片,再理解内容进行知识抽取整理,最后严格格式化输出 Markdown。触发词:PDF知识抽取、提取笔记、整理PDF、知识整理、扫描件OCR。
将 PDF 笔记内容抽取为结构化 Markdown 知识整理文档。支持文本型 PDF 和扫描件 OCR。自动检测当前 agent 的 PDF 读取能力,优先使用原生 PDF 阅读(视觉理解),备选使用 Python 库(PyMuPDF/pdfplumber/Tesseract OCR)提取文本和图片,再理解内容进行知识抽取整理,最后严格格式化输出 Markdown。触发词:PDF知识抽取、提取笔记、整理PDF、知识整理、扫描件OCR。 最终形成的Markdown可以导入为思维导图
Lihome
未分类 community v1.0.3 4 版本 100000 Key: 无需
★ 1
Stars
📥 133
下载
💾 0
安装
4
版本
#latest

概述

PDF 转结构化知识整理

将 PDF 笔记内容抽取为结构化 Markdown 知识整理文档。

行为准则

  1. 诚实:不编造原文中没有的内容,不猜测不确定的知识点,不擅自补充自己"觉得应该有"的东西
  2. 如实反映:原文说什么就整理什么,理解偏差或遗漏时如实标注
  3. 主动询问:遇到以下情况必须停下来询问使用者,不要自行决定:
    • PDF 内容模糊、残缺、无法理解时
    • 不确定某个知识点属于哪个层级/分类时
    • 不确定某个术语的含义或翻译时
    • 不确定输出文件应该放在哪个目录时
    • 不确定文件命名规则时
    • 不确定知识抽取的粒度(详细还是精简)时
  4. 不耍小聪明:不要用看似合理但实际偏离原文的"优化"或"润色"来掩盖理解不足
  5. 图片不跳过:遇到图片必须判断其知识价值。若图片是操作指引、流程图、示意图、实例内容、表格截图或结构图,输出 Markdown 中必须保留图片引用,并在图片上下文处整理其含义
  6. 严禁借用外部内容(零容忍):
    • 知识整理的唯一来源是当前正在处理的 PDF 本身
    • 禁止读取输出目录下已有的其它 _知识整理.md 文件来拼凑、补充、参考或"借鉴"内容
    • 禁止读取其它已生成的 markdown 文件、wiki 文件或任何非当前 PDF 的文件来填充提取失败的部分
    • 禁止根据文件名、目录结构或上下文推测其它 PDF 的内容并写入当前整理
    • 当 PDF 提取效果不佳时,唯一正确的做法是
  7. 如实告知使用者提取质量差
  8. 列出具体问题(乱码比例、缺失章节、无法识别的区域)
  9. 建议换用其它提取方式,或由使用者手动处理
  10. 宁可输出不完整的整理(标注缺失部分),也绝不用其它文件的内容伪造完整性
    • 这条规则没有例外:即使其它文件的内容"看起来和当前 PDF 是同一本书"、"应该是相同的知识点"、"只是补充缺失的部分",也不可以借用。不同 PDF 的内容可能存在差异、版本不同、编辑不同,借用就是欺骗
  11. OCR 诚实原则(方式 D 专用):
    • OCR 识别内容是机器猜测结果,可信度低于原文提取
    • 禁止"润色"OCR 结果:识别不清的必须标注 [OCR原文:xxx],不得擅自猜测替换
    • 单页 OCR 有效汉字 < 3 个 → 标注 [第X页 OCR 识别失败]
    • 连续 3 页以上识别失败 → 向使用者汇报,建议手动处理
    • 宁可遗漏,不可从其它文件或网络搜索内容填补 OCR 空缺

步骤 0:确认输出目录

在开始任何处理之前,必须先询问使用者

  1. 知识整理 markdown 文件输出到哪个目录?
    • 默认建议:PDF 所在目录下的 knowledge_md/ 子目录
    • 使用者可指定任意目录
  2. 若输出目录不存在,需先创建
  3. 若需要导出图片,图片输出到输出目录下的 images/ 子目录

不要假设输出目录,必须明确确认。


步骤 1:环境检测与 PDF 读取

不同 agent 有不同的 PDF 读取能力。先检测当前环境,再选择最佳方式。

1.0 能力检测

按以下顺序检测当前 agent 支持哪些 PDF 读取方式:

┌─────────────────────────────────────────────────────┐
│ 检测 1:原生 PDF 视觉阅读                            │
│ 当前 agent 是否能直接"看"PDF 页面(作为图像)?       │
│                                                      │
│ 判断方法:                                            │
│ - 有 Read/File 工具且支持 pages 参数?               │
│ - 能读取 PDF 并以图像形式呈现内容?                   │
│ - 测试:读取 PDF 第 1 页,能否看到完整页面内容        │
│   (包括图片、表格、排版)?                          │
│                                                      │
│ 若 YES → 使用方式 A(原生视觉阅读)                  │
│ 若 NO  → 继续检测                                    │
└──────────────────────┬──────────────────────────────┘
                       │ NO
                       ▼
┌─────────────────────────────────────────────────────┐
│ 检测 2:Python 库可用性                              │
│                                                      │
│ 检查命令:                                            │
│   python -c "import fitz; print('PyMuPDF OK')"      │
│   python -c "import pdfplumber; print('pdfplumber OK')" │
│                                                      │
│ 若 PyMuPDF 可用 → 使用方式 B(文本+图片提取)        │
│ 若仅 pdfplumber  → 使用方式 C(文本+表格提取)       │
│ 若都不可用 → 继续检测                                │
└──────────────────────┬──────────────────────────────┘
                       │ NO
                       ▼
┌─────────────────────────────────────────────────────┐
│ 检测 3:安装 Python 库                               │
│                                                      │
│ 尝试安装:                                            │
│   pip install PyMuPDF pdfplumber                     │
│                                                      │
│ 安装成功 → 使用方式 B 或 C                           │
│ 安装失败 → 告知使用者,请求手动处理                   │
└─────────────────────────────────────────────────────┘

关键原则:能力检测必须实际验证,不能靠猜测。 不同 agent、不同环境的能力差异很大,必须通过实际测试确认。

方式 A:原生 PDF 视觉阅读(最优)

适用条件: 当前 agent 能通过 Read/File 等工具直接"看"PDF 页面(作为图像渲染)。

这是最佳方式,因为:

  • 能看到完整的页面渲染,包括图片、图表、表格
  • 能理解页面布局和视觉层次
  • 中文文本不会出现乱码
  • 能识别流程图、架构图、示意图并理解其含义

操作方法:

  1. 使用可用的文件读取工具读取 PDF,指定页码范围(若支持)
  2. 每次最多读取 20 页,大文件需分批读取
  3. agent 直接看到页面内容,无需额外文本提取

Claude Code 示例:

Read(file_path="xxx.pdf", pages="1-20")

其他 agent: 使用各自平台提供的文件读取工具,只要能渲染 PDF 页面即可。

大文件处理策略:

对于超过 20 页的 PDF,按以下方式分批处理:

  1. 先读取前 20 页,了解文档整体结构
  2. 根据目录或章节结构,规划后续批次的页码范围
  3. 每批读取后,立即进行该批次的知识抽取
  4. 最后将所有批次的结果合并

分批时注意:

  • 尽量按章节边界切分,不要在知识点中间断开
  • 每批开始时回顾前一批的最后几个知识点,确保衔接
  • 若某批内容与前批有重叠(章节跨页),合并时去重

页码获取:

若不确定 PDF 总页数,先用 Python 快速查询:

import fitz  # PyMuPDF
doc = fitz.open("input.pdf")
print(f"总页数: {len(doc)}")
doc.close()

若 PyMuPDF 不可用,可通过读取工具尝试不同页码范围来推断总页数。

方式 B:PyMuPDF 文本 + 图片提取(通用备选)

适用条件: 当前 agent 无法原生阅读 PDF,但可以运行 Python 脚本。

依赖检查:

python -c "import fitz; print(fitz.__version__)"

若未安装:pip install PyMuPDF

文本提取:

import fitz

doc = fitz.open("input.pdf")
for i, page in enumerate(doc):
    text = page.get_text("text")
    print(f"--- 第 {i+1} 页 ---")
    print(text)
doc.close()

图片提取:

import fitz
import os

doc = fitz.open("input.pdf")
output_dir = "images"
os.makedirs(output_dir, exist_ok=True)

for i, page in enumerate(doc):
    images = page.get_images(full=True)
    for j, img in enumerate(images):
        xref = img[0]
        base_image = doc.extract_image(xref)
        image_bytes = base_image["image"]
        image_ext = base_image["ext"]
        image_path = f"{output_dir}/p{i+1:03d}-img{j+1:02d}.{image_ext}"
        with open(image_path, "wb") as f:
            f.write(image_bytes)
        print(f"导出: {image_path}")

doc.close()

页面转图片(为无原生 PDF 阅读能力的 agent 提供视觉理解):

当 agent 无法原生阅读 PDF,但仍需要理解图表/流程图时,可将 PDF 页面转为图片,再让 agent 读取图片:

import fitz
import os

doc = fitz.open("input.pdf")
output_dir = "page_images"
os.makedirs(output_dir, exist_ok=True)

for i, page in enumerate(doc):
    # 渲染页面为图片(200 DPI,平衡清晰度和文件大小)
    pix = page.get_pixmap(dpi=200)
    image_path = f"{output_dir}/page_{i+1:03d}.png"
    pix.save(image_path)
    print(f"导出: {image_path}")

doc.close()

然后使用 agent 的图片读取工具逐页查看,获得类似原生 PDF 阅读的效果。

适用场景: 通用备选方案,适用于所有能运行 Python 的 agent

方式 C:pdfplumber 表格提取(补充)

适用条件: 方式 A/B 的表格提取效果不佳,且 PDF 中包含大量结构化表格。

import pdfplumber

with pdfplumber.open("input.pdf") as pdf:
    for i, page in enumerate(pdf.pages):
        tables = page.extract_tables()
        for j, table in enumerate(tables):
            print(f"--- 第 {i+1} 页 表格 {j+1} ---")
            for row in table:
                print(row)

适用场景: 表格密集的 PDF,其他方式无法正确提取表格时的补充手段

方式 D:Tesseract OCR(扫描件兜底)

适用条件: 方式 A/B/C 均无法获得可读文本(扫描件/图片型 PDF /大面积乱码)。

环境检测:

检测 Tesseract 是否已安装:
  where tesseract           # 验证路径
  tesseract --version       # 验证版本
  tesseract --list-langs    # 验证语言包(必须有 chi_sim)

检测 Python 依赖:
  python -c "import pytesseract; print('OK')"
  python -c "from PIL import Image; print('OK')"

依赖安装引导(仅首次需要):

若 Tesseract 未安装,按以下顺序尝试安装,若所有方式均失败则告知使用者手动安装:

# 方式 1:winget(Windows 10/11 自带)
winget install UB-Mannheim.TesseractOCR

# 方式 2:choco(需安装 Chocolatey)
choco install tesseract

# 方式 3:引导使用者手动下载
# https://github.com/UB-Mannheim/tesseract/wiki
# 安装时务必勾选 "中文(简体)" 语言包

chi_sim(简体中文)语言包缺失:

# 下载中文语言包
curl -L -o "%TESSDATA_PREFIX%/tessdata/chi_sim.traineddata" ^
  "https://github.com/tesseract-ocr/tessdata/raw/main/chi_sim.traineddata"

Python 依赖:

pip install pytesseract Pillow

OCR 执行:

import fitz
import pytesseract
from PIL import Image
import io
import os

doc = fitz.open("input.pdf")
output_dir = "temp_ocr_pages"
os.makedirs(output_dir, exist_ok=True)

for i, page in enumerate(doc):
    # 步骤 1:页面渲染为图片(200 DPI)
    pix = page.get_pixmap(dpi=200)
    img_path = f"{output_dir}/page_{i+1:03d}.png"
    pix.save(img_path)

    # 步骤 2:Tesseract OCR 识别
    try:
        text = pytesseract.image_to_string(
            Image.open(img_path),
            lang="chi_sim+eng",
            config="--psm 6"  # 统一文本块模式
        )
        print(f"--- 第 {i+1} 页 OCR ---")
        print(text if text.strip() else "[OCR 识别失败]")
    except Exception as e:
        print(f"--- 第 {i+1} 页 OCR 异常 ---")
        print(f"[OCR 错误: {e}]")

doc.close()

PSM 参数速查:

| 参数 | 模式 | 适用场景 |

|------|------|----------|

| --psm 3 | 自动分页 | 通用,首次不确定 |

| --psm 6 | 统一文本块 | 干净笔记/文档页 |

| --psm 7 | 单行文本 | 标题、代码行 |

| --psm 8 | 单个词 | 关键词、标签 |

临时文件清理:

OCR 执行完成后:

  1. 在知识整理文件头部标注
  2. 询问使用者是否保留 temp_ocr_pages/ 目录
  3. 若使用者选择不保留,删除该目录

质量检查:

  • 单页 OCR 有效汉字 < 50 字 → 输出警告
  • 乱码比例 > 30% → 如实告知使用者效果不佳
  • 连续 3 页以上全部失败 → 汇报并建议手动处理
  • 质量不佳时遵守行为准则第 7 条(OCR 诚实原则)

方式选择决策树

开始处理 PDF
    │
    ├─ 步骤 1.0:能力检测
    │   │
    │   ├─ 有原生 PDF 视觉阅读能力?
    │   │   │
    │   │   ├─ YES → 使用方式 A,读取前 20 页测试
    │   │   │   │
    │   │   │   ├─ 内容清晰? → 继续方式 A 分批读完全文
    │   │   │   │
    │   │   │   └─ 内容混乱? → 回退到方式 B
    │   │   │
    │   │   └─ NO → 继续检测
    │   │
    │   ├─ 能运行 Python + PyMuPDF?
    │   │   │
    │   │   ├─ YES → 使用方式 B
    │   │   │   │
    │   │   │   ├─ 文本质量可接受? → 继续
    │   │   │   │
    │   │   │   ├─ 需要看图表? → 页面转图片(方式 B 的页面转图片功能)
    │   │   │   │
    │   │   │   └─ 表格提取差? → 补充方式 C
    │   │   │
    │   │   └─ NO → 继续检测
    │   │
    │   ├─ 能安装 Python 库?
    │   │   │
    │   │   ├─ YES → pip install PyMuPDF pdfplumber → 回到方式 B
    │   │   │
    │   │   └─ NO → 告知使用者环境限制,请求协助
    │   │
    │   └─ 需要导出图片? → 始终使用方式 B 的图片提取
    │
    └─ 以上所有方式文本质量均不可接受(扫描件/图片型 PDF)?
        │
        ├─ YES → 进入方式 D:Tesseract OCR
        │   │
        │   ├─ Tesseract 已安装? → 执行 OCR
        │   │
        │   └─ 未安装? → 引导安装后执行 OCR
        │   │   │
        │   │   └─ 安装失败? → 告知使用者环境限制,请求协助
        │   │
        │   └─ OCR 文本质量可接受? → 进入步骤 2 知识抽取
        │       │
        │       └─ 仍不佳 → 如实告知,输出已提取部分并标注 `[OCR 识别失败]`
        │
        └─ NO → 继续流程

提取后质量检查

无论使用哪种方式,提取后必须检查:

  1. 文本完整性:是否有大量乱码、缺字、错位
  2. 结构完整性:章节标题、层级关系是否清晰
  3. 表格完整性:表格内容是否正确对齐,行列是否完整
  4. 图片覆盖:重要图表是否都被识别(方式 A)或导出(方式 B)

若质量不佳,如实告知使用者并建议换用其他方式。

质量不佳时的正确处理流程:

  1. 如实报告具体问题("第 X-Y 页乱码严重"、"表格无法识别"、"图表内容缺失")
  2. 建议换用其它提取方式重试
  3. 若所有方式均失败,告知使用者该 PDF 可能需要手动处理
  4. 可以输出已成功提取的部分,缺失部分标注 [提取失败]

质量不佳时的禁止行为:

  • 禁止读取输出目录下其它 _知识整理.md 来"补充"缺失内容
  • 禁止根据目录结构或文件名推测其它 PDF 的内容
  • 禁止用任何非当前 PDF 来源的内容填充空缺
  • 禁止在未告知使用者的情况下悄悄跳过提取失败的部分(必须显式标注)

步骤 1.5:图片处理

PDF 中的图片往往承载关键知识点,不能忽略。

使用原生视觉阅读时

agent 直接在页面渲染中看到图片,无需额外操作。在知识整理时:

  1. 识别图片类型:流程图、架构图、表格截图、操作界面、示意图等
  2. 文字化描述:将图片内容用文字描述出来,作为知识点的一部分
  3. 保留图片引用:若后续需要导出图片,在整理中标注图片位置和描述

使用 Python 库提取时

  1. 导出图片:使用方式 B 的图片提取脚本,将图片导出到 images/ 目录
  2. 在整理中引用:在对应知识点附近插入 Markdown 图片语法:

```markdown

!图片说明

```

  1. 补充描述:图片引用后,用列表补充图片传达的知识点
  2. 页面转图片:若 agent 无法原生阅读 PDF 但需要理解图表,使用方式 B 的页面转图片功能,将页面渲染为 PNG 后用图片读取工具查看

使用 OCR 提取时

通过方式 D(OCR)提取时,图片已经在页面渲染中被 Tesseract 处理。此时:

  1. OCR 提取过程中,PyMuPDF 已将页面渲染为图片并存于 temp_ocr_pages/ 目录
  2. 若图片中包含关键知识(流程图、表格截图、示意图),判断是否需要保留这些 OCR 页面图片
  3. 保留方法:从 temp_ocr_pages/ 复制到 images/ 目录,使用标准 Markdown 图片语法引用
  4. 注意:OCR 仅为纯文本提取,图片描述需 agent 自己通过视觉理解补充,不得凭空编造

图片识别标准

以下图片必须在知识整理中保留引用或描述:

  • 操作指引:菜单、按钮、配置步骤、软件界面、命令执行结果
  • 实例内容:例题、案例页面、样例输入输出、运行截图
  • 图表结构:流程图、架构图、状态转换图、关系图、表格截图、时序图
  • 正文引用:原文出现"如图所示"、"见图X"、"上图"等
  • 文本缺口:纯文本提取后出现明显空白,图片可能承载缺失信息

图片整理规则

  1. 图片放在对应标题、步骤、概念、例子下面,不要堆到文末
  2. alt 文本写清图片在原文中的作用
  3. 图片引用后,用列表补充整理图片传达的知识点
  4. 无法完全理解时,仍保留引用并标注 [待确认]
  5. 图片路径使用相对路径:./images/[原PDF名]-p03-fig01.png

步骤 2:理解内容,知识抽取与整理

这是本 skill 的核心步骤。不是简单的文本搬运或格式转换,而是理解原文内容后重新组织

2.1 先理解,再整理

  • 逐页阅读提取的文本/页面,先建立对整体内容的理解
  • 识别原文的章节结构和逻辑脉络
  • 理解每个知识点的含义,而不是机械地复制原文句子
  • 在理解的基础上,用自己的话重新组织表达,但严格忠于原文含义

2.2 层级结构识别

根据原文内容的章节编号或标题层级,提取三级标题结构:

| 层级 | Markdown 语法 | 对应内容 |

|------|---------------|----------|

| 顶层 | # [N]标题 | 章节/主题编号+名称 |

| 中层 | ## 中文标题 | 大节标题 |

| 底层 | ### 中文标题 | 小节标题 |

  • 若原文层级不清晰或无法判断归属,询问使用者,不要自行猜测

2.3 知识点提取原则

  • 去噪:过滤页眉页脚、AI生成提示(如"以下为AI生成的图文笔记的内容")、页码、时间戳等非知识内容
  • 忠于原文:不添加原文没有的内容,不删减原文明确提到的知识点
  • 如实标注:原文表述模糊或自己理解不确定的地方,标注 [待确认] 并询问使用者
  • 保留原文信息:易混淆点、补充说明、来源标注、条件限制等原文明确给出的信息必须保留;若原文包含考试、频率、分值、难度等内容,也只作为普通知识点整理,不单独建立考点栏目
  • 合并同类项:将分散在同一主题下的相关内容合并,但合并后必须确认没有遗漏
  • 识别对比关系:原文中明确对比的概念(如 CISC vs RISC、互斥 vs 同步),整理为并列子项
  • 表格处理:原文中的表格内容,转换为 Markdown 表格或结构化列表,保留完整的行列信息

2.4 抽取粒度

  • 默认粒度:保留原文中所有明确提到的知识点,不自行取舍
  • 若使用者指定了粒度偏好(精简/详细),按偏好执行
  • 若不确定某个细节是否值得保留,询问使用者

2.5 转换示例

原文:
"CISC(复杂指令集):
- 特点:指令数量多、长度不固定、执行效率较低
- 实现:微程序控制(软件方式)
RISC(精简指令集):
- 特点:指令精简、长度固定、执行效率高
- 实现:硬布线逻辑+大量寄存器(硬件加速)"

整理后:
- CISC(复杂指令集):
    - 特点:指令数量多、长度不固定、执行效率较低
    - 实现:微程序控制(软件方式)
- RISC(精简指令集):
    - 特点:指令精简、长度固定、执行效率高
    - 实现:硬布线逻辑+大量寄存器(硬件加速)

关键:整理后的内容与原文含义完全一致,只是结构和格式更清晰。

2.6 表格转换示例

原文表格:
┌──────────┬──────────┬──────────┐
│ 特性     │ CISC     │ RISC     │
├──────────┼──────────┼──────────┤
│ 指令数量 │ 多       │ 少       │
│ 指令长度 │ 不固定   │ 固定     │
│ 执行效率 │ 较低     │ 较高     │
└──────────┴──────────┴──────────┘

整理后(方式一:Markdown 表格):
| 特性 | CISC | RISC |
|------|------|------|
| 指令数量 | 多 | 少 |
| 指令长度 | 不固定 | 固定 |
| 执行效率 | 较低 | 较高 |

整理后(方式二:结构化列表,适合知识点密集时):
- CISC vs RISC 对比:
    - 指令数量:CISC 多,RISC 少
    - 指令长度:CISC 不固定,RISC 固定
    - 执行效率:CISC 较低,RISC 较高

步骤 3:严格格式化输出 Markdown

3.1 文件命名

[章节号]--标题_笔记.pdf  →  [章节号]--标题_知识整理.md

若不确定命名规则,询问使用者

3.2 输出目录

默认输出到与 PDF 同目录的 knowledge_md/ 子目录。若使用者指定了其他目录,按指定目录输出。

3.3 Markdown 格式严格规范

  1. 标题层级:必须严格 ######,不可跳级
  2. 列表标记:统一使用 - (不是 * +
  3. 缩进:子层级缩进 4 个空格(不是 2 个,不是 tab)
  4. 空行:每个列表项后必须有一个空行(可以是完全空行,或仅含2个空格的行)
  5. 中文标点:正文使用中文全角标点(,。:()),英文术语用英文括号
  6. 加粗术语 仅用于首次出现的重要术语,不要滥用
  7. 不添加注释:不要在 markdown 中添加自己的评论或解释性注释

3.4 输出结构模板

# [N]主标题

## 第一大节

### 第一小节

- 核心概念:描述内容
    
- 关键特性:
    
    - 子特性1
        
    - 子特性2

### 第二小节

- 对比关系:
    
    - 类型A:特征描述
        
    - 类型B:特征描述

## 第二大节

### ...

3.5 典型模式速查

| 场景 | 格式 |

|------|------|

| 定义描述 | - 术语:一句话定义 |

| 分类列举 | - 分类名: + 4空格缩进子项 |

| 对比关系 | - X:特点 / - Y:特点 并列 |

| 流程步骤 | - 步骤1 → 步骤2 → 步骤3 |

| 例题分析 | - 例题:题目 + 4空格缩进 - 解析:过程 |

| 不确定内容 | - [待确认] 描述 |

| 表格 | Markdown 表格或结构化列表 |


批量处理

发现更多 PDF

当使用者指定处理某个 PDF 时,检查该 PDF 所在目录下是否还有其他 PDF 文件:

  1. 扫描 PDF 所在目录,列出所有 .pdf 文件
  2. 排除已处理的(输出目录中已有对应 _知识整理.md 的)
  3. 若存在未处理的 PDF,询问使用者
    • "发现目录下还有 N 个未处理的 PDF,是否一并处理?"
    • 列出未处理 PDF 的文件名供使用者选择
    • 使用者可选择:全部处理 / 选择部分 / 不处理

批量处理流程

  1. 确认要处理的 PDF 列表
  2. 逐个处理,每个 PDF 独立生成一个 markdown 文件
  3. 可并行处理多个 PDF 以提高效率(若当前 agent 支持并行任务/子代理派发)
  4. 若某个 PDF 提取失败或内容无法理解,如实报告,不要跳过隐瞒
  5. 处理完成后汇总报告:成功数量、失败数量、失败原因

并行处理策略

对于批量处理,若当前 agent 支持并行任务执行或子代理派发(如 Claude Code 的 Agent 工具、Gemini 的并行任务等),可并行处理多个 PDF:

  1. 每个子任务独立完成:读取 PDF → 理解内容 → 生成知识整理 markdown
  2. 各任务之间互不依赖,可完全并行
  3. 主任务负责:分发任务、收集结果、生成汇总报告和 Wiki

若当前 agent 不支持并行处理,则逐个串行处理。

生成 Wiki

所有 PDF 处理完成后,将输出目录下所有 _知识整理.md 文件整合为一个 Wiki 索引文件。

> 注意:Wiki 生成是在所有 PDF 都处理完成之后进行的,此时读取已完成的知识整理文件是为了建立索引和关联关系,这是合法行为。这与行为准则第 6 条禁止的"在处理某个 PDF 时借用其它文件内容"是完全不同的场景。Wiki 生成只能在所有 PDF 独立处理完成后才能开始。

  1. 扫描输出目录下所有 _知识整理.md 文件
  2. 按文件名中的章节号排序
  3. 生成 Wiki.md 文件,结构如下:
# 知识库 Wiki

## 目录

| 序号 | 章节 | 文件链接 |
|------|------|----------|
| 1 | 计算机系统基础知识 | [[1]计算机系统基础知识](./[2]--1.计算机系统基础知识_知识整理.md) |
| 2 | 操作系统概述 | [[2.1]操作系统概述](./[3]--2.1操作系统概述-进程管理-同步互斥_知识整理.md) |
| ... | ... | ... |

## 章节间关联

- 第2章(操作系统)是第1章(计算机基础)的深入展开
- 第3章(数据库)与第2章的文件管理相关
- ...

  1. Wiki 中包含:
    • 目录表:所有章节的编号、名称、链接
    • 章节间关联:识别章节间的知识关联关系(如前后依赖、交叉引用),帮助使用者建立知识体系
    • 统计信息:总章节数、总知识点数等
  1. Wiki 文件输出到与知识整理文件相同的目录

版本历史

共 4 个版本

  • v1.0.3 优化图片识别问题 当前
    2026-05-19 15:49 安全 安全
  • v1.0.2 优化图片处理
    2026-05-15 10:26 安全 安全
  • v1.0.1 优化安全审计中提到的问题
    2026-05-14 13:00 安全 安全
  • v1.0.0 Initial release
    2026-05-14 11:52 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

knowledge-management

Summarize

paudyyin
智能摘要工具,自动为长文本、文档、网页生成摘要,提取要点与关键词,支持自定义摘要长度。
★ 965 📥 522,023
knowledge-management

Baidu web search

ide-rea
使用百度AI搜索引擎(BDSE)进行网络搜索。适用于获取实时信息、文档资料或研究课题。
★ 246 📥 108,694
knowledge-management

Obsidian

steipete
操作 Obsidian 仓库(纯 Markdown 笔记)并通过 obsidian-cli 自动化。
★ 448 📥 105,648