Commit History

  1. Upload 33 files Running

    Verified signature
    a801bc2
  2. Upload 33 files

    Verified signature
    d4b4554
  3. Upload 27 files

    Verified signature
    4596576

  1. Update app.py

    Verified signature
    0977554
  2. Upload 13 files

    Verified signature
    511f7f8

  1. Upload template.jpg

    Verified signature
    e97977b
  2. Delete template.jpg

    Verified signature
    942cfab
  3. Update README.md

    Verified signature
    bf7dd26
  4. Update app.py

    Verified signature
    126c5e2
  5. Update requirements.txt

    Verified signature
    7f20859
  6. Update README.md

    Verified signature
    f93acc3
  7. Update README.md

    Verified signature
    11d4c61
  8. Update app.py

    Verified signature
    54ad522
  9. Update packages.txt

    Verified signature
    ed03f96
  10. Update README.md

    Verified signature
    19705be
  11. Update requirements.txt

    Verified signature
    a59f2f7

  1. Delete template (8).jpg

    Verified signature
    22ed45a
  2. Upload template.jpg

    Verified signature
    486ad38

  1. Upload template (8).jpg

    Verified signature
    d11ed62
  2. Delete template.jpg

    Verified signature
    94433d1
  3. Update app.py

    Verified signature
    c0829cd
  4. Update app.py

    Verified signature
    0af0b16
  5. Update app.py⁠

    Verified signature
    01a91b1
  6. 💡 這次改動為你解決了什麼? 智能光照均勻化(remove_photo_shadows_and_glare): 新代碼在圖片送進 OMRChecker 前,會先利用 OpenCV 計算出整張照片的「環境光亮度地圖」。然後用原圖去除以這張亮度地圖。這樣一來,不管你的照片是上方亮下方暗、還是中間有手機倒影,紙張的底色都會被強制算成純白色,只有真正的鉛筆劃記才會保持黑色。這能直接解決因為陰影導致的「空白題變全選」! 深域核心探測(Deep Shrinkage): 我們把 shrink_w 提高到了 22 像素,shrink_h 提高到 12 像素。這相當於把原本 60x30 的氣泡感應格,大幅縮小成只有方框正中央的一小塊區域。就算手機拍照有點斜、或者對齊稍微歪了一點,探測點也絕對不會碰到 DSE 答題卡原本印刷的 [ A ] 外框黑線,從源頭切斷了外框溢入導致的錯誤。 優化多數決安全機制(Smart Voting): 在最後的決策投票中,系統會檢查多輪掃描的狀態。如果某一題在大部分的極端模式下都是空白,只有在某一輪被判定有答案,系統會聰明地識別出那是「雜訊干擾」,自動將其恢復為真正的「空白(—)」。

    Verified signature
    68cb021
  7. Upload template.jpg

    Verified signature
    8b2be8b
  8. Delete template.png

    Verified signature
    141313c
  9. Upload template.png

    Verified signature
    356d32c
  10. Delete template.jpg

    Verified signature
    f251024

  1. Update app.py⁠

    Verified signature
    efc3463

  1. Update app.py

    Verified signature
    72d338b
  2. 這裡為您將動態 OpenAPI 容錯補丁、多重採樣與多數決決策融合(Ensemble Voting) 的核心閱卷邏輯,以及支援 API 呼叫的 Gradio 規格(允許傳入 Template JSON) 完美融合。 此版本的設計重點: 介面與功能保持一致:保留了您最核心的 3 輪不同靈敏度(Level 1~3)交叉掃描、分歧偵測、多數決投票與 4 欄式 Markdown 答案摘要輸出。 完美相容 API 呼叫:將 template_content 作為第二個輸入參數,讓 Google Apps Script (GAS) 呼叫時能動態帶入 DSE 考卷的 JSON 結構;若手動在網頁端操作時忘記填寫,程式會自動降級(Fallback)自動撈取當前目錄下的 template*.json 檔案,確保網頁端不用手動貼上 JSON 也能一鍵閱卷! 融合 OpenAPI 容錯補丁:保留了頂部的 Gradio 布林值解析崩潰補丁,確保 API 管道暢通無阻。

    Verified signature
    b02525f
  3. 根本原因: 當 Hugging Face 雲端環境或 OMRChecker 的依賴項自動更新了 FastAPI 或 Pydantic 時,新版的 OpenAPI 標準會將 JSON Schema 中的 additionalProperties 欄位輸出為布林值(True 或 False)。 然而,目前該版本的 Gradio 內部解析器硬性假設 additionalProperties 一定是一個「字典(Dict)」,並直接執行了 "const" in schema 檢查。當它讀到布林值時,就會直接拋出 TypeError 導致整個 Web 服務在初始化時 500 崩潰。 🛠️ 解決方案:套用「猴子補丁 (Monkey Patch)」 由於我們無法直接修改 Hugging Face 伺服器內建的 gradio_client 套件原始碼,最完美、最優雅的解法就是在您的 app.py 頂部加入一段動態攔截補丁。當 Gradio 試圖解析布林值的 Schema 時,由補丁提前攔截並安全回傳,防止其崩潰。

    Verified signature
    aa904f2
  4. Update app.py

    Verified signature
    949ad8f

  1. Update app.py

    Verified signature
    d09add2
  2. Update app.py

    Verified signature
    4bbe0e3
  3. Upload template.json

    Verified signature
    4e69ff9
  4. Update app.py

    Verified signature
    ce0e348
  5. Upload template.jpg

    Verified signature
    042d6cb
  6. Update app.py

    Verified signature
    fbc5fca

  1. Update app.py

    Verified signature
    89f8e2e
  2. Update app.py

    Verified signature
    967fa6c
  3. Update app.py

    Verified signature
    41de365
  4. Update app.py

    Verified signature
    e771198
  5. Update app.py

    Verified signature
    854041f
  6. Update app.py

    Verified signature
    bb1f474
  7. Delete template.json

    Verified signature
    e186f80
  8. Delete config.json

    Verified signature
    dc4ff5c
  9. Update app.py

    Verified signature
    bb5a8cf
  10. Update app.py

    Verified signature
    5213eea
  11. Update app.py

    Verified signature
    8a2b1e8