Tabula Cover

「格式是PDF?喔不~~~!」相信不少人有類似的經驗,好不容易找到的資料,卻是藏在 PDF 的表格中。我們要的往往只有表格裡的資料,但光用拷貝通常格式會全跑掉,最後還是得人工慢慢處理。這次為大家介紹一個好工具「Tabula」,快速幫你把 PDF 的表格變成 CSV 檔,讓 Excel 也能順利讀取!

資料儲存成 PDF 的最大問題就是:原本資料之間的關連性被破壞,取而代之的是視覺上的線索。我們開啟 PDF 時還是可以看得很清楚,包含文件裡有一個表格、共有五個欄位、100列資料等等;但對程式來說,資料間的關連性被「這個數字應該擺哪裡?」「這裡要畫一條線」等描繪文件用的概念取代,於是我們再也無法很輕易正確的利用程式做資料分析。

因此,專為解析 PDF 表格的工具「 Tabula 」 出現了,他能做的只有一件事,就是幫我們把 PDF 中的資料表格抓出來 ( * 必須要是文字型的表格,圖片則無法處理 ) 。首先確認我們電腦中有安裝 Java 後,到 Tabula 官網 tabula.technology 下載 Tabula ,解壓縮執行後 Tabula 會自動開啟一個網頁:

localhost

這個網頁是由 tabula 建立的本地端網站伺服器提供,所以不用擔心資料會上傳到遠端。接著,選取我們要處理的 PDF 檔案,舉例來說,經濟部商業司的「商業登記設立登記清冊」:

PDF Table Sample

( 註: 雖然商業登記清冊現已於商工行政資料開放平台提供 CSV 檔,但 CSV 只有近兩年的資料,更久以前的僅提供 PDF 檔 )

上傳後會看到這樣的畫面,我們可以在這邊預覽 PDF 的內容:

Tabula Pdf Page

上傳後的 tabula 畫面

接著,我們用滑鼠在中間的 PDF 預覽圖上框出第一頁表格的範圍:

Table Range Selection

一但框選完成,便會跳出一個預覽結果視窗,裡面包含解析出來的資料供我們做預覽,可以看到如下圖的解析成果相當不錯:

Extract Result

這個結果只包含一頁 PDF 的資料,但我們的目的是取出PDF 內的所有表格。先點「 Close 」回預覽頁,這時 Tabula 很貼心的為我們準備了「Repeat this selection」按鈕,他可以幫我們自動套用剛剛的框選到每一頁上;在這個例子中 PDF 每頁的表格範圍大致都相同,所我們直接點選這個按鈕即可。若自動套用後有表格框選錯誤,我們再另外手動調整就好了。

完成所有資料的選取後,點擊畫面右方的綠色按鈕「Download All Data」,預覽結果 OK 之後就可以點擊 Download CSV 下載了!這是我們將結果傳上 Google Spreadsheet 後的樣子:

Uploaded CSV in Google Spreadsheet

感覺相當不錯呢!資本額跟組織型態混在一起了,日期也因為民國紀元而有點狀況,但大致上還是很不錯,這些問題可以用 Open Refine 來處理,留待未來再與大家分享 🙂


結語

PDF 的表格粹取就算是寫程式處理也是相當的棘手,所以不管會不會寫程式, Tabula 都相當的方便。可惜的是 Tabula 目前只能逐檔處理,不過照這個請求處理的狀況,我們可以期待很快的 Tabula 就可以一次處理多個檔案了。

另外,Tabula 也有提供 RESTful API 供程式開發者使用,這代表我們可以自動化來做表格分析,碰到大量檔案時也就不會仍需要許多人工。另外, Tabula 是以 Open Source 專案的形式在進行開發,如果你有任何想要的新功能的話,不妨到專案的 Issues 頁面提出,或者自行分支一份程式碼來協助開發喔!


Written by infographics.tw

4 Comments

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *