簡體   English   中英

如何使用python中的tabula提取pdf文件中存在的多個表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM