最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python將PDF表格提取到文本,CSV和Excel文件中

 更新時間:2024年11月03日 09:02:13   作者:Eiceblue  
本文將介紹如何使用簡單的Python代碼從PDF文檔中提取表格數(shù)據(jù)并將其寫入文本、CSV和Excel文件,從而輕松實現(xiàn)PDF表格的自動化提取,有需要的可以參考下

從PDF文檔中提取表格并將其轉(zhuǎn)換為更易于處理的格式(如文本、CSV和Excel文件),是數(shù)據(jù)分析和信息管理中的常見需求。此過程可顯著簡化表格數(shù)據(jù)的處理,使數(shù)據(jù)的操作、分析和與其他數(shù)據(jù)集的集成更加便捷。無論是財務(wù)報表、研究論文,還是包含結(jié)構(gòu)化信息的其他文檔,掌握這些表格準(zhǔn)確轉(zhuǎn)換的方法對于充分發(fā)揮數(shù)據(jù)潛力至關(guān)重要。

本文將介紹如何使用簡單的Python代碼從PDF文檔中提取表格數(shù)據(jù)并將其寫入文本、CSV和Excel文件,從而輕松實現(xiàn)PDF表格的自動化提取。

本文所需的庫為Spire.PDF for Python。可通過PyPI安裝:pip install spire.pdf。

用于操作的示例PDF

如何使用Python提取PDF表格數(shù)據(jù)

庫中的PdfTableExtractor類用于處理PDF文檔的表格提取??梢酝ㄟ^PdfTableExtractor.ExtractTable(pageIndex: int)方法從PDF頁面中提取表格,并以Utilities_PdfTable對象的集合形式返回表格數(shù)據(jù)。接著,可通過遍歷表格并使用Utilities_PdfTable.GetCellText(rowIndex: int, columnIndex: int)方法獲取每個單元格中的數(shù)據(jù)。

提取PDF表格數(shù)據(jù)的一般步驟如下:

  • 創(chuàng)建一個PdfDocument實例并使用PdfDocument.LoadFromFile()方法加載PDF文檔。
  • 使用該文檔創(chuàng)建PdfTableExtractor實例。
  • 使用PdfTableExtractor.ExtractTable(pageIndex: int)方法提取文檔中每頁的表格。
  • 遍歷每個表格并使用Utilities_PdfTable.GetCellText(rowIndex: int, columnIndex: int)方法獲取單元格值。
  • 將提取的表格數(shù)據(jù)寫入其他文件。

注意:當(dāng)使用提取的表格數(shù)據(jù)構(gòu)建字符串時,如果單元格文本中包含換行符,最終生成的文本文件中可能會多出額外的換行符。為了避免造成混淆,應(yīng)將這些換行符去除或替換為空格。

用Python將PDF表格數(shù)據(jù)提取為文本文件

提取PDF文檔中的表格數(shù)據(jù)后,可直接將每個表格的數(shù)據(jù)寫入字符串并保存到文本文件中,從而實現(xiàn)將PDF表格數(shù)據(jù)導(dǎo)出為文本文件。

具體步驟如下:

1.導(dǎo)入所需模塊:PdfDocument和PdfTableExtractor。

2.創(chuàng)建PdfDocument實例并使用PdfDocument.LoadFromFile()方法加載PDF文檔。

3.使用該文檔創(chuàng)建PdfTableExtractor實例。

4.使用PdfTableExtractor.ExtractTable(pageIndex: int)方法提取每頁中的表格。

5.遍歷提取的表格:

  • 創(chuàng)建一個str對象以存儲表格數(shù)據(jù)。
  • 使用Utilities_PdfTable.GetCellText(rowIndex: int, columnIndex: int)方法獲取單元格值。
  • 將單元格值追加到str對象中。
  • 將str對象寫入文件。

6.釋放資源

代碼示例

from spire.pdf import PdfDocument, PdfTableExtractor

# 創(chuàng)建一個 PdfDocument 對象
pdf = PdfDocument()
# 加載一個 PDF 文檔
pdf.LoadFromFile("Sample.pdf")

# 創(chuàng)建一個 PdfTableExtractor 對象
extractor = PdfTableExtractor(pdf)

