Python 用三行代碼提取PDF表格數(shù)據(jù)
從 PDF 表格中獲取數(shù)據(jù)是一項(xiàng)痛苦的工作。不久前,一位開發(fā)者提供了一個(gè)名為 Camelot 的工具,使用三行代碼就能從 PDF 文件中提取表格數(shù)據(jù)。
PDF 文件是一種非常常用的文件格式,通常用于正式的電子版文件。它能夠很好的將不同的排版格式固定下來,形成版面清晰且美觀的展示效果。然而,對于想要從 PDF 中提取信息的人們來說,PDF 是個(gè)噩夢,尤其是表格。
大量的學(xué)術(shù)報(bào)告、論文、分析文章都使用 PDF 展示其中的表格數(shù)據(jù),但是對于如果想要直接從表格中復(fù)制數(shù)據(jù)則會非常麻煩。不久前,有一位開發(fā)者提供了一個(gè)可從文字 PDF 中提取表格信息的工具——Camelot,能夠直接將大部分表格轉(zhuǎn)換為 Pandas 的 Dataframe。
項(xiàng)目地址:https://github.com/camelot-dev/camelot
Camelot 是什么
據(jù)項(xiàng)目介紹稱,Camelot 是一個(gè) Python 工具,用于將 PDF 文件中的表格數(shù)據(jù)提取出來。
具體而言,用戶可以像使用 Pandas 那樣打開 PDF 文件,然后利用這個(gè)工具提取表格數(shù)據(jù),最后再指定輸出的形式(如 csv 文件)。
代碼示例
項(xiàng)目提供的 PDF 文件如圖所示,假設(shè)用戶需要提取這些文字之間的表格 2-1 中的信息。
PDF 文件。我們需要提取表格 2-1。
使用 Camelot 提取表格數(shù)據(jù)的代碼如下:
>>> 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, 導(dǎo)出數(shù)據(jù)為文件 >>> tables <TableList n=1> >>> tables[0] <Table shape=(7, 7)> # 獲得輸出的格式 >>> tables[0].parsing_report { 'accuracy': 99.02, 'whitespace': 12.24, 'order': 1, 'page': 1 }
以下為輸出的結(jié)果,對于合并的單元格,Camelot 在抽取后做了空行處理,這是一個(gè)穩(wěn)妥的方法。
安裝方法
項(xiàng)目作者提供了三種安裝方法。首先,你可以使用 Conda 進(jìn)行安裝,這是最簡單的。
conda install -c conda-forge camelot-py
最流行的安裝方法是使用 pip 安裝。
pip install camelot-py[cv]
還可以從項(xiàng)目中克隆代碼,并使用源碼安裝。
git clone https://www.github.com/camelot-dev/camelot cd camelot pip install ".[cv]"
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python在for循環(huán)里處理大數(shù)據(jù)的推薦方法實(shí)例
這篇文章主要介紹了Python在for循環(huán)里處理大數(shù)據(jù)的推薦方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01pyspark?dataframe列的合并與拆分實(shí)例
這篇文章主要介紹了pyspark?dataframe列的合并與拆分實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03python操作excel的包(openpyxl、xlsxwriter)
這篇文章主要為大家詳細(xì)介紹了python操作excel的包,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06使用tensorflow根據(jù)輸入更改tensor shape
這篇文章主要介紹了使用tensorflow根據(jù)輸入更改tensor shape,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06