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

通過Python提取PDF表格數(shù)據(jù)的流程步驟

 更新時(shí)間:2025年12月31日 08:27:49   作者:m5655bj  
在數(shù)據(jù)處理與辦公自動化場景中,PDF 表格因格式穩(wěn)定被廣泛使用,但不可直接編輯的特性,手動復(fù)制粘貼不僅效率低下,還容易出現(xiàn)數(shù)據(jù)錯位、遺漏等問題,本文將分享一種高效的解決方案—基于Python結(jié)合Spire系列庫,實(shí)現(xiàn) PDF 表格數(shù)據(jù)的精準(zhǔn)提取,需要的朋友可以參考下

引言

在數(shù)據(jù)處理與辦公自動化場景中,PDF 表格因格式穩(wěn)定被廣泛使用,但不可直接編輯的特性,給數(shù)據(jù)統(tǒng)計(jì)、分析和二次加工帶來諸多不便。手動復(fù)制粘貼不僅效率低下,還容易出現(xiàn)數(shù)據(jù)錯位、遺漏等問題。

本文將分享一種高效的解決方案—基于Python結(jié)合Spire系列庫,實(shí)現(xiàn) PDF 表格數(shù)據(jù)的精準(zhǔn)提取,并分別導(dǎo)出為 TXT 文本和 Excel 表格格式。該方案無需復(fù)雜的正則表達(dá)式或OCR識別,代碼簡潔易上手,適合批量處理各類PDF表格文件。

一、準(zhǔn)備工作:安裝所需 Python 庫

本次實(shí)戰(zhàn)需要兩個(gè)核心庫,分別負(fù)責(zé) PDF 表格提取和 Excel 文件生成,功能分工明確:

  • Spire.PDF for Python:一款輕量級 PDF 處理庫,支持直接識別 PDF 中的表格結(jié)構(gòu),精準(zhǔn)提取單元格數(shù)據(jù),無需依賴額外的 OCR 工具。
  • Spire.XLS for Python:專業(yè)的 Excel 操作庫,可實(shí)現(xiàn) Excel 文件的創(chuàng)建、數(shù)據(jù)寫入、格式優(yōu)化等功能,完美適配各類 Excel 版本。

打開命令行終端,執(zhí)行以下pip命令完成安裝(建議在虛擬環(huán)境中操作,避免版本沖突):

pip install Spire.PDF
pip install Spire.XLS

二、實(shí)戰(zhàn)1:提取 PDF 表格數(shù)據(jù)到 TXT 文件

TXT 文件具有體積小、兼容性強(qiáng)的特點(diǎn),適合快速查看和傳輸數(shù)據(jù)。使用 Spire.PDF for Python 提取數(shù)據(jù)并寫入 TXT 的核心邏輯,是按頁面→表格→行→列的層級遍歷 PDF 內(nèi)容,最終將數(shù)據(jù)格式化輸出。

實(shí)現(xiàn)步驟拆解

  1. 加載 PDF 文檔:通過 PdfDocument 類的 LoadFromFile() 方法讀取目標(biāo) PDF 文件,支持相對路徑和絕對路徑。
  2. 初始化提取工具:創(chuàng)建 PdfTableExtractor 對象,用于識別并提取 PDF 頁面中的表格數(shù)據(jù)。
  3. 層級遍歷數(shù)據(jù):依次遍歷 PDF 的每一頁、每頁中的每個(gè)表格、表格的每一行和每一列,通過 GetText(rowIndex, columnIndex) 方法獲取單元格文本。
  4. 寫入 TXT 文件:將提取的數(shù)據(jù)按“列用空格分隔、行用換行分隔”的格式整理,寫入TXT文件并指定 UTF-8 編碼,避免中文亂碼。

完整代碼示例(含詳細(xì)注釋)

from spire.pdf.common import *
from spire.pdf import *

# 1. 加載PDF文檔,替換為你的目標(biāo)PDF文件路徑
pdf_doc = PdfDocument()
pdf_doc.LoadFromFile("表格.pdf")

# 2. 創(chuàng)建列表存儲提取的數(shù)據(jù),便于后續(xù)拼接
data_list = []

# 3. 初始化表格提取器
table_extractor = PdfTableExtractor(pdf_doc)

