Communitygithub.com

jtepe/slopclub

一個 AI 代理技能,用於高效讀取、搜尋與提取 PDF 文件中的文字與圖片。

slopclub 是什麼?

此技能提供一系列的 PDF 操作工具,使用者可透過本文件旁的 `pdfread.py` 腳本來讀取 PDF 內容。它支援兩種執行方式:一是透過 [uv](https://docs.astral.sh/uv/) 0.11 以上版本(推薦),腳本會自動處理依賴;二是使用標準的 Python 3.10 以上環境,但需手動安裝 `pymupdf4llm` 套件。核心功能包括文件資訊查詢、基於 FTS5 的全文搜尋(支援 BM25 排名、詞組精確匹配、前綴搜尋與進階語法)、文字與圖片的提取,以及頁面渲染。此技能特別適合處理大型 PDF 文件,建議先使用搜尋功能定位相關頁面,再透過子代理平行處理不同章節,最後在主要對話中整合結果,以避免將大量原始文字匯入對話中。支援的執行平台包括所有 Python 3.10+ 環境,但搜尋功能需要 SQLite 的 FTS5 擴展。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add jtepe/slopclub

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

使用本檔案旁的 pdfread.py 工具來讀取 PDF。執行方式有兩種:

  • 使用 uv 0.11 以上版本(推薦):直接執行 pdfread.py — shebang 會讓它透過 uv run 執行,第一次執行會下載相依套件,可能需要一分鐘。
  • 不使用 uv:在已安裝 pymupdf4llm>=0.0.17 的 Python 3.10+ 環境中,使用 python3 pdfread.py … 即可(pip install pymupdf4llm)。

search 命令需要支援 FTS5 的 SQLite;由 uv 管理的 Python 以及絕大多數現代系統的 Python 都包含此功能,若缺少,腳本會清楚提示錯誤。

執行 pdfread.py --help 查看完整用法。簡要說明如下:

  • pdfread.py info FILE — 頁數、元資料、大綱/目錄。從這裡開始。
  • pdfread.py search FILE "terms" — 尋找提及關鍵字的頁面,採用 BM25 排序並附帶每個匹配的片段。初次搜尋會建立快取索引(需數秒);後續搜尋即時完成。搜尋詞預設為 AND 邏輯,term* 可匹配前綴,--raw 啟用完整的 FTS5 語法("exact phrase"、OR、NEAR)。僅限文字圖層 — 掃描頁面無法搜尋。
  • pdfread.py text FILE --pages 10-25 — 指定頁碼範圍(從 1 開始)的 Markdown 格式文字。圖片會以 [image: p12-img2 640x480px] 佔位符表示。
  • pdfread.py image FILE p12-img2 — 將該圖片儲存為 PNG 並輸出其路徑;使用您的檔案讀取工具檢視。
  • pdfread.py images FILE --pages 12 — 列出頁面上的圖片 ID。
  • pdfread.py render FILE 7 — 將整頁(或使用 --rect x0,y0,x1,y1 裁切)渲染為 PNG;適用於掃描頁面以及文字圖層遺漏的內容。

處理大型 PDF 時的上下文保留策略

對於精確問題(如「合約中何處提到解約費用?」),請先執行 search,再使用 text --pages 只讀取命中的頁面 — 無需子代理分散處理。索引快取是共用的,因此子代理也能使用 search 而無需重建索引。

對於廣泛的綜合分析,請不要將整個文件倒入主要對話中。

請改為:

  1. 執行 info 取得頁數與大綱,並將文件分成合理的區段(按章節,或約 15–25 頁)。
  2. 為每個區段啟動一個子代理,並指示:「執行 <path>/pdfread.py text <file> --pages 10-25 並回答 <使用者的問題> / 以最多 N 字總結。如果 [image: ...] 佔位符看起來相關,請使用 image 命令提取並檢視它。」
  3. 僅將總結/答案保留在主對話中,並據此進行綜合分析。僅在總結表明答案在某個頁面時,才由您自己直接重新定位該頁面。

備註

  • 無 OCR 功能:沒有文字圖層的頁面只會傳回全頁的 [image: ...] 佔位符(或「無法提取文字」的提示)— 請提取或 render 該頁面,並以視覺方式讀取圖片。
  • 提取具有確定性:圖片 ID 在不同執行之間保持穩定,因此子代理回報的 ID 可在稍後的主對話中提取。

相關技能