name: pdf-to-knowledge description: 將 PDF 筆記內容抽取為結構化 Markdown 知識整理文件。支援文本型 PDF 和掃描件 OCR。自動檢測當前 agent 的 PDF 讀取能力,優先使用原生 PDF 閱讀(視覺理解),備選使用 Python 庫(PyMuPDF/pdfplumber/Tesseract OCR)提取文本和圖片,再理解內容進行知識抽取整理,最後嚴格格式化輸出 Markdown。觸發詞:PDF知識抽取、提取筆記、整理PDF、知識整理、掃描件OCR。
將 PDF 筆記內容抽取為結構化 Markdown 知識整理文件。
_知識整理.md 檔案來拼湊、補充、參考或"借鑑"內容[OCR原文:xxx],不得擅自猜測替換[第X頁 OCR 識別失敗]在開始任何處理之前,必須先詢問使用者:
knowledge_md/ 子目錄images/ 子目錄不要假設輸出目錄,必須明確確認。
不同 agent 有不同的 PDF 讀取能力。先檢測當前環境,再選擇最佳方式。
按以下順序檢測當前 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、不同環境的能力差異很大,必須通過實際測試確認。
適用條件: 當前 agent 能通過 Read/File 等工具直接"看"PDF 頁面(作為影像渲染)。
這是最佳方式,因為:
操作方法:
Claude Code 示例:
Read(file_path="xxx.pdf", pages="1-20")
其他 agent: 使用各自平臺提供的檔案讀取工具,只要能渲染 PDF 頁面即可。
大檔案處理策略:
對於超過 20 頁的 PDF,按以下方式分批處理:
分批時注意: - 儘量按章節邊界切分,不要在知識點中間斷開 - 每批開始時回顧前一批的最後幾個知識點,確保銜接 - 若某批內容與前批有重疊(章節跨頁),合併時去重
頁碼獲取:
若不確定 PDF 總頁數,先用 Python 快速查詢:
import fitz # PyMuPDF
doc = fitz.open("input.pdf")
print(f"總頁數: {len(doc)}")
doc.close()
若 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
適用條件: 方式 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,其他方式無法正確提取表格時的補充手段
適用條件: 方式 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 執行完成後:
<!-- 來源:OCR 識別(Tesseract)-->temp_ocr_pages/ 目錄質量檢查:
7w4.net小蔥技能。
開始處理 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 → 繼續流程
無論使用哪種方式,提取後必須檢查:
若質量不佳,如實告知使用者並建議換用其他方式。
質量不佳時的正確處理流程:
[提取失敗]質量不佳時的禁止行為:
_知識整理.md 來"補充"缺失內容PDF 中的圖片往往承載關鍵知識點,不能忽略。
agent 直接在頁面渲染中看到圖片,無需額外操作。在知識整理時:
images/ 目錄markdown