# 4. 遍歷PDF的每一頁
for page_idx in range(pdf_doc.Pages.Count):
    # 提取當(dāng)前頁面的所有表格
    tables = table_extractor.ExtractTable(page_idx)
    # 判斷當(dāng)前頁面是否存在表格,避免空指針異常
    if tables is not None and len(tables) > 0:
        # 遍歷每個(gè)表格
        for table in tables:
            row_num = table.GetRowCount()  # 獲取表格總行數(shù)
            col_num = table.GetColumnCount()  # 獲取表格總列數(shù)
            # 遍歷表格的每一行
            for i in range(row_num):
                row_data = []
                # 遍歷該行的每一列
                for j in range(col_num):
                    # 獲取單元格文本
                    cell_text = table.GetText(i, j)
                    row_data.append(cell_text)
                # 用空格分隔列數(shù)據(jù),拼接成一行
                data_list.append(" ".join(row_data))
            # 不同表格之間添加空行,區(qū)分?jǐn)?shù)據(jù)邊界
            data_list.append("")

# 5. 將數(shù)據(jù)寫入TXT文件
with open("提取PDF表格.txt", "w", encoding="utf-8") as f:
    f.write("\n".join(data_list))

# 6. 釋放資源,避免內(nèi)存占用
pdf_doc.Close()

三、實(shí)戰(zhàn)2:提取 PDF 表格數(shù)據(jù)到 Excel 文件

Excel 文件支持?jǐn)?shù)據(jù)篩選、公式計(jì)算、圖表生成等高級功能,是數(shù)據(jù)分析的首選格式。本示例需要結(jié)合 Spire.PDF for PythonSpire.XLS for Python,在提取數(shù)據(jù)的基礎(chǔ)上,實(shí)現(xiàn) Excel 文件的創(chuàng)建和數(shù)據(jù)寫入。

實(shí)現(xiàn)步驟拆解

數(shù)據(jù)提取的步驟與 TXT 示例一致,額外增加 Excel 文件操作的3個(gè)核心步驟:

  1. 創(chuàng)建Excel工作簿:實(shí)例化 Workbook 對象,清空默認(rèn)工作表,為后續(xù)添加新表格做準(zhǔn)備。
  2. 數(shù)據(jù)寫入單元格:Excel 的行列索引從1開始(與Python的0索引不同),因此需要將表格的行、列索引分別+1,確保數(shù)據(jù)寫入正確位置。
  3. 優(yōu)化表格格式:調(diào)用 AutoFitColumns() 方法設(shè)置列寬自適應(yīng)內(nèi)容,提升表格可讀性,最后保存為指定版本的Excel文件。

完整代碼示例(含詳細(xì)注釋)

from spire.pdf import *
from spire.xls import *

# 1. 加載PDF文檔
pdf_doc = PdfDocument()
pdf_doc.LoadFromFile("表格.pdf")

# 2. 創(chuàng)建Excel工作簿并清空默認(rèn)工作表
excel_workbook = Workbook()
excel_workbook.Worksheets.Clear()

# 3. 初始化表格提取器
table_extractor = PdfTableExtractor(pdf_doc)

# 4. 工作表編號,用于命名新工作表
sheet_index = 1

# 5. 遍歷PDF的每一頁
for page_idx in range(pdf_doc.Pages.Count):
    tables = table_extractor.ExtractTable(page_idx)
    if tables is not None and len(tables) > 0:
        # 遍歷當(dāng)前頁面的每個(gè)表格
        for table in tables:
            # 創(chuàng)建新工作表,命名為“sheet+編號”
            worksheet = excel_workbook.Worksheets.Add(f"sheet{sheet_index}")
            row_num = table.GetRowCount()
            col_num = table.GetColumnCount()
            # 遍歷表格單元格
            for i in range(row_num):
                for j in range(col_num):
                    cell_text = table.GetText(i, j)
                    # Excel索引從1開始,需將i和j分別+1
                    worksheet.Range[i + 1, j + 1].Value = cell_text
            # 設(shè)置列寬自適應(yīng)內(nèi)容,優(yōu)化顯示效果
            worksheet.AllocatedRange.AutoFitColumns()
            # 工作表編號遞增
            sheet_index += 1

# 6. 保存Excel文件,指定保存路徑和Excel版本
excel_workbook.SaveToFile("導(dǎo)出PDF表格到Excel.xlsx", ExcelVersion.Version2016)

# 7. 釋放資源
pdf_doc.Close()
excel_workbook.Dispose()

