🧾 #72 動支及黏存單自動產生系統:拖廠商報價 PDF → PDF.js 自動解析品項數量單價 → 填入學校官方制式 Excel 範本
#72 不是「老師手鍵動支單」 — 是拖廠商報價 PDF → PDF.js 3.11 座標式擷取 + Tesseract.js OCR fallback → 自動填入石門國小現用 template.xlsx(含「預算內」「代收代辦」兩工作表)。教育部歲出政事別三碼代號內建,純瀏覽器零後端,PDF 不傳外部 server。
公立國小報帳有多痛?
帶過行政組的老師都知道,報帳是吞噬空堂的黑洞。一筆 200 元的圖書採購:
- 拿發票 → 黏到 A4 黏存單
- 動支經費申請表手寫 / 排版 → 寫經費代號 + 金額大寫小寫
- 跑核章:組長 → 主任 → 校長 → 會計 → 出納
- 中間任一張單子格式不對 → 退件重排
「我光排版那張動支單就 40 分鐘」是石門國小同事的真心話。
為什麼這麼麻煩?
公立學校的報帳格式是公文格式:
| 欄位 | 要求 |
|---|---|
| 經費科目 | 6 位數代號(要從手冊查) |
| 金額大寫 | 「新台幣參佰陸拾元整」(要手寫對) |
| 用途說明 | 不能用流水帳,要寫「目的 + 受益對象」 |
| 黏貼方式 | 發票要正面朝上、上下對齊、不能蓋到金額 |
最痛: 每張單子都要重排,去年的 Word 檔今年又會被會計打槍說格式錯了。
#72 怎麼解?(真實技術細節,不是手鍵欄位!)
功能 A:拖廠商報價 PDF 自動解析(核心)
- PDF.js 3.11.174 座標式擷取自動辨識:
- 品名規格
- 數量
- 單價
- 正確合併跨行品名(耗材報價型號常寫第二行)
- 掃描版 PDF 走 Tesseract.js 4.x OCR(按需載入、支援繁中)
功能 B:官方制式 Excel 範本 1:1 保留
- 範本是石門國小現用制式表
template/template.xlsx - 內含**「預算內」「代收代辦」兩個工作表**(會計法規分開帳)
- 動支單 + 黏存單合一:學校採購後黏發票送會計
- 代收代辦獨立工作表:家長會代收 / 午餐費 / 押標金 / 履約保證金
功能 C:雙模式部署(同樣品質)
- 本地模式(綠徽章):
python run.py+ openpyxl - GitHub Pages 靜態模式(黃徽章):JSZip 直接修補 xlsx XML
- v1.3.0 為了根除 ExcelJS 產出損壞改用 JSZip
功能 D:預算科目下拉選單(教育部歲出政事別三碼代號)
- 一級科目 11 類、二級科目近 40 項
- 完整三碼代號:113 職員薪金 / 241 印刷及裝訂費 / 322 報章什誌 / 514 購置機械及設備 / 521 購置電腦軟體⋯
功能 E:石門國小客製單位別
- 9 個處室寫死:總務 / 教務 / 學務 / 輔導 / 人事 / 會計 / 出納 / 午餐秘書 / 幼兒園
- README 明說「換 template + 改 fill_excel.py 欄位對應即可移植」其他學校
功能 F:品項列固定 8 筆
- 範本固定列號
[15, 17, 19, 21, 23, 25, 27, 29](中間夾空白列做視覺分隔) - 超過會 UI 警告
功能 G:LocalStorage 記憶老師偏好
- 上次填寫的單位別、表單類型、預算科目
- 老師通常一直在同個處室、用同一個科目,免重複選
真實技術棧
- 純 HTML/CSS/JS(無框架),RWD 適配到 375px
- PDF.js 3.11.174 + Tesseract.js 4.x(OCR fallback)
- JSZip 3.10.1(直接改 xlsx 內 XML)+ Python openpyxl 雙引擎
- 字型:Noto Sans TC
- 隱私 first:純瀏覽器端 / 純本機處理,PDF 不傳任何外部 server
- 當前 v1.4.0(2026-03-23,含 OCR 支援)
重要釐清
- 「動支單」+「黏存單」是同一張:學校採購後,廠商收據 / 發票要黏在「黏存單」上送會計室核銷;動支單則是「同意動用此筆預算」的內部簽呈。這份 Excel 範本把兩者合一,列印一張搞定。
- 「金額大寫自動轉換」沒這個功能 — 交給範本內的 Excel 公式處理
實測數字(石門國小 115 學年度上學期)
| 指標 | 用 #72 前 | 用 #72 後 |
|---|---|---|
| 單筆報帳排版時間 | 40 分鐘 | 5 分鐘 |
| 一學期報帳次數 | 8-12 筆/人 | 12-15 筆/人(不再拖延) |
| 會計組退件率 | 30%(格式錯) | 2%(極少) |
| 老師空堂被報帳吞噬比例 | 約 30% | 5% |
同事真心話
「以前我有發票都拖到月底才報,因為光想到要排版就崩潰。現在當天就丟進 #72 然後送出去,會計小姐還問我為什麼變這麼勤快」
— 石門國小四年級導師
「核章退件率從 3 成降到接近 0 — 我終於可以準時下班」
— 會計組同事
配對工具推薦
- #2 行政業務協調系統 — 跨處室公文流向追蹤
- #84 會議記錄自動產出平台 Pro 版 — 行政會議記錄一條龍
- #72 動支及黏存單 — 本篇主角,會計核銷終結者
適用對象
- 國中小所有導師(年年都要報班級費)
- 行政組長(採購 / 設備 / 教學組大量採購)
- 學校會計 / 出納(退件少 = 工作量少)
- 私立補習班 / 安親班行政
想試試?
第一次用建議從「圖書 / 文具」這種簡單品項開始 — 5 分鐘就能感受到效率躍進。