在之前的文章另類爬蟲:從PDF文件中爬取表格數據中,我們知道如何利用Python的camelot模塊,通過寫Python程序來提取PDF中的表格數據。本文我們將學習如何用更便捷的工具從PDF中提取表格。
Excalibur是一個用來從PDF中提取表格數據的網頁工具,而它正是以camelot為基礎。該工具目前只支持文本類型的PDF,而不支持掃描后的PDF文檔,關於其說明和使用文檔可以參考網址: https://github.com/camelot-dev/excalibur 。
安裝Excalibur
在安裝Excalibur之前,需要事先安裝ghostscript,具體的安裝方式可以參考:https://camelot-py.readthedocs.io/en/master/user/install-deps.html 。不同系統安裝ghostscript的方式不一樣,以筆者的mac電腦為例,安裝命令如下:
$ brew install tcl-tk ghostscript
安裝ghostscript完畢后,再通過pip安裝Excalibur,命令如下:
$ pip3 install excalibur-py
以上就是全部的安裝准備工作了。
啟動與使用Excalibur
運行下面的命令啟動Excalibur:
$ excalibur initdb
$ excalibur webserver
前一句命令是初始化數據庫,后一句命令是運行server服務。在瀏覽器中輸入: http://localhost:5050 ,即可使用該平台。
進入該PDF表格提取平台,首頁如下:
筆者測試的PDF中含有以下表格:
我們將該PDF文檔上傳至上述平台,點擊“Upload PDF”按鈕,再選擇相應的PDF文檔以及該表格所在的頁碼即可。PDF上傳后,該表格所在的那一頁如下圖所示:
在右側的Anvanced中的Flavor中選擇“lattice”,並用鼠標框選出表格所在的區域,如下圖:
再點擊“View and Download Data”按鈕,就能得到從PDF解析表格后得到的數據了。截圖如下:
如果我們還想將這個表格解析后的結果保存為文件,則可以在Download旁的下拉框中選擇一種保存的形式,並點擊Download按鈕。比如,筆者選擇保存為csv文件,則下載后的文件如下:
"Method","Precision","Recall","F-measure"
"(S1) SP-CCG","67.5","37.2","48.0"
"(S1) SP-CFG","71.1","39.2","50.5"
"(S1) K4","70.3","26.3","38.0"
"(S2) SP-CCG","63.7","41.4","50.2"
"(S2) SP-CFG","65.5","43.8","52.5"
"(S2) K4","67.1","35.0","45.8"
"","Table 5: Extraction Performance on ACE.","",""
我們可以發現,該表格解析后的結果還是相當漂亮的。
本次分享到此結束,感謝大家的閱讀。
注意
:本人現已開通微信公眾號: Python爬蟲與算法(微信號為:easy_web_scrape), 歡迎大家關注哦~~