課表 PDF 查一堂課要滑老半天?我 fork 了一個開源小工具,讓 AI 幫你把課表變成可搜尋的網頁
你有沒有被課表 PDF 折磨過?
學期初發下來那張課表,通常是 PDF、Word,或乾脆一張拍糊的照片。想知道「王老師禮拜三第幾節有空」,你得在那張密密麻麻的表格上滑上滑下、瞇著眼睛對格子——找到的時候,眼睛也差不多花了。
👉 想直接看成品的,工具已經上線了:課表查詢系統(免費、免安裝、開瀏覽器就能用)。下面聊聊它在解決什麼、以及一件我想先講清楚的事。
這個工具不是我從零做的,是 fork 自奕鈞老師的 timetable-demo。 查詢系統的骨架、班級和教師的對照邏輯,都是原作者先鋪好的路,我只是接手改了使用方式。這篇與其說是「介紹我的工具」,不如說是「一個站在別人肩膀上的小改造,順便記一下我學到什麼」。
TL;DR 一個純前端的課表查詢網頁,fork 自奕鈞老師的開源專案。 用法:先請 AI(Gemini/ChatGPT/Claude)把你的課表轉成 CSV → 匯入網頁 → 查班級、查老師、查空堂。 重點:資料只存在你自己的瀏覽器,不上傳;把「讀懂亂七八糟的 PDF」這種苦工丟給 AI,程式只負責它擅長的查詢。
這工具到底在解決什麼?
一句話:把一張難查的課表,變成可以直接搜尋的網頁——查班級、查老師、查誰哪節空堂,點兩下就好。
原本的痛點很單純:課表是「給人看的排版」,不是「給人查的資料」。一張紙上塞滿所有班級所有節次,你要的資訊明明在裡面,就是不好撈。
這個工具做的事,就是把那張表格拆成一格一格的資料,再讓你用班級或老師去查。查出來的畫面乾淨、手機也能看,還能直接列印。

為什麼是「先用 AI 轉檔,再匯入」這種怪流程?
因為讀懂各式各樣的課表格式,是程式最不擅長、AI 最擅長的那種苦工。
你想想,每間學校的課表長得都不一樣:有人用 Word 表格、有人用 Excel、有人直接掃描成 PDF、還有人給你一張手機拍的照片。要寫程式去自動解析這些千奇百怪的版面,會寫到懷疑人生(而且下一間學校格式一換又要重寫)。
所以這個工具乾脆換個思路:苦工丟給 AI,程式只做它擅長的事。
實際流程是這樣:
- 打開 Gemini / ChatGPT / Claude,把你的課表檔案(PDF、Word、Excel、照片都行)丟給它。
- 回到網頁按「提示模板」,複製那段轉檔用的 prompt。
- 把 prompt 貼給 AI,請它整理成一份標準 CSV。
- 下載 AI 產生的
timetable_import.csv。 - 回網頁按「匯入檔案」,就能開始查了。

那個內建的 prompt 我有花心思調過,其中一招是請 AI 拿班級課表和教師課表交叉比對,盡量把每一格真正的授課老師補齊、少填 UNKNOWN。畢竟 AI 轉出來的東西不會 100% 完美,但方向對了,後面手動修的力氣就少很多。
那份 CSV 長這樣,格式簡單到 AI 很好產生:
school,class,day,period,subject,teacher,location
市立範例高中,機械一甲,1,1,國文,王小明,機械一甲教室
市立範例高中,機械一甲,1,2,數學,李小華,
市立範例高中,電子二乙,3,5,英文,陳美玲,
day:星期,1~5對應週一到週五period:節次,0是早自習,1~8是第 1 到第 8 節- 沒有地點就留空,不影響查詢
💡 這種「把模糊、非結構化的工作外包給 AI,程式只接手乾淨的結構化資料」的分工,其實很多小工具都能用。與其硬寫一個什麼格式都吃的解析器,不如讓 AI 當你的前處理。
你的課表資料會被上傳嗎?不會
這點我要特別講,因為課表裡有真實的老師姓名、班級,算是不太適合外流的資料。
純前端(client-side) 的意思是:所有運算都在你自己的瀏覽器裡跑,沒有後端伺服器、沒有資料庫,你的資料不會被送到任何地方。
匯入的 CSV 只會存在你瀏覽器的 localStorage,不會上傳到 GitHub、我的伺服器,或任何第三方。
代價是:換一台裝置、換一個瀏覽器、或清掉網站資料,就要重新匯入一次。對這種工具來說,我覺得「資料留在自己手上」比「雲端同步方便」更重要,所以這個取捨我是刻意的。
匯入完怎麼查?三種模式
匯入 CSV 後按「課表搜尋」,會看到三種查法,對應不同情境:
1. 班級查詢——先選科別、再選班級,看整個班一週的課。學生、家長最常用這個。

