監察院政治獻金專戶
監察院一共有 6000 多個政治獻金專戶,專戶名稱會是「第16屆苗栗縣竹南鎮鎮長補選擬參選人陳碧華政治獻金專戶」這種格式
同一個人可能會有多個獻金專戶,Ex: 丁守中有 「第8屆立法委員擬參選人丁守中政治獻金專戶」「第7屆立法委員擬參選人丁守中政治獻金專戶」「第6屆立法委員擬參選人丁守中政治獻金專戶」三個專戶。
查詢網址: http://sunshine.cy.gov.tw/GipOpenWeb/wSite/sp?xdUrl=/wSite/PoliticAccount/PAQuery.jsp&ctNode=353
資料打包: https://github.com/ronnywang/sunshine.cy.gov.tw/blob/master/list.csv [資料更新時間: 2014/4/20]
監察院政治獻金專戶會計總表
http://sunshine.cy.gov.tw 有提供會計總表功能,只包含各項目總合不包含細項,在上面的查詢網址進去就可以下載到 PDF 版本,而也有 Finjon Kiang 幫忙將資料匯出在 https://github.com/kiang/sunshine.cy.gov.tw/tree/master/report2txt
如有需要較好用資料可以至上面網址下載
調查兵團原始圖檔資料
這邊是靠人力衝進監察院中取出的文件掃描的圖檔
http://bit.ly/ScanPoliticalContribution
表格框線位置資料
拿到原始圖檔後, Ronny Wang 會把他全部傳到 PIXNET 相簿去,並且依照處理日期生出一個 listMMDD.csv 的檔案,Ex: list0610.csv 裡面的資訊就只有 1. 調查兵團上傳的原始檔名 2. 頁碼 3. 上傳到 PIXNET 後的網址
接下來,會用 search-all-line2.php 這隻程式將 list0610.csv 的每一張圖檔都偵測一次表格線段,找出所有的水平線位置和垂直線位置,並且會生出一個 output0610.csv ,每一張圖片會多出一個 id 欄位,id 會對應到 output0610/{id}.json 放這圖所找到的所有垂直線和水平線的資料,以及這兩種線交會的所有交點座標 Ex: output0610/10.json
為了校對,也有生出一個 edit0610.html [程式碼][瀏覽] ,Ronny Wang 會用這工具看看是否切豆腐程式有漏抓的框線,再人工加上漏抓的線並把更新的 json 換掉 (這部份求坑,希望有更方便的校對頁面)
最後會將 output0610.csv 裡面的檔名統一改成「{帳戶名}-{收支科目}-{資料開始日期}-{資料結束日期}」 「第11屆臺北市議員擬參選人厲耿桂芳政治獻金專戶-收入-099/05/24-099/12/21」,表格框線動作就完成了。
以上的程式都放在 https://github.com/ronnywang/tw-campaign-finance
豆腐資料 API
產生出來的 output0610.csv ,會透過 https://github.com/ronnywang/campaign-finance.g0v.ronny.tw/blob/master/webdata/scripts/import.php 這隻 script上傳到 http://campaign-finance.g0v.ronny.tw/ 並且得到一個 page id,接下來可以透過 http://campaign-finance.g0v.ronny.tw/table/show/{id} 這個網址取得該 page 相關的所有 API ,包含
另外也可以透過 http://campaign-finance.g0v.ronny.tw/api/gettables 這個 API 取得到所有的頁面的資訊 (內容大小約 2MB)
以上功能都是放在 http://campaign-finance.g0v.ronny.tw/ 這邊只管圖的切豆腐供其他應用使用,不管圖的內容判斷以及 OCR 的部份。
鄉民 OCR API
有了每一格豆腐之後,會在 Timothy Lee 寫的 http://campaign-finance.g0v.ctiml.tw/ 把他同步過來,透過 PageInfo::addPage($id) 就會將上面的豆腐資料 API 的新頁同步過來並且開啟新關卡
因為鄉民已經開始輸入資訊了,所以每一格就會開始累積鄉民的輸入資料,鄉民 OCR API 提供以下 API
另外更完整的資料可以透過 dump-history.php 匯出,2014年5月有一次匯出檔放在 http://ronnywang-public.s3.amazonaws.com/opendata/campaign-finance/ans.csv 約 300 萬行 100MB (IP 的部份也有加密過) ,已經可以用這些資料分析出正確答案了
最終結果
有了鄉民 OCR 結果,每一格都有三到五人輸入過,接下來透過 Cheng-Yu Lin 的幫忙,他將上面 鄉民OCR API 產生的 ans.csv 計算出每一格最可能的正確答案,程式和結果放在 https://github.com/ntuaha/GovCash
每一行的猜測答案放在 https://github.com/ntuaha/GovCash/blob/master/data/govcash.csv
這邊包含每一行是屬於哪一頁(來自 豆腐 API 的 page id )、第幾行、那一行的值以及信心度
另外也有結合豆腐 API 的 gettables 的內容,將每一個專戶分出來的檔案,放在 https://github.com/ronnywang/GovCash/tree/master/accounts
這邊就已經是最終目標還原回來的 CSV 了