# 遍歷所有頁面
for pageIndex in range(pdf.Pages.Count):
    # 從每個 PDF 頁面中提取表格
    tables = extractor.ExtractTable(pageIndex)
    # 如果存在多個表格,則遍歷這些表格
    if tables is not None:
        for tableIndex in range(len(tables)):
            # 獲取一個表格
            table = tables[tableIndex]
            # 創(chuàng)建一個字符串對象來存儲表格數(shù)據(jù)
            tableData = ""
            # 遍歷表格的行和列
            for rowIndex in range(table.GetRowCount()):
                for colIndex in range(table.GetColumnCount()):
                    # 獲取單元格文本
                    text = table.GetText(rowIndex, colIndex)
                    text = text.replace("\n", " ")
                    # 將單元格文本添加到表格數(shù)據(jù)中
                    tableData += text
                    if colIndex < table.GetColumnCount() - 1:
                        tableData += "\t"
                tableData += "\n"
            # 將表格數(shù)據(jù)寫入文本文件
            with open(f"output/Tables/Page{pageIndex+1}-Table{tableIndex+1}.txt", "w", encoding="utf-8") as f:
                f.write(tableData)

# 釋放資源
pdf.Dispose()

輸出結(jié)果

用Python將PDF表格數(shù)據(jù)提取為CSV文件

同樣,可以使用類似方法從PDF文檔中提取表格數(shù)據(jù),并利用Python標(biāo)準(zhǔn)庫中的CSV模塊將每個表格寫入CSV文件。在此過程中也需注意去除或替換換行符,以改善CSV文件的結(jié)果。具體步驟如下:

1.導(dǎo)入所需模塊:PdfDocument、PdfTableExtractor和CSV。

2.創(chuàng)建PdfDocument實例并使用PdfDocument.LoadFromFile()方法加載PDF文檔。

3.使用該文檔創(chuàng)建PdfTableExtractor實例。

4.使用PdfTableExtractor.ExtractTable(pageIndex: int)方法提取每頁中的表格。

5.遍歷提取的表格:

  • 創(chuàng)建CSV文件。
  • 遍歷表格中的行并創(chuàng)建列表以存儲行數(shù)據(jù)。
  • 使用Utilities_PdfTable.GetCellText(rowIndex: int, columnIndex: int)方法獲取每行的單元格值并追加到列表中。
  • 使用csv.writer().writerow()方法將每行寫入CSV文件。

6.釋放資源。

代碼示例

from spire.pdf import PdfDocument, PdfTableExtractor
import csv

# 創(chuàng)建一個 PdfDocument 對象
pdf = PdfDocument()
# 加載一個 PDF 文檔
pdf.LoadFromFile("Sample.pdf")

# 創(chuàng)建一個 PdfTableExtractor 對象
extractor = PdfTableExtractor(pdf)

# 遍歷所有頁面
for pageIndex in range(pdf.Pages.Count):
    # 從每個 PDF 頁面中提取表格
    tables = extractor.ExtractTable(pageIndex)
    # 如果存在多個表格,則遍歷這些表格
    if tables is not None:
        for tableIndex in range(len(tables)):
            # 獲取一個表格
            table = tables[tableIndex]
            # 創(chuàng)建一個 CSV 文件
            with open("output/Tables/Page" + str(pageIndex+1) + "-Table" + str(tableIndex+1) + ".csv", "w", newline='', encoding='utf-8') as csvFile:
                writer = csv.writer(csvFile)
                # 遍歷表格的行和列
                for rowIndex in range(table.GetRowCount()):
                    row = []
                    for colIndex in range(table.GetColumnCount()):
                        # 獲取單元格文本
                        text = table.GetText(rowIndex, colIndex)
                        text = text.replace('\n', ' ')
                        row.append(text)
                    writer.writerow(row)

# 釋放資源
pdf.Dispose()

輸出結(jié)果

用Python將PDF表格數(shù)據(jù)提取到Excel工作表

可使用另一庫Spire.XLS for Python將提取的PDF表格數(shù)據(jù)寫入Excel工作表。通過PyPI獲取Spire.PDF for Python:pip install spire.xls。

具體步驟如下:

1.導(dǎo)入所需模塊:PdfDocument、PdfTableExtractor、Workbook和spire.xls.FileFormat。

2.創(chuàng)建PdfDocument實例并使用PdfDocument.LoadFromFile()方法加載PDF文檔。

3.創(chuàng)建Workbook實例用于存儲表格,并使用Workbook.Worksheets.Clear()方法清除默認(rèn)工作表。

