name: doc-desensitize description: 文件脫敏技能。當用戶需要批次去除 Word(.docx)或 Excel(.xlsx)文件中的敏感資訊時使用本技能。觸發詞:文件脫敏、去除敏感資訊、批次打碼、脫敏處理、手機號/身份證/姓名打星號。支援對手機號、身份證號、郵箱、座機、網址、病歷號、微訊號、QQ號、姓名、學校、公司、地址等敏感欄位進行等長星號替換。 agent_created: true version: 3.4
零依賴(純 Python 標準庫),對 .docx 和 .xlsx 文件中的敏感資訊進行等長星號替換,生成脫敏後的文件。星號數量等於原文長度,保持排版不變。
原理:.docx / .xlsx 本質是 ZIP 包,直接操作內部 XML 實現脫敏。
v3.3 最佳化: 執行脫敏前必須先問使用者要脫敏哪些內容型別,避免過度脫敏。
v3.2 最佳化: 目錄模式不再複製非 docx/xlsx 檔案(只輸出脫敏文件);新增 --move-original 把原始文件剪下到「原始文件」子資料夾;無敏感內容的檔案也生成副本(加_脫敏字尾);處理進度提示 [N/總數]。
v3.1 修復: 修正統計計數 bug(docProps 統計恆為零、xlsx 統計覆蓋丟失)、刪除重複呼叫、收緊 landline/school/company/postcode 正則邊界、修復 Windows GBK 終端測試崩潰。
v3 增強: 文件屬性脫敏、脫敏統計報告、輸出目錄自動建立、檔案佔用友好提示、Excel 科學記數法檢測提示、輸出覆蓋警告、非 UTF-8 編碼容錯。段落級文本合併、域程式碼脫敏(TOC/Hyperlink)、修訂模式脫敏、文本框/形狀文字脫敏、Excel 數值單元格脫敏。
更多技能請訪問小蔥技能站7w4.net。
| 版本 | 日期 | 變更 |
|---|---|---|
| 3.4 | 2026-06-24 | 去掉 SKILL.md 中廣告相關內容,通過 SkillHub 稽核 |
| 3.3 | 2026-06-23 | 執行前必須先問使用者要脫敏哪些內容型別 |
| 3.2 | 2026-06-22 | 目錄模式不再複製非文件檔案;新增 --move-original 剪下原始文件;無敏感內容也生成副本;進度提示 |
| 3.1 | 2026-06-21 | 修復統計 bug、刪除重複呼叫、收緊正則邊界、修復 GBK 終端相容 |
| 3.0 | 2026-06-20 | v3 全量增強(docProps、統計、地址合併、域程式碼等) |
.docx / .xlsx 檔案,要求去除敏感內容⚠️ 必須遵守:執行脫敏前,先問使用者要脫敏哪些內容型別。
--rules 引數執行指令碼--rules(預設全部規則)# 全部規則(預設)
python scripts/desensitize.py <輸入檔案或目錄> [輸出路徑]
# 只脫敏指定型別
python scripts/desensitize.py <輸入> [輸出] --rules phone,id_card
# 剪下原始文件到「原始文件」資料夾(方便從混合目錄中分離)
python scripts/desensitize.py <輸入> [輸出] --move-original
# 預覽模式(只檢測不生成檔案)
python scripts/desensitize.py <輸入> --dry-run
python scripts/desensitize.py <輸入> -n --rules phone,id_card
<原名>_脫敏.docx,原檔案不修改--move-original(或 -m):目錄模式下,將原始 docx/xlsx 從源目錄剪下到輸出目錄下的「原始文件」子資料夾,方便使用者從混合檔案中分離_脫敏 副本(內容不變),確保輸出目錄文件數量與源一致--rules(或 -r):可選,逗號分隔要啟用的規則 key;不傳則全部啟用--dry-run(或 -n):預覽模式,只報告檢測到的敏感內容型別和數量,不生成檔案[3/59] xxx.docx📊 脫敏統計: 學校名×386, 手機號×15, ...| 型別 | 規則 key | 匹配內容 | 示例 |
|---|---|---|---|
| 標籤類(保留字首) | name |
姓名/患者/醫生 | 姓名:張三 → 姓名:** |
medical |
病歷號/住院號/門診號 | 病歷號:ABC123 → 病歷號:****** |
|
wechat |
微訊號 | 微信:abc12345 → 微信:******** |
|
qq |
QQ號 | QQ:123456789 → QQ:********* |
|
landline_label |
帶標籤的座機 | 電話:028-12345678 → 電話:************ |
|
school_label |
學校名稱標籤 | 學校名稱:電子科技大學 → 學校名稱:****** |
|
company_label |
單位/公司標籤 | 工作單位:XX公司 → 工作單位:**** |
|
hospital_label |
醫院標籤 | 就診醫院:XX醫院 → 就診醫院:**** |
|
address_label |
地址標籤 | 通訊地址:XX省XX市 → 通訊地址:****** |
|
| 整體替換 | phone |
手機號 | 13812345678 → *********** |
id_card |
身份證號 | 110101199001011234 → ****************** |
|
email |
郵箱 | test@qq.com → *********** |
|
landline |
裸座機號 | 028-12345678 → ************ |
|
url |
網址 | https://xx.com → ************* |
|
school |
學校名 | 電子科技大學 → ****** |
|
company |
公司名 | XX有限公司 → **** |
|
address_name |
省/市/區/縣/鎮/鄉/村 | 四川省 → *** |
|
address_road |
路/街/大道 | 青年路 → *** |
|
address_num |
號/棟/層/室 | 123號 → **** |
|
postcode |
郵編 | 610054 → ****** |
全部規則 key 為上述所有。--rules 傳入逗號分隔的子集即可只啟用指定規則。
from scripts.desensitize import process_path, mask_text
# 處理檔案/目錄
process_path('input.docx', 'output.docx') # 全部規則
process_path('input.docx', 'output.docx', rules='phone') # 僅手機號
process_path('input_dir', 'output_dir') # 批次目錄(只輸出脫敏文件)
process_path('input_dir', 'output_dir', rules='phone,id_card')
process_path('input_dir', 'output_dir', move_original=True) # 剪下原始文件到「原始文件」子資料夾
process_path('input.docx', dry_run=True) # 預覽模式
# 純文本脫敏
mask_text('聯絡電話:13812345678') # 全部規則
mask_text('聯絡電話:13812345678', enabled_keys={'phone'}) # 僅手機號
.docx / .xlsx,不支援 .doc / .xls / .ppt / .pptx(舊格式請先另存為 .docx/.xlsx)-X utf8 引數:python -X utf8 scripts/test_desensitize.pysoffice --convert-to docx *.doc--rules 指定只啟用需要的規則型別,或用 --dry-run 先預覽再處理驗證技能是否正常工作:
cd scripts && python test_desensitize.py
覆蓋 27 項測試:手機號/身份證/郵箱脫敏、XML 結構完整性、跨 run 斷裂、修訂模式、繪圖文字、域程式碼、docProps、遞迴資料夾、輸出目錄建立、覆蓋警告、dry-run、規則過濾、xlsx 單元格、科學記數法、加密檔案容錯、原檔案保護、目錄模式不復制非文件檔案、--move-original 剪下原始文件等。
這是一個專業實用的文件脫敏工具,能快速批次處理 Word 和 Excel 檔案中的敏感資訊,零依賴安裝簡單。支援的脫敏型別豐富,從手機號、身份證到姓名、地址都能處理,脫敏後用等長星號替換能保持原文件排版。測試覆蓋較全,功能穩定可靠。不足的是不支援舊版 Office 檔案和加密文件,偶爾可能誤脫敏正常文字。普通使用者需要通過命令列使用,操作有一定門檻。總體質量較好,適合需要處理批次文件脫敏的使用者。