Skip to content

Latest commit

 

History

History
executable file
·
160 lines (119 loc) · 4.46 KB

File metadata and controls

executable file
·
160 lines (119 loc) · 4.46 KB

Failure Analysis 報告

分析對象: train_v99_selective_merge.csv (最佳實驗結果)
F1 Score: 0.175
日期: 2025-12-09


📈 Overview 總覽

指標 數量 百分比
總樣本數 151 100%
GT 有標籤 76 50.3%
GT 為 NONE 75 49.7%
預測有標籤 62 41.1%
預測為 NONE 89 58.9%

🎯 錯誤分類

類型 數量 說明
✅ True Positive 12 Code 正確 + IoU ≥ 0.5
🟡 Code Correct, Low IoU 18 Code 正確但 IoU < 0.5
🔴 Code Mismatch 15 預測了錯誤的 Code
❌ False Negative 53 GT 存在但未預測
⚠️ False Positive 21 預測存在但 GT 無

錯誤分佈圖

True Positive:      ████████████ (12)
Code Correct/Low IoU: ██████████████████ (18)  ← 關鍵問題
Code Mismatch:      ███████████████ (15)
False Negative:     █████████████████████████████████████████████████████ (53)  ← 最大問題
False Positive:     █████████████████████ (21)

🔴 最常漏檢的 Codes (False Negatives)

Code 漏檢次數 說明
TC-SC-320a.1 7 半導體員工多樣性
TC-HW-330a.1 4 硬體員工參與度
EM-RM-320a.2 4 精煉廢水管理
EM-RM-530a.1 4 精煉政治支出
TC-SC-150a.1 3 半導體能源管理
EM-RM-110a.2 3 精煉GHG排放
TC-SC-140a.1 3 半導體水資源管理
FN-CB-240a.1 3 金融歧視事件

🟠 最常誤報的 Codes (False Positives)

Code 誤報次數
FN-CB-230a.2 6
TC-SC-320a.1 3
FN-CB-410a.2 2
TC-SC-140a.1 2

🟡 Low IoU 分析 (Code 正確但 IoU < 0.5)

這是最關鍵的問題!18 個樣本 Code 正確但因 IoU 不足被判定為錯誤。

典型案例

ID Code IoU GT BBox Pred BBox 問題分析
010 FN-CB-230a.2 0.416 [55,94,826,549] [82,113,420,545] 預測框寬度不足
036 TC-SC-440a.1 0.475 [26,89,485,348] [38,127,475,543] 高度差異大
093 FN-CB-230a.2 0.255 [54,95,428,398] [67,103,416,186] 高度嚴重不足
103 TC-HW-440a.1 0.238 [422,207,753,534] [415,86,888,340] Y 軸偏移
112 TC-HW-330a.1 0.028 [201,144,375,159] [87,87,486,320] 完全偏移
123 FN-CB-410a.2 0.352 [53,57,830,593] [70,85,785,290] 高度不足

IoU 分佈

IoU = 0:        ████████ (8)   ← 完全無重疊
IoU 0.1-0.3:    ████████ (4)
IoU 0.3-0.4:    ██████ (3)
IoU 0.4-0.5:    ██████ (3)     ← 接近通過

💡 關鍵洞察

1. ⚠️ 座標系統問題 (Critical)

18 個預測 Code 正確但 IoU < 0.5,說明:

  • 我們找到了正確的內容
  • 但 BBox 座標與 GT 不匹配
  • 這是座標系統轉換問題

解決方案: 實作 normalize_bbox_to_pdf_points() 函數

2. ⚠️ 高 False Negative (53/98)

超過一半的 GT 標籤未被預測:

  • Retrieval 階段未召回正確的 segments
  • LLM 評分不足導致被過濾

解決方案:

  • 降低 score_threshold 到 0.45
  • 增加 reranker_top_k 到 15

3. ⚠️ 語義理解問題

某些 Code 頻繁被漏檢 (TC-SC-320a.1, EM-RM-320a.2):

  • 可能是 Embedding 模型對這些指標的理解不足
  • 需要考慮其他 Embedding 模型

📋 改進建議

優先順序 1: 修復座標系統

# 在 main.py 中加入
if page_width > 860:
    scale = 842 / page_width
    bbox = [b * scale for b in bbox]

預期效果: +0.08~0.10 F1 (18 個 low-IoU 樣本可能變成 TP)

優先順序 2: 提高 Recall

# config.py
score_threshold = 0.45
reranker_top_k = 15
top_k_candidates_per_metric = 8

預期效果: +0.05 F1

優先順序 3: 嘗試其他 Embedding

  • BAAI/bge-large-zh-v1.5 (中文優化)
  • intfloat/multilingual-e5-large

預期效果: +0.02~0.05 F1


📊 預期改進後 F1

改進項目 預期提升 累計 F1
當前 - 0.175
座標修復 +0.08 0.255
Recall 提升 +0.05 0.305
Embedding 優化 +0.03 0.335
目標 - 0.35+