2. 教師查詢——先選科目、再選老師,看某位老師的課表。

3. 依師查詢——這是我額外新增的功能,直接打老師名字,可以看他的完整課表,也可以只看某一科。想確認「某位老師這禮拜哪節有空」,用這個最快。

畫面都走支援深淺模式、手機平板也能看,查完的課表可以直接列印帶走。
這是 fork 來的——我在原作基礎上動了哪些地方
先把定位擺正:原作者奕鈞老師把最難的部分做好了——查詢系統的架構、班級/教師的資料模型、課表怎麼渲染,這些骨架都是現成的。我做的比較像「換一套使用方式」,而不是重寫。
我只新增了這幾處:
- 加上 AI 轉檔的首頁流程:內建那段提示模板,把「PDF → CSV」這段最卡的路變順。
- 處理沒有老師的課:像班會、團體活動這種沒有明確授課老師的格子,程式會用「班級+科目」當獨立主鍵,避免不同班級被誤合併成一長串亂碼。
- 新增依師查詢功能:可以直接搜索老師姓名,查看其課表。
這工具適合誰?
- 學校老師或需要快速查課表的人,尤其你手上那份課表是難查的 PDF / Word 。
- 適合小檔案、如學年度課表、班級課表、教師課表,或是你自己整理的課表。
不適合的情況:
- 如果你要的是「多人協作、雲端同步、權限管理」那種完整校務系統,這個小工具幫不了你,它就是個人用的輕量查詢器。
- AI 轉出來的 CSV 不保證零錯誤,重要用途請一定要自己對過一次再信。因為 OCR 與課表比對很吃 AI 推理能力,尤其是檔案特別大的時候,我實測是跑全校課表,約 70MB 上下,不同的 AI 與不同的模型所解譯出來會落差很大,所以建議參考就好。
註:
如果用網頁版又要精準度可以拆檔去解,只是比較費時費工。筆者習慣直接開 CLI 去跑 subagent 來跑,速度快很多。
建議免費版本的人可以把 PDF 先轉成 WORD 檔案在叫 AI 開工。 我對它的定位很清楚:免費、簡單、把一張難查的課表變得好查——這樣就夠了。
常見問題
Q:我一定要會寫程式或懂 CSV 才能用嗎? A:不用。你只要會把檔案丟給 AI、複製貼上一段 prompt、再把產出的檔案匯入網頁就行。CSV 那些欄位是給 AI 看的,你不用自己填。
Q:AI 轉出來的課表會不會有錯? A:會,大多是遺漏。我已經盡量優化 prompt 讓 AI 拿班級和教師課表交叉比對來降低錯誤,但匯入後還是建議自己快速掃一遍,重要用途尤其要對過。
Q:我的課表資料會被上傳嗎?
A:不會。資料只存在你自己瀏覽器的 localStorage,不經過任何伺服器。換裝置就要重新匯入。
Q:這是你原創的嗎? A:不是,是 fork 自奕鈞老師的 timetable-demo。核心查詢架構是原作者的,我做的是把它改成「AI 轉檔+自行匯入」的使用方式。我的改版 repo 在這裡。
Q:手機可以用嗎?可以列印嗎? A:都可以。介面支援手機、平板 RWD,也有深淺色模式,查出來的課表能直接列印。
再次謝謝奕鈞老師願意把專案開源分享——😁
半桶水的
留言區
載入中...
發表留言