批量提取当前文件夹pdf书籍目录


import fitz  # PyMuPDF
import pandas as pd
import os

# 获取当前文件夹中所有的PDF文件
pdf_files = [f for f in os.listdir('.') if f.endswith('.pdf')]

# 提取目录信息的函数
def extract_toc(toc, toc_list, level=0):
    for item in toc:
        # 确保目录项至少包含标题
        if len(item) > 1 and item[1]:
            title = item[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
                })
            # 如果有子条目,递归提取
            if len(item) > 3 and item[3]:  # 子条目在索引3
                extract_toc(item[3], toc_list, level + 1)  # 传递level + 1

# 遍历所有PDF文件
for pdf_file in pdf_files:
    # 打开PDF文件
    document = fitz.open(pdf_file)
    
    # 获取PDF的目录
    toc = document.get_toc(simple=False)
    
    # 初始化toc_list以存储新的PDF文件的目录信息
    toc_list = []
    
    # 提取目录信息
    extract_toc(toc, toc_list)
    
    # 关闭PDF文件
    document.close()
    
    # 将列表转换为DataFrame
    toc_df = pd.DataFrame(toc_list)
    
    # 将DataFrame输出到CSV文件,文件名与PDF文件同名
    output_filename = pdf_file.rsplit('.', 1)[0] + '.csv'  # 正确地获取文件名并添加.csv扩展名
    toc_df.to_csv(output_filename, index=False, encoding='utf-8')  # 确保CSV文件被正确写入
posted @ 2024-11-17 14:34  redufa  阅读(96)  评论(0)    收藏  举报