4.使用該文檔創(chuàng)建PdfTableExtractor實例。

5.使用PdfTableExtractor.ExtractTable(pageIndex: int)方法提取每頁中的表格。

6.遍歷提取的表格:

  • 使用Workbook.Worksheets.Add(sheetName: str)方法為每個表格添加工作表。
  • 使用Utilities_PdfTable.GetCellText(rowIndex: int, columnIndex: int)方法獲取表格的單元格值。
  • 通過Worksheet.Range[rowIndex + 1, colIndex + 1].Text屬性將單元格值寫入相應(yīng)的工作表單元格。

7.使用Workbook.SaveToFile()方法保存工作簿。

8.釋放資源。

代碼示例

from spire.pdf import PdfDocument, PdfTableExtractor
from spire.xls import Workbook, FileFormat, HorizontalAlignType

# 創(chuàng)建一個 PdfDocument 對象
pdf = PdfDocument()
# 加載一個 PDF 文檔
pdf.LoadFromFile("Sample.pdf")

# 創(chuàng)建一個 Workbook 對象
workbook = Workbook()
# 清除默認(rèn)的工作表
workbook.Worksheets.Clear()

# 創(chuàng)建一個 PdfTableExtractor 對象
extractor = PdfTableExtractor(pdf)

# 從每個 PDF 頁面中提取表格
for pageIndex in range(pdf.Pages.Count):
    tables = extractor.ExtractTable(pageIndex)
    # 如果存在多個表格,則遍歷這些表格
    if tables is not None:
        for tableIndex in range(len(tables)):
            # 獲取一個表格
            table = tables[tableIndex]
            # 為表格創(chuàng)建一個工作表
            sheet = workbook.Worksheets.Add(f"Page{pageIndex + 1}-Table{tableIndex + 1}")
            # 遍歷表格的行和列
            for rowIndex in range(table.GetRowCount()):
                for colIndex in range(table.GetColumnCount()):
                    # 獲取單元格值
                    text = table.GetText(rowIndex, colIndex)
                    cellText = text.replace("\n", "")
                    # 將單元格值寫入工作表的相應(yīng)單元格
                    sheet.Range[rowIndex + 1, colIndex + 1].Text = cellText

            # 可選:自定義表格的外觀
            # 設(shè)置標(biāo)題行樣式
            sheet.Rows.get_Item(0).Style.Font.FontName = "Yu Gothic UI"
            sheet.Rows.get_Item(0).Style.Font.Size = 12
            sheet.Rows.get_Item(0).Style.Font.IsBold = True
            sheet.Rows.get_Item(0).Style.HorizontalAlignment = HorizontalAlignType.Center
            # 設(shè)置數(shù)據(jù)行樣式
            for i in range(1, sheet.Rows.Count):
                sheet.Rows.get_Item(i).Style.Font.FontName = "Yu Gothic UI"
                sheet.Rows.get_Item(i).Style.Font.Size = 12
                sheet.Rows.get_Item(i).Style.HorizontalAlignment = HorizontalAlignType.Left
            # 自動調(diào)整列寬
            for j in range(1, sheet.Columns.Count):
                sheet.AutoFitColumn(j)

# 保存工作簿
workbook.SaveToFile("output/PDFTableToExcel.xlsx", FileFormat.Version2016)
# 釋放資源
workbook.Dispose()
pdf.Close()

輸出結(jié)果

使用Python直接將PDF轉(zhuǎn)換為Excel文件

還可以使用PdfDocument.SaveToFile(fileName: str, FileFormat.XLSX)方法將PDF文檔直接轉(zhuǎn)換為Excel文件。此方法適用于以表格為主的PDF文檔,有助于盡可能保留表格的原始外觀。

為減少轉(zhuǎn)換后Excel表格中的空白,可以在轉(zhuǎn)換前去除PDF文檔的邊距。參考以下文章:

Python刪除PDF文檔頁面的頁邊距

直接將PDF文檔轉(zhuǎn)換為Excel文件的具體步驟如下:

1.導(dǎo)入所需模塊:PdfDocument和FileFormat。

2.創(chuàng)建一個PdfDocument實例。

3.使用PdfDocument.LoadFromFile()方法加載PDF文檔。

4.將文檔轉(zhuǎn)換為Excel文件并使用PdfDocument.SaveToFile(fileName: str, FileFormat.XLSX)方法保存。

5.釋放資源。

