![](/img/trans.png)
[英]How to extract multiples tables from one PDF file using Pandas and tabula-py
[英]How to extract more than one table present in a pdf file with tabula in python?
如果pdf文件中只有一個表格,那么可以使用代碼簡單地提取
from tabula import read_pdf
df = read_pdf(r"C:\Users\Himanshu Poddar\Desktop\pdf_file.pdf")
但是如果pdf文件中存在多個表。我無法提取這些表。因為它只提取第一個。
在那里? 希望下面的代碼會有所幫助,但我仍然沒有用大表測試它。 讓我知道是否有任何可能影響或失敗此代碼的情況。 我是 python 的新手,所以我可以提高我的知識:)
import os
from tabula import wrapper
os.chdir("E:/Documents/myPy/")
tables = wrapper.read_pdf("MyPDF.pdf",multiple_tables=True,pages='all',encoding='utf-8',spreadsheet=True)
i=1
for table in tables:
table.columns = table.iloc[0]
table = table.reindex(table.index.drop(0)).reset_index(drop=True)
table.columns.name = None
#To write Excel
table.to_excel('output'+str(i)+'.xlsx',header=True,index=False)
#To write CSV
table.to_csv('output'+str(i)+'.csv',sep='|',header=True,index=False)
i=i+1
即使使用 tabula-py 包裝器,您也可以使用 Tabula Java Docs 上提供的所有相同選項。
在您的情況下,您可以簡單地添加 pages = "all":
from tabula import read_pdf
df = read_pdf(r"C:\Users\Himanshu Poddar\Desktop\pdf_file.pdf", pages ="all")
如果您的 PDF 有多個表,您可以使用multiple_tables=true
選項。
在 read_pdf 中使用multiple_tables=true
參數將解決問題
示例::
from tabula import wrapper
df = wrapper.read_pdf("sample.pdf",multiple_tables=True)
現在 read_pdf 在包裝器中,所以我們需要導入它並使用如上所示
如果pdf的所有頁面中表格的結構相同(即具有相同的表格結構和相同的相對位置),那么您可以設置 pages='all' 以獲得正確的結果。
如果沒有,您可能需要迭代所有頁面來解析 pdf。
有一個文檔詳細解釋了它。
如果pdf文件中只有一個表格,則可以使用以下代碼簡單地將其提取出來
from tabula import read_pdf
df = read_pdf(r"C:\Users\Himanshu Poddar\Desktop\pdf_file.pdf")
但是,如果pdf文件中存在多個表,則我無法提取這些表,因為它僅提取第一個表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.