openbudget

OpenBudget:從 PDF 打開台灣完整的預算世界

📅 2025-07-01 💻 Python

OpenBudget:從 PDF 打開台灣完整的預算世界

一道卡了十年的題

2012 年 twbudget 出現之後,台灣的預算開放一直停在同一個地方:中央政府總預算

這份資料是整個政府預算的「目錄」。真正記載錢花在哪裡的,是各機關的單位預算——衛福部的社福支出細目、教育部的各項補助、各縣市政府的工程預算——這些數字才是預算監督的核心。但單位預算散落在各機關,主計總處沒有集中提供,格式也不一致。

Ronny 試過 XML 方向:2016 年國發會推動開放資料標章之後,部分機關確實把預算書轉成 XML,但各機關各做各的,格式超過數十種,沒有辦法整合。這題每次嘗試都撞牆,只好擱著。

2025 年的風波,重燃興趣

2025 年,立法院的預算審查吵得沸沸揚揚,社會上對預算透明的需求一下子被放大。Ronny 再次對這個題目燃起興趣。

這一次,有了新的底氣:做 lawtracelyapipdf-table-extractor 這些年,他對處理 PDF、DOCX 這類非結構化格式有了更紮實的經驗。

第一步,他把目標放在立委的凍結與刪除預算提案書。這些 DOCX 格式的提案資料,感謝 lyapi 早就把立法院的資料存在資料庫裡,不用重爬。Ronny 把凍刪資料清理出來,後來促成了 READr 基於這份資料做出「中央政府總預算案審查監督平台」,被大量讀者使用。

換個角度:PDF 每個機關都有

有了清理凍刪資料的經驗,Ronny 想通了一件事:

  • Excel、XML?不是每個機關都有。
  • PDF?所有機關都有。

每年每個機關都必須出一本預算書,而且幾乎全部都是 PDF。那就從 PDF 下手。

他開始研究怎麼從 PDF 把預算數字還原成結構化資料。這不是新鮮題,難的是政府 PDF 的品質參差不齊——掃描檔、排版各異、表格合併不一致。他一一攻破,寫出了資料清理工具,成功從 PDF 把資料逆向還原出來。

國會松搭起的橋

故事的另一條線,是國會松

在國會松的預算場次裡,時代力量台南新芽都曾參與,接觸到歐噴公司正在研究預算書的事。支持這些倡議團體的民主基金會因此知道了歐噴,主動來電,希望資助資金,讓 Ronny 能專心把預算開放這題往前推。

就像當年 lawtrace 有了資源才能全力投入,這一次,OpenBudget 也走上了同樣的路:有了資金,找來 lawtrace 的 UI/UX 設計師 Sandra 做使用者研究和介面設計,讓這個平台不只是工程師的玩具,而是真正能被倡議者、記者、議員助理用上的工具。

OpenBudget 做到了什麼

舊的起點: budget.g0v.tw,只有中央政府總預算,資料量不到中央政府整體預算的 5%。

新的終點:

  • 中央政府各機關單位預算(真正記載錢花在哪裡的細目)
  • 台灣二十幾個縣市政府的總預算和單位預算

從 5% 到趨近完整,這一步花了 13 年才走到。

誰在用

OpenBudget 上線後,Ronny 開始推廣給倡議型 NGO——讓他們能從預算角度理解跟自己議題相關的政府支出,找到可以施力的槓桿點。縣市議員和立法委員的助理也開始使用,能更完整掌握預算全貌,做出品質更高的預算監督問政。

從 2012 年 clkao 在 Yahoo Hackday 展示「預算可以被看見」,到 2018 年 Ronny 讓 twbudget 的資料不再老化,到 2025 年 OpenBudget 打開整個政府的預算世界——這條線一直都在,每一段由不同的人、不同的方式接起來。

在 g0v 大松的紀錄

第65n 平凡而自由的黑客松 2025-02-22
提案
預算資料公開群眾外包
預算 國會
成果報告
預算資料公開群眾外包
第66n 友愛青年黑客松 2025-03-29
提案
預算資料公開群眾外包
第69n 公民科技青年培力 2025-09-21
短講
開放政府預算
成果報告
開放政府預算