通過方式 D(OCR)提取時,圖片已經在頁面渲染中被 Tesseract 處理。此時:
temp_ocr_pages/ 目錄temp_ocr_pages/ 複製到 images/ 目錄,使用標準 Markdown 圖片語法引用以下圖片必須在知識整理中保留引用或描述:
alt 文本寫清圖片在原文中的作用[待確認]./images/[原PDF名]-p03-fig01.png這是本 skill 的核心步驟。不是簡單的文本搬運或格式轉換,而是理解原文內容後重新組織。
根據原文內容的章節編號或標題層級,提取三級標題結構:
| 層級 | Markdown 語法 | 對應內容 |
|---|---|---|
| 頂層 | # [N]標題 |
章節/主題編號+名稱 |
| 中層 | ## 中文標題 |
大節標題 |
| 底層 | ### 中文標題 |
小節標題 |
[待確認] 並詢問使用者原文:
"CISC(複雜指令集):
- 特點:指令數量多、長度不固定、執行效率較低
- 實現:微程式控制(軟體方式)
RISC(精簡指令集):
- 特點:指令精簡、長度固定、執行效率高
- 實現:硬佈線邏輯+大量暫存器(硬體加速)"
整理後:
- CISC(複雜指令集):
- 特點:指令數量多、長度不固定、執行效率較低
- 實現:微程式控制(軟體方式)
- RISC(精簡指令集):
- 特點:指令精簡、長度固定、執行效率高
- 實現:硬佈線邏輯+大量暫存器(硬體加速)
關鍵:整理後的內容與原文含義完全一致,只是結構和格式更清晰。
原文表格:
┌──────────┬──────────┬──────────┐
│ 特性 │ CISC │ RISC │
├──────────┼──────────┼──────────┤
│ 指令數量 │ 多 │ 少 │
│ 指令長度 │ 不固定 │ 固定 │
│ 執行效率 │ 較低 │ 較高 │
└──────────┴──────────┴──────────┘
整理後(方式一:Markdown 表格):
| 特性 | CISC | RISC |
|------|------|------|
| 指令數量 | 多 | 少 |
| 指令長度 | 不固定 | 固定 |
| 執行效率 | 較低 | 較高 |
整理後(方式二:結構化列表,適合知識點密集時):
- CISC vs RISC 對比:
- 指令數量:CISC 多,RISC 少
- 指令長度:CISC 不固定,RISC 固定
- 執行效率:CISC 較低,RISC 較高
[章節號]--標題_筆記.pdf → [章節號]--標題_知識整理.md
若不確定命名規則,詢問使用者。
預設輸出到與 PDF 同目錄的 knowledge_md/ 子目錄。若使用者指定了其他目錄,按指定目錄輸出。
# → ## → ###,不可跳級-(不是 * 或 +)**術語** 僅用於首次出現的重要術語,不要濫用# [N]主標題
## 第一大節
### 第一小節
- 核心概念:描述內容
- 關鍵特性:
- 子特性1
- 子特性2
### 第二小節
- 對比關係:
- 型別A:特徵描述
- 型別B:特徵描述
## 第二大節
### ...
| 場景 | 格式 |
|---|---|
| 定義描述 | - 術語:一句話定義 |
| 分類列舉 | - 分類名: + 4空格縮排子項 |
| 對比關係 | - X:特點 / - Y:特點 並列 |
| 流程步驟 | - 步驟1 → 步驟2 → 步驟3 |
| 例題分析 | - 例題:題目 + 4空格縮排 - 解析:過程 |
| 不確定內容 | - [待確認] 描述 |
| 表格 | Markdown 表格或結構化列表 |
當使用者指定處理某個 PDF 時,檢查該 PDF 所在目錄下是否還有其他 PDF 檔案:
.pdf 檔案_知識整理.md 的)對於批次處理,若當前 agent 支援並行任務執行或子代理派發(如 Claude Code 的 Agent 工具、Gemini 的並行任務等),可並行處理多個 PDF:
若當前 agent 不支援並行處理,則逐個序列處理。
所有 PDF 處理完成後,將輸出目錄下所有 _知識整理.md 檔案整合為一個 Wiki 索引檔案。
注意:Wiki 生成是在所有 PDF 都處理完成之後進行的,此時讀取已完成的知識整理檔案是為了建立索引和關聯關係,這是合法行為。這與行為準則第 6 條禁止的"在處理某個 PDF 時借用其它檔案內容"是完全不同的場景。Wiki 生成只能在所有 PDF 獨立處理完成後才能開始。
_知識整理.md 檔案Wiki.md 檔案,結構如下:# 知識庫 Wiki
## 目錄
| 序號 | 章節 | 檔案連結 |
|------|------|----------|
| 1 | 計算機系統基礎知識 | [[1]計算機系統基礎知識](./[2]--1.計算機系統基礎知識_知識整理.md) |
| 2 | 作業系統概述 | [[2.1]作業系統概述](./[3]--2.1作業系統概述-程序管理-同步互斥_知識整理.md) |
| ... | ... | ... |
## 章節間關聯
- 第2章(作業系統)是第1章(計算機基礎)的深入展開
- 第3章(資料庫)與第2章的檔案管理相關
- ...
統計資訊:總章節數、總知識點數等
Wiki 檔案輸出到與知識整理檔案相同的目錄
這個 Skill 質量較高,能有效將 PDF 筆記轉換為結構化 Markdown 文件。它設計了多種處理方式來適應不同環境,圖片和表格都能妥善處理。最突出的是對內容真實性的堅持——不編造、不借用外部內容,OCR 識別結果也會誠實標註。不過它缺少示例和常見問題解答,遇到問題時可能需要自行摸索。總體而言功能完整可靠,是整理 PDF 筆記的好幫手。