1. 程式人生 > 程式設計 >Python 用三行程式碼提取PDF表格資料

Python 用三行程式碼提取PDF表格資料

從 PDF 表格中獲取資料是一項痛苦的工作。不久前,一位開發者提供了一個名為 Camelot 的工具,使用三行程式碼就能從 PDF 檔案中提取表格資料。

PDF 檔案是一種非常常用的檔案格式,通常用於正式的電子版檔案。它能夠很好的將不同的排版格式固定下來,形成版面清晰且美觀的展示效果。然而,對於想要從 PDF 中提取資訊的人們來說,PDF 是個噩夢,尤其是表格。

大量的學術報告、論文、分析文章都使用 PDF 展示其中的表格資料,但是對於如果想要直接從表格中複製資料則會非常麻煩。不久前,有一位開發者提供了一個可從文字 PDF 中提取表格資訊的工具——Camelot,能夠直接將大部分表格轉換為 Pandas 的 Dataframe。

專案地址:https://github.com/camelot-dev/camelot

Camelot 是什麼

據專案介紹稱,Camelot 是一個 Python 工具,用於將 PDF 檔案中的表格資料提取出來。

具體而言,使用者可以像使用 Pandas 那樣開啟 PDF 檔案,然後利用這個工具提取表格資料,最後再指定輸出的形式(如 csv 檔案)。

程式碼示例

專案提供的 PDF 檔案如圖所示,假設使用者需要提取這些文字之間的表格 2-1 中的資訊。

PDF 檔案。我們需要提取表格 2-1。

使用 Camelot 提取表格資料的程式碼如下:

>>> import camelot
>>> tables = camelot.read_pdf('foo.pdf') #類似於Pandas開啟CSV檔案的形式
>>> tables[0].df # get a pandas DataFrame!
>>> tables.export('foo.csv',f='csv',compress=True) # json,excel,html,sqlite,可指定輸出格式
>>> tables[0].to_csv('foo.csv') # to_json,to_excel,to_html,to_sqlite, 匯出資料為檔案
>>> tables
<TableList n=1>
>>> tables[0]
<Table shape=(7,7)> # 獲得輸出的格式
>>> tables[0].parsing_report
{
 'accuracy': 99.02,'whitespace': 12.24,'order': 1,'page': 1
}

以下為輸出的結果,對於合併的單元格,Camelot 在抽取後做了空行處理,這是一個穩妥的方法。

安裝方法

專案作者提供了三種安裝方法。首先,你可以使用 Conda 進行安裝,這是最簡單的。

conda install -c conda-forge camelot-py

最流行的安裝方法是使用 pip 安裝。

pip install camelot-py[cv]

還可以從專案中克隆程式碼,並使用原始碼安裝。

git clone https://www.github.com/camelot-dev/camelot
cd camelot
pip install ".[cv]"

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。