四、關(guān)鍵注意事項(xiàng)

  1. 文件路徑問題:若運(yùn)行代碼時(shí)提示“文件不存在”,請檢查 PDF 文件路徑是否正確,建議使用絕對路徑(如 C:/data/表格.pdf)避免路徑錯誤。
  2. 中文亂碼處理:寫入 TXT 文件時(shí),務(wù)必指定 encoding="utf-8";導(dǎo)出 Excel 文件時(shí),Spire.XLS for Python 默認(rèn)支持中文,無需額外配置。
  3. 資源釋放:使用 Close()Dispose() 方法釋放 PDF 和 Excel 對象,避免長時(shí)間運(yùn)行導(dǎo)致內(nèi)存泄漏。

五、總結(jié)

基于 Spire 列庫,能夠快速實(shí)現(xiàn) PDF 表格數(shù)據(jù)的提取與格式轉(zhuǎn)換,相比傳統(tǒng)的手動操作,效率提升數(shù)十倍。該方案適用于各類場景,如批量提取財(cái)務(wù)報(bào)表、科研數(shù)據(jù)、政務(wù)文件中的 PDF 表格,為數(shù)據(jù)自動化處理提供了可靠的技術(shù)支撐。

以上就是通過Python提取PDF表格數(shù)據(jù)的流程步驟的詳細(xì)內(nèi)容,更多關(guān)于Python提取PDF表格數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于Python的EasyGUI學(xué)習(xí)實(shí)踐

    基于Python的EasyGUI學(xué)習(xí)實(shí)踐

    這篇文章主要介紹了基于Python的EasyGUI學(xué)習(xí)實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • py3nvml實(shí)現(xiàn)GPU相關(guān)信息讀取的案例分析

    py3nvml實(shí)現(xiàn)GPU相關(guān)信息讀取的案例分析

    這篇文章主要介紹了py3nvml實(shí)現(xiàn)GPU相關(guān)信息讀取,此時(shí)就可以考慮使用py3nvml這樣的工具,針對于GPU任務(wù)執(zhí)行的過程進(jìn)行細(xì)化的分析,有助于提升GPU的利用率和程序執(zhí)行的性能,需要的朋友可以參考下
    2022-01-01
  • Scrapy基于scrapy_redis實(shí)現(xiàn)分布式爬蟲部署的示例

    Scrapy基于scrapy_redis實(shí)現(xiàn)分布式爬蟲部署的示例

    這篇文章主要介紹了Scrapy基于scrapy_redis實(shí)現(xiàn)分布式爬蟲部署的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python爬蟲可以爬什么

    python爬蟲可以爬什么

    在本篇文章里小編給大家整理的是關(guān)于python爬蟲的作用地方以及相關(guān)知識點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • CentOS下Python3的安裝及創(chuàng)建虛擬環(huán)境的方法

    CentOS下Python3的安裝及創(chuàng)建虛擬環(huán)境的方法

    這篇文章主要介紹了CentOS下Python3的安裝及創(chuàng)建虛擬環(huán)境的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • 深度辨析Python的eval()與exec()的方法

    深度辨析Python的eval()與exec()的方法

    這篇文章主要介紹了深度辨析Python的eval()與exec()的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • Python 3.x讀寫csv文件中數(shù)字的方法示例

    Python 3.x讀寫csv文件中數(shù)字的方法示例

    在我們?nèi)粘i_發(fā)中經(jīng)常需要對csv文件進(jìn)行讀寫,下面這篇文章主要給大家介紹了關(guān)于Python 3.x讀寫csv文件中數(shù)字的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • Python中獲取程序路徑的常用方法

    Python中獲取程序路徑的常用方法

    在Python開發(fā)中,經(jīng)常需要獲取當(dāng)前程序或腳本所在的路徑,以便進(jìn)行文件操作,資源加載等,下面我們就來看看幾種常用的方法并分析它們的區(qū)別吧
    2025-06-06
  • python自動化測試selenium屏幕截圖示例

    python自動化測試selenium屏幕截圖示例

    這篇文章主要為大家介紹了python自動化測試selenium屏幕截圖示例實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • python ubplot使用方法解析

    python ubplot使用方法解析

    這篇文章主要介紹了python ubplot使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評論

玉山县| 西吉县| 永安市| 内乡县| 泰安市| 泽库县| 中牟县| 黄浦区| 北宁市| 惠东县| 衢州市| 郎溪县| 南郑县| 南木林县| 遂川县| 星子县| 高邑县| 扶余县| 焉耆| 滦南县| 河池市| 保德县| 藁城市| 平舆县| 玛沁县| 会泽县| 扎囊县| 香河县| 筠连县| 昭觉县| 吉木萨尔县| 孟津县| 海淀区| 南通市| 寿宁县| 峨山| 霍山县| 亳州市| 黔西| 慈溪市| 深圳市|