exam-paper-plugin:解析 Word/PDF 題目,並本地生成可打印試卷

前言

在 DSH 的插件工作方式裏,很多重複文檔任務可以拆成獨立插件。出題流程裏比較常見的痛點,是題目散在 .doc.docx.pdf.txt.md 文件裏,需要人工識別題型、挑選題目、排版成可打印試卷;如果直接讓模型讀完整題庫,上下文和 Token 消耗也會比較高。exam-paper-plugin 針對這個流程提供基礎解析出卷,以及本地智能索引、聚類、檢索和抽題。下面介紹它的能力、安裝方式和常用命令。

這是什麼

exam-paper-plugin 是 elegymythos 維護的 DeepSeek Harness 插件,許可證爲 MIT。它把題目文件解析成可處理結構,按需抽題,並生成 .docx.html 試卷;智能引擎部分在本地做特徵提取、聚類、向量檢索和多樣性重排。

核心功能

基礎出卷

  • 自動解析 .doc / .docx / .pdf / .txt / .md 題目文件。
  • 識別選擇題、填空題、判斷題、解答題、作文等題型。
  • 提取題幹、選項和配圖;圖片不處理內容,僅保留位置關聯與 has_image 標記。
  • 支持 WMF/EMF 公式圖:DOCX 輸出補齊內容類型,HTML 輸出自動轉換爲 PNG 預覽。
  • 按需抽題並生成 .docx + .html 試卷。
  • 支持卷頭、書寫空隙、選擇題雙列等出卷配置。

智能引擎

  • 多視圖特徵提取:文本、分類、結構、統計。
  • HDBSCAN 自動聚類,支持離羣點識別與聚類解釋報告。
  • FAISS 向量索引與餘弦相似度檢索。
  • 分類硬過濾 + 向量召回 + MMR 多樣性重排。
  • 提供 index_question_banksmart_select_questions 工具。
  • 提供 CLI 與 Python API,用於本地智能索引、聚類、檢索與抽題。
  • 支持版本化評估工具和本地 Ollama Token 消耗評估。

安裝與啓用

插件依賴 @deepseek-ai/dsh-tools >=0.1.0-rc.0。按 DSH 插件方式安裝時,可以使用倉庫給出的 bundle 命令:

dsh plugin --profile <name> add "github:<owner>/exam-paper-plugin"

<name> 是 profile 名,<owner> 是倉庫 owner,按實際環境替換。

智能引擎依賴集中在 requirements.txt。安裝腳本默認創建 .venv 隔離 Python 依賴。如果未安裝智能引擎依賴,原有 parse_question_file / generate_exam_paper 仍可使用。

典型用法

基礎出卷

上傳或指定題目文件後,可以對 Harness 會話說:

解析 /path/to/數學試卷.docx 裏的題目

繼續指定抽題和出卷參數:

要第 1、3、5 題,標題「數學單元測驗(一)」,解答題留 8 行橫線

這一步會按指定題目生成可打印試卷,輸出包含 .docx.html

智能抽題

智能抽題使用 index_question_banksmart_select_questions 工具。對會話說:

用智能抽題從這些文件裏選 5 道數學函數題

流程會先建立本地索引,再執行分類硬過濾、向量召回和 MMR 多樣性重排,返回少量候選題。

CLI

獨立運行智能引擎時,先初始化工作區:

python -m smart_engine.cli --workdir ./data/engine init

導入示例題目、建立索引和聚類:

python -m smart_engine.cli --workdir ./data/engine import data/sample/questions.json
python -m smart_engine.cli --workdir ./data/engine build-index
python -m smart_engine.cli --workdir ./data/engine cluster

檢索和抽題:

python -m smart_engine.cli --workdir ./data/engine search --query "二次函數" --top-k 5
python -m smart_engine.cli --workdir ./data/engine select --query "二次函數" --count 3

版本化評估與本地 Ollama Token 評估:

python -m smart_engine.cli --workdir ./data/engine eval quick
python -m smart_engine.cli --workdir ./data/engine eval token --model deepseek-r1:1.5b --sample-questions 20 --num-ctx 16384

適用場景與注意

適合在本地維護題庫、需要把 Word/PDF 題目轉成可打印試卷、並希望減少完整題庫進入大模型上下文的 DSH 用戶。

使用前注意幾點:

  • 插件以當前 dsh 進程權限運行。安裝前應檢查源碼與許可證。
  • 圖片只保留位置關聯與 has_image 標記,不處理圖片內容。
  • 智能引擎不引入難度維度。
  • 基礎解析引擎繼續零第三方依賴;智能引擎依賴集中在 requirements.txt,默認通過 .venv 隔離。
  • 真實試卷等大文件建議放在 data/ 下,但已被 .gitignore 排除;智能引擎運行數據位於 data/engine*/ 或會話工作區 .exam-paper/,同樣不會提交。

結尾

exam-paper-plugin 把“解析題目、抽題、生成可打印試卷”放到本地插件裏處理,再用智能引擎做索引、聚類、檢索和多樣性重排,適合作爲 DSH 出題流程的基礎能力。可以在 DeepSeek Harness 社區目錄按 exam-paper-plugin 查找,也可以訪問 GitHub 倉庫:

https://github.com/elegymythos/exam-paper-plugin.git

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