代碼示例

from spire.pdf import PdfDocument, FileFormat

# 創(chuàng)建一個 PdfDocument 實例
pdf = PdfDocument()

# 加載一個 PDF 文檔
pdf.LoadFromFile("Sample.pdf")

# 將 PDF 文檔轉(zhuǎn)換為 Excel 文件
pdf.SaveToFile("output/PDFToExcel.xlsx", FileFormat.XLSX)

# 關(guān)閉 PDF 文檔
pdf.Close()

輸出結(jié)果

到此這篇關(guān)于使用Python將PDF表格提取到文本,CSV和Excel文件中的文章就介紹到這了,更多相關(guān)Python PDF表格提取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python遍歷指定文件夾下的所有文件名的方法小結(jié)

    Python遍歷指定文件夾下的所有文件名的方法小結(jié)

    當(dāng)需要遍歷指定文件夾下的所有文件名時,Python提供了多種方法來實現(xiàn)這個任務(wù),本文將介紹如何使用Python來完成這一任務(wù),有需要的小伙伴可以參考下
    2024-01-01
  • python3如何清除過濾emoji表情

    python3如何清除過濾emoji表情

    這篇文章主要介紹了python3如何清除過濾emoji表情問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Tensorflow中k.gradients()和tf.stop_gradient()用法說明

    Tensorflow中k.gradients()和tf.stop_gradient()用法說明

    這篇文章主要介紹了Tensorflow中k.gradients()和tf.stop_gradient()用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python中re.compile函數(shù)的使用方法

    Python中re.compile函數(shù)的使用方法

    這篇文章主要介紹在python的re模塊中怎樣應(yīng)用正則表達(dá)式,文中有相關(guān)的代碼示例,具有一定的參考價值,需要的朋友可以參考下
    2023-06-06
  • 學(xué)生如何注冊Pycharm專業(yè)版以及pycharm的安裝

    學(xué)生如何注冊Pycharm專業(yè)版以及pycharm的安裝

    這篇文章主要介紹了學(xué)生如何注冊Pycharm專業(yè)版以及pycharm的安裝,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Django Rest framework權(quán)限的詳細(xì)用法

    Django Rest framework權(quán)限的詳細(xì)用法

    這篇文章主要介紹了Django Rest framework權(quán)限的詳細(xì)用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Python混合使用同步和異步函數(shù)的方法

    Python混合使用同步和異步函數(shù)的方法

    Python是一種非常靈活的編程語言,可以混合使用同步和異步函數(shù)來實現(xiàn)更高效的編程。本文將介紹如何在Python中混合使用同步和異步函數(shù),以及如何在不同場景下選擇合適的函數(shù),感興趣的可以了解一下
    2023-03-03
  • python爬蟲框架scrapy實現(xiàn)模擬登錄操作示例

    python爬蟲框架scrapy實現(xiàn)模擬登錄操作示例

    這篇文章主要介紹了python爬蟲框架scrapy實現(xiàn)模擬登錄操作,結(jié)合實例形式分析了scrapy框架實現(xiàn)模擬登陸操作的步驟、相關(guān)實現(xiàn)技巧與注意事項,需要的朋友可以參考下
    2018-08-08
  • Python中的Numpy 矩陣運算

    Python中的Numpy 矩陣運算

    這篇文章介紹Python中的Numpy 矩陣運算,NumPy是Python的一種開源的數(shù)值計算擴(kuò)展.這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效的多,支持大量的維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學(xué)函數(shù)庫,下面詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • python?rpyc客戶端調(diào)用服務(wù)端方法的注意說明

    python?rpyc客戶端調(diào)用服務(wù)端方法的注意說明

    這篇文章主要介紹了python?rpyc客戶端調(diào)用服務(wù)端方法的注意說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論

乌海市| 江油市| 安泽县| 通州市| 大厂| 神木县| 陇川县| 沛县| 额敏县| 托里县| 凌海市| 庆云县| 灵山县| 龙里县| 宁波市| 尉氏县| 伊川县| 桂阳县| 镇平县| 新邵县| 益阳市| 崇义县| 金溪县| 临沭县| 屏南县| 新兴县| 东至县| 兴和县| 池州市| 东丰县| 阿拉尔市| 龙泉市| 金华市| 二连浩特市| 桐城市| 健康| 凤翔县| 安溪县| 西青区| 虞城县| 定西市|