import fitz # PyMuPDF
import pandas as pd
# 開啟PDF檔案
pdf_path = '控制之美.pdf' # 請確保替換為正確的檔案路徑
document = fitz.open(pdf_path)
# 初始化一個列表來儲存目錄資訊
toc_list = []
# 提取目錄資訊的函式
def extract_toc(toc, level=0):
for item in toc:
# 確保目錄項至少包含標題
if len(item) > 1 and item[1]:
title = item[1]
# 檢查標題的首字元
if title[0].isdigit():
title_level = 2
else:
title_level = 1
# 確保頁碼是數字型別
page = item[2] if len(item) > 2 and isinstance(item[2], int) else None
if page is not None:
# 新增條目到列表
toc_list.append({
'Title': title,
'Page': page,
'Level': level + title_level
})
# 如果有子條目,遞迴提取
if len(item) > 3 and item[3]: # 子條目在索引3
extract_toc(item[3], level)
# 獲取PDF的目錄
toc = document.get_toc(simple=False)
# 提取目錄資訊
extract_toc(toc)
# 關閉PDF檔案
document.close()
# 將列表轉換為DataFrame
toc_df = pd.DataFrame(toc_list)
# 將DataFrame輸出到CSV檔案
toc_df.to_csv('output.csv', index=False, encoding='utf-8')
提取pdf目錄,並且分級
相關文章
- 提取pdf文件的目錄1.0
- C++遍歷日誌log目錄,並提取資料進行分析C++
- vue-前端匯出 pdf 並且壓縮 zipVue前端
- 0001-HTML中上一級目錄、上上級目錄、下一級目錄、下下級目錄中的頁面的相互引用HTML
- 獲取和設定pdf目錄
- 提取pdf指定頁
- vscode如何設定目錄分級顯示VSCode
- linux 壓縮目錄並排除某個目錄Linux
- node js 批量處理pdf,提取關鍵資訊,並匯出excelJSExcel
- 使用vscode寫Markdown並且匯出為pdf(乾貨)VSCode
- 遍歷當前目錄下的所有HTML檔案,並且顯示到螢幕中HTML
- 網站分類目錄網站
- 生存目錄-無層級
- HttpURLConnection 實戰Get/Post 請求並且儲存PDF檔案HTTP
- iOS初始化UIWindow並且設定級別iOSUI
- 上傳檔案並目錄打散
- C語言 將字串按照指定字元分離並且反轉(三級指標)列子C語言字串字元指標
- 直播平臺搭建,使用vue-pdf 實現pdf線上預覽並且自定義預覽框高度Vue
- php檔案操作之提取檔案/目錄的名稱PHP
- 非同步與並行~大話目錄非同步並行
- Linux中返回上一級目錄和返回根目錄命令Linux
- 列出並排序檔案系統根目錄(/)下各個目錄的大小排序
- 建立恢復目錄catalog並註冊目標庫
- C# 提取PDF中的表格C#
- 高效的PDF文字提取技術
- Laravel 配置二級目錄訪問Laravel
- Linux各級目錄介紹Linux
- Python 提取PDF文字和圖片Python
- tar命令打包指定目錄及其檔案,而不包括其上級目錄
- 【目錄】JVM目錄JVM
- tar解壓到指定目錄並去掉壓縮檔案的層級資料夾
- c++ Cmake工程(1)同級目錄C++
- 檔案或目錄損壞且無法讀取怎麼辦?
- python自動開啟瀏覽器下載zip,並且提取內容寫入excelPython瀏覽器Excel
- linux建立賬戶並自動生成主目錄和主目錄下的檔案Linux
- vmware安裝VMware Tools,並設定共享目錄
- 使用thin jar啟動並指定lib目錄JAR
- [linux]開啟當前目錄以及PDF檔案-轉帖Linux