欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python提取PDF大綱(書簽)的完整指南

 更新時(shí)間:2025年08月11日 08:44:26   作者:yqwang_cn  
PDF大綱(Outline)?? 是PDF文檔中的導(dǎo)航結(jié)構(gòu),通常顯示在閱讀器的側(cè)邊欄中,方便用戶快速跳轉(zhuǎn)到文檔的不同部分,大綱通常以層級(jí)結(jié)構(gòu)組織,包含標(biāo)題和對(duì)應(yīng)的頁面位置,本文給大家介紹了使用Python提取PDF大綱(書簽)的完整指南,需要的朋友可以參考下

一、PDF大綱簡(jiǎn)介

PDF大綱(Outline)?? 是PDF文檔中的導(dǎo)航結(jié)構(gòu),通常顯示在閱讀器的側(cè)邊欄中,方便用戶快速跳轉(zhuǎn)到文檔的不同部分。大綱通常以層級(jí)結(jié)構(gòu)組織,包含標(biāo)題和對(duì)應(yīng)的頁面位置。

本文實(shí)現(xiàn)的最終效果圖如下:

二、準(zhǔn)備工作

所需工具

# 核心庫
pip install pdfminer -i https://pypi.tuna.tsinghua.edu.cn/simple
# 防止內(nèi)容亂碼
pip install chardet -i https://pypi.tuna.tsinghua.edu.cn/simple
 
# 推薦測(cè)試文件
https://static.cninfo.com.cn/finalpage/2024-04-30/1219917147.PDF

常見安裝問題

# 未安裝時(shí)的報(bào)錯(cuò)
ModuleNotFoundError: No module named 'pdfminer'
ModuleNotFoundError: No module named 'chardet'

三、代碼實(shí)現(xiàn)

完整代碼

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdftypes import PDFObjRef
from pdfminer.pdfpage import PDFPage
from pdfminer.psparser import PSLiteral
import chardet
 
def extract_pdf_outline(pdf_path):
    """
    使用pdfminer提取PDF文檔大綱(書簽)
    返回包含層級(jí)結(jié)構(gòu)的書簽列表
    """
    with open(pdf_path, 'rb') as file:
        parser = PDFParser(file)
        document = PDFDocument(parser)
        
        # 檢查是否存在大綱
        if 'Outlines' not in document.catalog:
            return []
        
        # 預(yù)先創(chuàng)建頁面列表以便索引
        pages = list(PDFPage.create_pages(document))
        
        outlines = []
        def resolve(obj):
            """解析PDF對(duì)象引用"""
            if isinstance(obj, PDFObjRef):
                return document.getobj(obj.objid)
            return obj
        
        def decode_pdf_string(s):
            """專門處理PDF字符串解碼"""
            if isinstance(s, (bytes, bytearray)):
                # 檢測(cè)編碼
                try:
                    # 嘗試UTF-16-BE(PDF標(biāo)準(zhǔn)編碼)
                    return s.decode('utf-16-be')
                except UnicodeDecodeError:
                    try:
                        # 嘗試自動(dòng)檢測(cè)
                        detected = chardet.detect(s)
                        if detected['confidence'] > 0.7:
                            return s.decode(detected['encoding'])
                    except:
                        pass
                    # 最終回退方案
                    return s.decode('latin1')  # 最寬松的解碼
            elif isinstance(s, PSLiteral):
                return s.name
            return str(s)
        
        def process_outline_item(item, level=0):
            """遞歸處理大綱項(xiàng)"""
            item = resolve(item)
            if not item:
                return
            
            if isinstance(item, dict):
                # 處理書簽項(xiàng)
                title = item.get('Title')
                if title:
                    # 解碼標(biāo)題
                    title = decode_pdf_string(title).strip()
                    
                    # 獲取目標(biāo)頁面
                    dest = item.get('Dest')
                    page_num = None
                    if dest:
                        if isinstance(dest, (bytes, str, PSLiteral)):
                            # 命名目標(biāo)
                            dest = decode_pdf_string(dest)
                            if 'Dests' in document.catalog:
                                named_dests = resolve(document.catalog['Dests'])
                                if named_dests and dest in named_dests:
                                    dest_obj = named_dests[dest]
                                    if isinstance(dest_obj, list):
                                        page_ref = dest_obj[0]
                                        try:
                                            page_num = pages.index(page_ref) + 1
                                        except ValueError:
                                            pass
                        elif isinstance(dest, list):
                            # 直接目標(biāo)
                            page_ref = dest[0]
                            try:
                                page_num = pages.index(page_ref) + 1
                            except ValueError:
                                pass
                    
                    outlines.append({
                        'title': title,
                        'page': page_num,
                        'level': level
                    })
                
                # 處理子項(xiàng)和同級(jí)項(xiàng)
                if 'First' in item:
                    process_outline_item(item['First'], level + 1)
                if 'Next' in item:
                    process_outline_item(item['Next'], level)
            
            elif isinstance(item, list):
                # 處理大綱項(xiàng)列表
                for child in item:
                    process_outline_item(child, level)
        
        # 從根大綱開始處理
        root_outline = resolve(document.catalog['Outlines'])
        process_outline_item(root_outline)
        
        return outlines
 
# 使用示例
pdf_path = 'C:/Users/Administrator/Desktop/1219917147.pdf'
outline = extract_pdf_outline(pdf_path)
 
# 打印大綱(帶縮進(jìn)層級(jí))
for bookmark in outline:
    indent = '  ' * bookmark['level']
    page_info = f" (Page {bookmark['page']})" if bookmark['page'] else ''
    print(f"{indent}- {bookmark['title']}{page_info}")

核心功能解析

?PDF解析引擎?

parser = PDFParser(file)
document = PDFDocument(parser)

?遞歸處理大綱?

def process_outline_item(item, level=0):
    # 處理當(dāng)前項(xiàng)
    if 'First' in item:  # 處理子項(xiàng)
    if 'Next' in item:   # 處理同級(jí)項(xiàng)

?智能編碼處理?

def decode_pdf_string(s):
    # 嘗試UTF-16-BE → 自動(dòng)檢測(cè) → Latin1回退

四、使用效果

控制臺(tái)輸出示例

 
  - 第一節(jié) 重要提示、目錄和釋義
  - 第二節(jié) 公司簡(jiǎn)介和主要財(cái)務(wù)指標(biāo)
    - 一、公司信息
    - 二、聯(lián)系人和聯(lián)系方式
    - 三、信息披露及備置地點(diǎn)
    - 四、注冊(cè)變更情況
    - 五、其他有關(guān)資料
    - 六、主要會(huì)計(jì)數(shù)據(jù)和財(cái)務(wù)指標(biāo)
    - 七、境內(nèi)外會(huì)計(jì)準(zhǔn)則下會(huì)計(jì)數(shù)據(jù)差異
      - 1、同時(shí)按照國際會(huì)計(jì)準(zhǔn)則與按照中國會(huì)計(jì)準(zhǔn)則披露的財(cái)務(wù)報(bào)告中凈利潤和凈資產(chǎn)差異情況
      - 2、同時(shí)按照境外會(huì)計(jì)準(zhǔn)則與按照中國會(huì)計(jì)準(zhǔn)則披露的財(cái)務(wù)報(bào)告中凈利潤和凈資產(chǎn)差異情況
    - 八、分季度主要財(cái)務(wù)指標(biāo)
    - 九、非經(jīng)常性損益項(xiàng)目及金額
  - 第三節(jié) 管理層討論與分析
    - 一、報(bào)告期內(nèi)公司所處行業(yè)情況
    - 二、報(bào)告期內(nèi)公司從事的主要業(yè)務(wù)
    - 三、核心競(jìng)爭(zhēng)力分析
    - 四、主營業(yè)務(wù)分析
      - 1、概述
      - 2、收入與成本
        - (1) 營業(yè)收入構(gòu)成
        - (2) 占公司營業(yè)收入或營業(yè)利潤10%以上的行業(yè)、產(chǎn)品、地區(qū)、銷售模式的情況
        - (3) 公司實(shí)物銷售收入是否大于勞務(wù)收入
        - (4) 公司已簽訂的重大銷售合同、重大采購合同截至本報(bào)告期的履行情況
        - (5) 營業(yè)成本構(gòu)成
        - (6) 報(bào)告期內(nèi)合并范圍是否發(fā)生變動(dòng)
        - (7) 公司報(bào)告期內(nèi)業(yè)務(wù)、產(chǎn)品或服務(wù)發(fā)生重大變化或調(diào)整有關(guān)情況
        - (8) 主要銷售客戶和主要供應(yīng)商情況
      - 3、費(fèi)用
      - 4、研發(fā)投入
      - 5、現(xiàn)金流
    - 五、非主營業(yè)務(wù)分析
    - 六、資產(chǎn)及負(fù)債狀況分析
      - 1、資產(chǎn)構(gòu)成重大變動(dòng)情況
      - 2、以公允價(jià)值計(jì)量的資產(chǎn)和負(fù)債
      - 3、截至報(bào)告期末的資產(chǎn)權(quán)利受限情況
    - 七、投資狀況分析
      - 1、總體情況
      - 2、報(bào)告期內(nèi)獲取的重大的股權(quán)投資情況
      - 3、報(bào)告期內(nèi)正在進(jìn)行的重大的非股權(quán)投資情況
      - 4、金融資產(chǎn)投資
        - (1) 證券投資情況
        - (2) 衍生品投資情況
          - 1) 報(bào)告期內(nèi)以套期保值為目的的衍生品投資
          - 2) 報(bào)告期內(nèi)以投機(jī)為目的的衍生品投資
      - 5、募集資金使用情況
        - (1) 募集資金總體使用情況
        - (2) 募集資金承諾項(xiàng)目情況
        - (3) 募集資金變更項(xiàng)目情況
    - 八、重大資產(chǎn)和股權(quán)出售
      - 1、出售重大資產(chǎn)情況
      - 2、出售重大股權(quán)情況
    - 九、主要控股參股公司分析
    - 十、公司控制的結(jié)構(gòu)化主體情況
    - 十一、公司未來發(fā)展的展望
    - 十二、報(bào)告期內(nèi)接待調(diào)研、溝通、采訪等活動(dòng)
    - 十三、“質(zhì)量回報(bào)雙提升”行動(dòng)方案貫徹落實(shí)情況
  - 第四節(jié) 公司治理
    - 一、公司治理的基本狀況
    - 二、公司相對(duì)于控股股東、實(shí)際控制人在保證公司資產(chǎn)、人員、財(cái)務(wù)、機(jī)構(gòu)、業(yè)務(wù)等方面的獨(dú)立情況
    - 三、同業(yè)競(jìng)爭(zhēng)情況
    - 四、報(bào)告期內(nèi)召開的年度股東大會(huì)和臨時(shí)股東大會(huì)的有關(guān)情況
      - 1、本報(bào)告期股東大會(huì)情況
      - 2、表決權(quán)恢復(fù)的優(yōu)先股股東請(qǐng)求召開臨時(shí)股東大會(huì)
    - 五、董事、監(jiān)事和高級(jí)管理人員情況
      - 1、基本情況
      - 2、任職情況
      - 3、董事、監(jiān)事、高級(jí)管理人員報(bào)酬情況
    - 六、報(bào)告期內(nèi)董事履行職責(zé)的情況
      - 1、本報(bào)告期董事會(huì)情況
      - 2、董事出席董事會(huì)及股東大會(huì)的情況
      - 3、董事對(duì)公司有關(guān)事項(xiàng)提出異議的情況
      - 4、董事履行職責(zé)的其他說明
    - 七、董事會(huì)下設(shè)專門委員會(huì)在報(bào)告期內(nèi)的情況
    - 八、監(jiān)事會(huì)工作情況
    - 九、公司員工情況
      - 1、員工數(shù)量、專業(yè)構(gòu)成及教育程度
      - 2、薪酬政策
      - 3、培訓(xùn)計(jì)劃
      - 4、勞務(wù)外包情況
    - 十、公司利潤分配及資本公積金轉(zhuǎn)增股本情況
    - 十一、公司股權(quán)激勵(lì)計(jì)劃、員工持股計(jì)劃或其他員工激勵(lì)措施的實(shí)施情況
      - 1、股權(quán)激勵(lì)
      - 2、員工持股計(jì)劃的實(shí)施情況
      - 3、其他員工激勵(lì)措施
    - 十二、報(bào)告期內(nèi)的內(nèi)部控制制度建設(shè)及實(shí)施情況
      - 1、內(nèi)部控制建設(shè)及實(shí)施情況
      - 2、報(bào)告期內(nèi)發(fā)現(xiàn)的內(nèi)部控制重大缺陷的具體情況
    - 十三、公司報(bào)告期內(nèi)對(duì)子公司的管理控制情況
    - 十四、內(nèi)部控制評(píng)價(jià)報(bào)告或內(nèi)部控制審計(jì)報(bào)告
      - 1、內(nèi)控評(píng)價(jià)報(bào)告
      - 2、內(nèi)部控制審計(jì)報(bào)告
    - 十五、上市公司治理專項(xiàng)行動(dòng)自查問題整改情況
  - 第五節(jié) 環(huán)境和社會(huì)責(zé)任
    - 一、重大環(huán)保問題
    - 二、社會(huì)責(zé)任情況
    - 三、鞏固拓展脫貧攻堅(jiān)成果、鄉(xiāng)村振興的情況
  - 第六節(jié) 重要事項(xiàng)
    - 一、承諾事項(xiàng)履行情況
      - 1、公司實(shí)際控制人、股東、關(guān)聯(lián)方、收購人以及公司等承諾相關(guān)方在報(bào)告期內(nèi)履行完畢及截至報(bào)告期末尚未履行完畢的承諾事項(xiàng)
      - 2、公司資產(chǎn)或項(xiàng)目存在盈利預(yù)測(cè),且報(bào)告期仍處在盈利預(yù)測(cè)期間,公司就資產(chǎn)或項(xiàng)目達(dá)到原盈利預(yù)測(cè)及其原因做出說明
    - 二、控股股東及其他關(guān)聯(lián)方對(duì)上市公司的非經(jīng)營性占用資金情況
    - 三、違規(guī)對(duì)外擔(dān)保情況
    - 四、董事會(huì)對(duì)最近一期“非標(biāo)準(zhǔn)審計(jì)報(bào)告”相關(guān)情況的說明
    - 五、董事會(huì)、監(jiān)事會(huì)、獨(dú)立董事(如有)對(duì)會(huì)計(jì)師事務(wù)所本報(bào)告期“非標(biāo)準(zhǔn)審計(jì)報(bào)告”的說明
    - 六、與上年度財(cái)務(wù)報(bào)告相比,會(huì)計(jì)政策、會(huì)計(jì)估計(jì)變更或重大會(huì)計(jì)差錯(cuò)更正的情況說明
    - 七、與上年度財(cái)務(wù)報(bào)告相比,合并報(bào)表范圍發(fā)生變化的情況說明
    - 八、聘任、解聘會(huì)計(jì)師事務(wù)所情況
    - 九、年度報(bào)告披露后面臨退市情況
    - 十、破產(chǎn)重整相關(guān)事項(xiàng)
    - 十一、重大訴訟、仲裁事項(xiàng)
    - 十二、處罰及整改情況
    - 十三、公司及其控股股東、實(shí)際控制人的誠信狀況
    - 十四、重大關(guān)聯(lián)交易
      - 1、與日常經(jīng)營相關(guān)的關(guān)聯(lián)交易
      - 2、資產(chǎn)或股權(quán)收購、出售發(fā)生的關(guān)聯(lián)交易
      - 3、共同對(duì)外投資的關(guān)聯(lián)交易
      - 4、關(guān)聯(lián)債權(quán)債務(wù)往來
      - 5、與存在關(guān)聯(lián)關(guān)系的財(cái)務(wù)公司的往來情況
      - 6、公司控股的財(cái)務(wù)公司與關(guān)聯(lián)方的往來情況
      - 7、其他重大關(guān)聯(lián)交易
    - 十五、重大合同及其履行情況
      - 1、托管、承包、租賃事項(xiàng)情況
        - (1) 托管情況
        - (2) 承包情況
        - (3) 租賃情況
      - 2、重大擔(dān)保
      - 3、委托他人進(jìn)行現(xiàn)金資產(chǎn)管理情況
        - (1) 委托理財(cái)情況
        - (2) 委托貸款情況
      - 4、其他重大合同
    - 十六、其他重大事項(xiàng)的說明
    - 十七、公司子公司重大事項(xiàng)
  - 第七節(jié) 股份變動(dòng)及股東情況
    - 一、股份變動(dòng)情況
      - 1、股份變動(dòng)情況
      - 2、限售股份變動(dòng)情況
    - 二、證券發(fā)行與上市情況
      - 1、報(bào)告期內(nèi)證券發(fā)行(不含優(yōu)先股)情況
      - 2、公司股份總數(shù)及股東結(jié)構(gòu)的變動(dòng)、公司資產(chǎn)和負(fù)債結(jié)構(gòu)的變動(dòng)情況說明
      - 3、現(xiàn)存的內(nèi)部職工股情況
    - 三、股東和實(shí)際控制人情況
      - 1、公司股東數(shù)量及持股情況
      - 2、公司控股股東情況
      - 3、公司實(shí)際控制人及其一致行動(dòng)人
      - 4、公司控股股東或第一大股東及其一致行動(dòng)人累計(jì)質(zhì)押股份數(shù)量占其所持公司股份數(shù)量比例達(dá)到80%
      - 5、其他持股在10%以上的法人股東
      - 6、控股股東、實(shí)際控制人、重組方及其他承諾主體股份限制減持情況
    - 四、股份回購在報(bào)告期的具體實(shí)施情況
  - 第八節(jié) 優(yōu)先股相關(guān)情況
  - 第九節(jié) 債券相關(guān)情況
    - 一、企業(yè)債券
    - 二、公司債券
    - 三、非金融企業(yè)債務(wù)融資工具
    - 四、可轉(zhuǎn)換公司債券
      - 1、轉(zhuǎn)股價(jià)格歷次調(diào)整情況
      - 2、累計(jì)轉(zhuǎn)股情況
      - 3、前十名可轉(zhuǎn)債持有人情況
      - 4、擔(dān)保人盈利能力、資產(chǎn)狀況和信用狀況發(fā)生重大變化的情況
      - 5、報(bào)告期末公司的負(fù)債情況、資信變化情況以及在未來年度還債的現(xiàn)金安排
    - 五、報(bào)告期內(nèi)合并報(bào)表范圍虧損超過上年末凈資產(chǎn)10%
    - 六、報(bào)告期末除債券外的有息債務(wù)逾期情況
    - 七、報(bào)告期內(nèi)是否有違反規(guī)章制度的情況
    - 八、截至報(bào)告期末公司近兩年的主要會(huì)計(jì)數(shù)據(jù)和財(cái)務(wù)指標(biāo)
  - 第十節(jié) 財(cái)務(wù)報(bào)告
    - 一、審計(jì)報(bào)告
    - 二、財(cái)務(wù)報(bào)表
      - 1、合并資產(chǎn)負(fù)債表
      - 2、母公司資產(chǎn)負(fù)債表
      - 3、合并利潤表
      - 4、母公司利潤表
      - 5、合并現(xiàn)金流量表
      - 6、母公司現(xiàn)金流量表
      - 7、合并所有者權(quán)益變動(dòng)表
      - 8、母公司所有者權(quán)益變動(dòng)表
    - 三、公司基本情況
    - 四、財(cái)務(wù)報(bào)表的編制基礎(chǔ)
      - 1、編制基礎(chǔ)
      - 2、持續(xù)經(jīng)營
    - 五、重要會(huì)計(jì)政策及會(huì)計(jì)估計(jì)
      - 1、遵循企業(yè)會(huì)計(jì)準(zhǔn)則的聲明
      - 2、會(huì)計(jì)期間
      - 3、營業(yè)周期
      - 4、記賬本位幣
      - 5、重要性標(biāo)準(zhǔn)確定方法和選擇依據(jù)
      - 6、同一控制下和非同一控制下企業(yè)合并的會(huì)計(jì)處理方法
      - 7、控制的判斷標(biāo)準(zhǔn)和合并財(cái)務(wù)報(bào)表的編制方法
      - 8、現(xiàn)金及現(xiàn)金等價(jià)物的確定標(biāo)準(zhǔn)
      - 9、外幣業(yè)務(wù)和外幣報(bào)表折算
      - 10、金融工具
      - 11、合同資產(chǎn)和合同負(fù)債
      - 12、存貨
      - 13、持有待售資產(chǎn)
      - 14、長期股權(quán)投資
      - 15、投資性房地產(chǎn)
      - 16、固定資產(chǎn)
        - (1) 確認(rèn)條件
        - (2) 折舊方法
        - (3) 固定資產(chǎn)處置
      - 17、在建工程
      - 18、借款費(fèi)用
      - 19、無形資產(chǎn)
        - (1) 使用壽命及其確定依據(jù)、估計(jì)情況、攤銷方法或復(fù)核程序
        - (2) 研發(fā)支出的歸集范圍及相關(guān)會(huì)計(jì)處理方法
      - 20、長期資產(chǎn)減值
      - 21、長期待攤費(fèi)用
      - 22、職工薪酬
        - (1) 短期薪酬的會(huì)計(jì)處理方法
        - (2) 離職后福利的會(huì)計(jì)處理方法
        - (3) 辭退福利的會(huì)計(jì)處理方法
      - 23、預(yù)計(jì)負(fù)債
      - 24、股份支付
      - 25、收入
      - 26、合同成本
      - 27、政府補(bǔ)助
      - 28、遞延所得稅資產(chǎn)/遞延所得稅負(fù)債
      - 29、租賃
        - (1) 作為承租方租賃的會(huì)計(jì)處理方法
        - (2) 作為出租方租賃的會(huì)計(jì)處理方法
      - 30、其他重要的會(huì)計(jì)政策和會(huì)計(jì)估計(jì)
      - 31、重要會(huì)計(jì)政策和會(huì)計(jì)估計(jì)變更
        - (1) 重要會(huì)計(jì)政策變更
        - (2) 重要會(huì)計(jì)估計(jì)變更
        - (3) 2023年起首次執(zhí)行新會(huì)計(jì)準(zhǔn)則調(diào)整首次執(zhí)行當(dāng)年年初財(cái)務(wù)報(bào)表相關(guān)項(xiàng)目情況
    - 六、稅項(xiàng)
      - 1、主要稅種及稅率
      - 2、稅收優(yōu)惠
    - 七、合并財(cái)務(wù)報(bào)表項(xiàng)目注釋
      - 1、貨幣資金
      - 2、衍生金融資產(chǎn)
      - 3、應(yīng)收票據(jù)
        - (1) 應(yīng)收票據(jù)分類列示
        - (2) 按壞賬計(jì)提方法分類披露
        - (3) 本期計(jì)提、收回或轉(zhuǎn)回的壞賬準(zhǔn)備情況
        - (4) 期末公司已背書或貼現(xiàn)且在資產(chǎn)負(fù)債表日尚未到期的應(yīng)收票據(jù)
      - 4、應(yīng)收賬款
        - (1) 按賬齡披露
        - (2) 按壞賬計(jì)提方法分類披露
        - (3) 本期計(jì)提、收回或轉(zhuǎn)回的壞賬準(zhǔn)備情況
        - (4) 本期實(shí)際核銷的應(yīng)收賬款情況
        - (5) 按欠款方歸集的期末余額前五名的應(yīng)收賬款和合同資產(chǎn)情況
      - 5、合同資產(chǎn)
        - (1) 合同資產(chǎn)情況
        - (2) 按壞賬計(jì)提方法分類披露
        - (3) 本期計(jì)提、收回或轉(zhuǎn)回的壞賬準(zhǔn)備情況
      - 6、應(yīng)收款項(xiàng)融資
        - (1) 應(yīng)收款項(xiàng)融資分類列示
        - (2) 期末公司已質(zhì)押的應(yīng)收款項(xiàng)融資
        - (3) 期末公司已背書或貼現(xiàn)且在資產(chǎn)負(fù)債表日尚未到期的應(yīng)收款項(xiàng)融資
        - (4) 本期實(shí)際核銷的應(yīng)收款項(xiàng)融資情況
        - 核銷說明:
        - (5) 其他說明
      - 7、其他應(yīng)收款
        - (1) 應(yīng)收股利
          - 1) 應(yīng)收股利分類
          - 2) 按壞賬計(jì)提方法分類披露
        - (2) 其他應(yīng)收款
          - 1) 其他應(yīng)收款按款項(xiàng)性質(zhì)分類情況
          - 2) 按賬齡披露
          - 3) 按壞賬計(jì)提方法分類披露
          - 4) 本期計(jì)提、收回或轉(zhuǎn)回的壞賬準(zhǔn)備情況
          - 5) 按欠款方歸集的期末余額前五名的其他應(yīng)收款情況
      - 8、預(yù)付款項(xiàng)
        - (1) 預(yù)付款項(xiàng)按賬齡列示
        - (2) 按預(yù)付對(duì)象歸集的期末余額前五名的預(yù)付款情況
      - 9、存貨
        - (1) 存貨分類
        - (2) 存貨跌價(jià)準(zhǔn)備和合同履約成本減值準(zhǔn)備
      - 10、一年內(nèi)到期的非流動(dòng)資產(chǎn)
        - (1) 一年內(nèi)到期的債權(quán)投資
        - (2) 一年內(nèi)到期的其他債權(quán)投資
      - 11、其他流動(dòng)資產(chǎn)
      - 12、其他權(quán)益工具投資
      - 13、長期應(yīng)收款
        - (1) 長期應(yīng)收款情況
        - (2) 按壞賬計(jì)提方法分類披露
        - (3) 本期計(jì)提、收回或轉(zhuǎn)回的壞賬準(zhǔn)備的情況
      - 14、長期股權(quán)投資
      - 15、固定資產(chǎn)
        - (1) 固定資產(chǎn)情況
        - (2) 暫時(shí)閑置的固定資產(chǎn)情況
        - (3) 通過經(jīng)營租賃租出的固定資產(chǎn)
        - (4) 未辦妥產(chǎn)權(quán)證書的固定資產(chǎn)情況
        - (5) 固定資產(chǎn)的減值測(cè)試情況
        - (6) 固定資產(chǎn)清理
      - 16、在建工程
        - (1) 在建工程情況
        - (2) 重要在建工程項(xiàng)目本期變動(dòng)情況
        - (3) 在建工程的減值測(cè)試情況
        - (4) 工程物資
      - 17、使用權(quán)資產(chǎn)
        - (1) 使用權(quán)資產(chǎn)情況
        - (2) 使用權(quán)資產(chǎn)的減值測(cè)試情況
      - 18、無形資產(chǎn)
        - (1) 無形資產(chǎn)情況
        - (2) 未辦妥產(chǎn)權(quán)證書的土地使用權(quán)情況
        - (3) 無形資產(chǎn)的減值測(cè)試情況
      - 19、長期待攤費(fèi)用
      - 20、遞延所得稅資產(chǎn)/遞延所得稅負(fù)債
        - (1) 未經(jīng)抵銷的遞延所得稅資產(chǎn)
        - (2) 未經(jīng)抵銷的遞延所得稅負(fù)債
        - (3) 以抵銷后凈額列示的遞延所得稅資產(chǎn)或負(fù)債
        - (4) 未確認(rèn)遞延所得稅資產(chǎn)明細(xì)
        - (5) 未確認(rèn)遞延所得稅資產(chǎn)的可抵扣虧損將于以下年度到期
      - 21、其他非流動(dòng)資產(chǎn)
      - 22、所有權(quán)或使用權(quán)受到限制的資產(chǎn)
      - 23、短期借款
        - (1) 短期借款分類
      - 24、衍生金融負(fù)債
      - 25、應(yīng)付票據(jù)
      - 26、應(yīng)付賬款
        - (1) 應(yīng)付賬款列示
      - 27、其他應(yīng)付款
        - (1) 應(yīng)付股利
        - (2) 其他應(yīng)付款
          - 按款項(xiàng)性質(zhì)列示其他應(yīng)付款
      - 28、合同負(fù)債
      - 29、應(yīng)付職工薪酬
        - (1) 應(yīng)付職工薪酬列示
        - (2) 短期薪酬列示
        - (3) 設(shè)定提存計(jì)劃列示
      - 30、應(yīng)交稅費(fèi)
      - 31、一年內(nèi)到期的非流動(dòng)負(fù)債
      - 32、其他流動(dòng)負(fù)債
      - 33、長期借款
        - (1) 長期借款分類
      - 34、應(yīng)付債券
        - (1) 應(yīng)付債券
        - (2) 應(yīng)付債券的增減變動(dòng)(不包括劃分為金融負(fù)債的優(yōu)先股、永續(xù)債等其他金融工具)
        - (3) 可轉(zhuǎn)換公司債券的說明
      - 35、租賃負(fù)債
      - 36、長期應(yīng)付款
      - 37、預(yù)計(jì)負(fù)債
      - 38、遞延收益
      - 39、其他非流動(dòng)負(fù)債
      - 40、股本
      - 41、其他權(quán)益工具
        - (1) 期末發(fā)行在外的優(yōu)先股、永續(xù)債等其他金融工具基本情況
        - (2) 期末發(fā)行在外的優(yōu)先股、永續(xù)債等金融工具變動(dòng)情況表
      - 42、資本公積
      - 43、庫存股
      - 44、其他綜合收益
      - 45、專項(xiàng)儲(chǔ)備
      - 46、盈余公積
      - 47、未分配利潤
      - 48、營業(yè)收入和營業(yè)成本
      - 49、稅金及附加
      - 50、管理費(fèi)用
      - 51、銷售費(fèi)用
      - 52、研發(fā)費(fèi)用
      - 53、財(cái)務(wù)費(fèi)用
      - 54、其他收益
      - 55、公允價(jià)值變動(dòng)收益
      - 56、投資收益
      - 57、信用減值損失
      - 58、資產(chǎn)減值損失
      - 59、資產(chǎn)處置收益
      - 60、營業(yè)外收入
      - 61、營業(yè)外支出
      - 62、所得稅費(fèi)用
        - (1) 所得稅費(fèi)用表
        - (2) 會(huì)計(jì)利潤與所得稅費(fèi)用調(diào)整過程
      - 63、現(xiàn)金流量表項(xiàng)目
        - (1) 與經(jīng)營活動(dòng)有關(guān)的現(xiàn)金
        - (2) 與投資活動(dòng)有關(guān)的現(xiàn)金
        - (3) 與籌資活動(dòng)有關(guān)的現(xiàn)金
      - 64、現(xiàn)金流量表補(bǔ)充資料
        - (1) 現(xiàn)金流量表補(bǔ)充資料
        - (2) 本期收到的處置子公司的現(xiàn)金凈額
        - (3) 現(xiàn)金和現(xiàn)金等價(jià)物的構(gòu)成
      - 65、外幣貨幣性項(xiàng)目
        - (1) 外幣貨幣性項(xiàng)目
        - (2) 境外經(jīng)營實(shí)體說明,包括對(duì)于重要的境外經(jīng)營實(shí)體,應(yīng)披露其境外主要經(jīng)營地、記賬本位幣及選擇依據(jù),記賬本位幣發(fā)生變化的還應(yīng)披露原因。
      - 66、租賃
        - (1) 本公司作為承租方
        - (2) 本公司作為出租方
    - 八、研發(fā)支出
    - 九、合并范圍的變更
      - 1、同一控制下企業(yè)合并
        - (1) 本期發(fā)生的同一控制下企業(yè)合并
        - (2) 合并成本
        - (3) 合并日被合并方資產(chǎn)、負(fù)債的賬面價(jià)值
      - 2、處置子公司
      - 3、其他原因的合并范圍變動(dòng)
    - 十、在其他主體中的權(quán)益
      - 1、在子公司中的權(quán)益
        - (1) 企業(yè)集團(tuán)的構(gòu)成
        - (2)重要的非全資子公司
        - (3)重要非全資子公司的主要財(cái)務(wù)信息
      - 2、在子公司的所有者權(quán)益份額發(fā)生變化且仍控制子公司的交易
        - (1)在子公司所有者權(quán)益份額發(fā)生變化的情況說明
        - (2)交易對(duì)于少數(shù)股東權(quán)益及歸屬于母公司所有者權(quán)益的影響
      - 3、在合營安排或聯(lián)營企業(yè)中的權(quán)益
        - (1)重要的合營企業(yè)或聯(lián)營企業(yè)
        - (2)重要聯(lián)營企業(yè)的主要財(cái)務(wù)信息
        - (3)不重要的合營企業(yè)和聯(lián)營企業(yè)的匯總財(cái)務(wù)信息
        - (4)合營企業(yè)或聯(lián)營企業(yè)發(fā)生的超額虧損
    - 十一、政府補(bǔ)助
      - 1、報(bào)告期末按應(yīng)收金額確認(rèn)的政府補(bǔ)助
      - 2、涉及政府補(bǔ)助的負(fù)債項(xiàng)目
      - 3、計(jì)入當(dāng)期損益的政府補(bǔ)助
    - 十二、與金融工具相關(guān)的風(fēng)險(xiǎn)
      - 1、金融工具產(chǎn)生的各類風(fēng)險(xiǎn)
    - 十三、公允價(jià)值的披露
      - 1、以公允價(jià)值計(jì)量的資產(chǎn)和負(fù)債的期末公允價(jià)值
      - 2、持續(xù)和非持續(xù)第二層次公允價(jià)值計(jì)量項(xiàng)目,采用的估值技術(shù)和重要參數(shù)的定性及定量信息
      - 3、持續(xù)和非持續(xù)第三層次公允價(jià)值計(jì)量項(xiàng)目,采用的估值技術(shù)和重要參數(shù)的定性及定量信息
      - 4、本期內(nèi)發(fā)生的估值技術(shù)變更及變更原因
    - 十四、關(guān)聯(lián)方及關(guān)聯(lián)交易
      - 1、本企業(yè)的母公司情況
      - 2、本企業(yè)的子公司情況
      - 3、本企業(yè)合營和聯(lián)營企業(yè)情況
      - 4、其他關(guān)聯(lián)方情況
      - 5、關(guān)聯(lián)交易情況
        - (1)購銷商品、提供和接受勞務(wù)的關(guān)聯(lián)交易
        - (2) 關(guān)聯(lián)租賃情況
        - (3) 關(guān)聯(lián)擔(dān)保情況
        - (4) 關(guān)聯(lián)方資金拆借
        - (5) 支付關(guān)聯(lián)方資金占用費(fèi)及擔(dān)保費(fèi)情況
        - (6) 關(guān)聯(lián)方資產(chǎn)轉(zhuǎn)讓、債務(wù)重組情況
        - (7) 關(guān)鍵管理人員報(bào)酬
      - 6、關(guān)聯(lián)方應(yīng)收應(yīng)付款項(xiàng)
        - (1) 應(yīng)收項(xiàng)目
        - (2) 應(yīng)付項(xiàng)目
      - 7、關(guān)聯(lián)方承諾
    - 十五、股份支付
      - 1、股份支付總體情況
      - 2、以權(quán)益結(jié)算的股份支付情況
      - 3、以現(xiàn)金結(jié)算的股份支付情況
      - 4、本期股份支付費(fèi)用
    - 十六、承諾及或有事項(xiàng)
      - 1、重要承諾事項(xiàng)
    - 十七、資產(chǎn)負(fù)債表日后事項(xiàng)
      - 1、重要的非調(diào)整事項(xiàng)
      - 2、利潤分配情況
    - 十八、其他重要事項(xiàng)
      - 1、分部信息
        - (1) 報(bào)告分部的確定依據(jù)與會(huì)計(jì)政策
        - (2) 報(bào)告分部的財(cái)務(wù)信息
    - 十九、母公司財(cái)務(wù)報(bào)表主要項(xiàng)目注釋
      - 1、應(yīng)收賬款
        - (1) 按賬齡披露
        - (2) 按壞賬計(jì)提方法分類披露
        - (3) 本期計(jì)提、收回或轉(zhuǎn)回的壞賬準(zhǔn)備情況
        - (4) 按欠款方歸集的期末余額前五名的應(yīng)收賬款和合同資產(chǎn)情況
      - 2、其他應(yīng)收款
        - (1) 應(yīng)收股利
        - (1) 應(yīng)收股利
        - (1) 應(yīng)收股利
        - (1) 應(yīng)收股利
          - 1) 應(yīng)收股利分類
        - (1) 應(yīng)收股利
          - 1) 應(yīng)收股利分類
        - (1) 應(yīng)收股利
          - 1) 應(yīng)收股利分類
        - (2) 其他應(yīng)收款
          - 1) 其他應(yīng)收款按款項(xiàng)性質(zhì)分類情況
          - 2) 按賬齡披露
          - 3) 按欠款方歸集的期末余額前五名的其他應(yīng)收款情況
      - 3、長期股權(quán)投資
        - (1) 對(duì)子公司投資
        - (2) 對(duì)聯(lián)營、合營企業(yè)投資
      - 4、營業(yè)收入和營業(yè)成本
      - 5、投資收益
    - 二十、補(bǔ)充資料
      - 1、當(dāng)期非經(jīng)常性損益明細(xì)表
      - 2、凈資產(chǎn)收益率及每股收益
      - 3、境內(nèi)外會(huì)計(jì)準(zhǔn)則下會(huì)計(jì)數(shù)據(jù)差異
        - (1) 同時(shí)按照國際會(huì)計(jì)準(zhǔn)則與按中國會(huì)計(jì)準(zhǔn)則披露的財(cái)務(wù)報(bào)告中凈利潤和凈資產(chǎn)差異情況
        - (2) 同時(shí)按照境外會(huì)計(jì)準(zhǔn)則與按中國會(huì)計(jì)準(zhǔn)則披露的財(cái)務(wù)報(bào)告中凈利潤和凈資產(chǎn)差異情況
        - (3) 境內(nèi)外會(huì)計(jì)準(zhǔn)則下會(huì)計(jì)數(shù)據(jù)差異原因說明,對(duì)已經(jīng)境外審計(jì)機(jī)構(gòu)審計(jì)的數(shù)據(jù)進(jìn)行差異調(diào)節(jié)的,應(yīng)注明該境外機(jī)構(gòu)的名稱

輸出特點(diǎn)

  • ? 完整保留層級(jí)關(guān)系
  • ? 自動(dòng)關(guān)聯(lián)頁碼
  • ? 支持復(fù)雜編碼

五、代碼深度解析

關(guān)鍵技術(shù)點(diǎn)

技術(shù)點(diǎn)實(shí)現(xiàn)方案圖標(biāo)
遞歸處理DFS算法遍歷樹結(jié)構(gòu)??
頁面定位解析Dest和NamedDest??
編碼處理三級(jí)降級(jí)策略??
對(duì)象解析PDFObjRef解引用??

流程圖

graph TD
    A[開始解析PDF] --> B{是否有Outlines?}
    B -->|是| C[解析根節(jié)點(diǎn)]
    B -->|否| D[返回空列表]
    C --> E[遞歸處理First/Next]
    E --> F[提取標(biāo)題和頁碼]
    F --> G[生成結(jié)構(gòu)化數(shù)據(jù)]

六、常見問題解答

Q1: 提取結(jié)果為空?

可能原因:

  • PDF本身無大綱結(jié)構(gòu)
  • 大綱被加密
  • 非常規(guī)大綱實(shí)現(xiàn)

Q2: 中文亂碼怎么辦?

解決方案:

  1. 檢查chardet檢測(cè)結(jié)果
  2. 嘗試添加GBK編碼
  3. 手動(dòng)指定編碼參數(shù)

七、擴(kuò)展應(yīng)用場(chǎng)景

實(shí)用案例

  • 自動(dòng)生成文檔目錄
  • 轉(zhuǎn)換為HTML導(dǎo)航菜單
  • 文檔結(jié)構(gòu)分析報(bào)表
  • 與OCR結(jié)合實(shí)現(xiàn)智能檢索

八、總結(jié)

本文介紹了使用pdfminer庫提取PDF大綱的完整方法,包括PDF解析、遞歸處理大綱結(jié)構(gòu)、編碼處理和頁面定位等關(guān)鍵技術(shù)點(diǎn)。這種方法可以處理大多數(shù)包含大綱的PDF文檔,并保留層級(jí)結(jié)構(gòu)信息。

以上就是使用Python提取PDF大綱(書簽)的完整指南的詳細(xì)內(nèi)容,更多關(guān)于Python提取PDF大綱(書簽)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python類的基礎(chǔ)入門知識(shí)

    Python類的基礎(chǔ)入門知識(shí)

    關(guān)于類的定義
    2008-11-11
  • Python中字典及遍歷常用函數(shù)的使用詳解

    Python中字典及遍歷常用函數(shù)的使用詳解

    這篇文章主要為大家介紹了Python中字典有關(guān)的常見函數(shù)的使用方法,以及字典遍歷的方法。文中通過示例代碼為我們進(jìn)行了詳細(xì)介紹,對(duì)學(xué)習(xí)Python字典有一定幫助,需要的可以參考一下
    2022-06-06
  • Python文件操作和數(shù)據(jù)格式詳解(簡(jiǎn)單簡(jiǎn)潔)

    Python文件操作和數(shù)據(jù)格式詳解(簡(jiǎn)單簡(jiǎn)潔)

    文本處理是腳本語言的強(qiáng)項(xiàng),下面這篇文章主要給大家介紹了關(guān)于Python文件操作和數(shù)據(jù)格式的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • python里glob模塊知識(shí)點(diǎn)總結(jié)

    python里glob模塊知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于python里glob模塊知識(shí)點(diǎn)總結(jié),有需要的朋友們可以參考下。
    2021-01-01
  • Python基于列表list實(shí)現(xiàn)的CRUD操作功能示例

    Python基于列表list實(shí)現(xiàn)的CRUD操作功能示例

    這篇文章主要介紹了Python列表list實(shí)現(xiàn)的CRUD操作功能,結(jié)合實(shí)例形式分析了Python基于列表list實(shí)現(xiàn)用戶數(shù)據(jù)CRUD相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • TOPI如何使TVM代碼不那么樣板化

    TOPI如何使TVM代碼不那么樣板化

    這篇文章主要為大家介紹了TOPI如何使TVM代碼不那么樣板化實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 深入淺析Python數(shù)據(jù)分析的過程記錄

    深入淺析Python數(shù)據(jù)分析的過程記錄

    我們先利用?Jupyter?Notebook?來進(jìn)行分析,然后,在得到成果以后,利用?Pycharm?來進(jìn)行完整的程序設(shè)計(jì),對(duì)Python數(shù)據(jù)分析的過程記錄感興趣的朋友一起看看吧
    2022-01-01
  • python3.6編寫的單元測(cè)試示例

    python3.6編寫的單元測(cè)試示例

    這篇文章主要介紹了python3.6編寫的單元測(cè)試,結(jié)合實(shí)例形式分析了Python3.6使用unittest模塊進(jìn)行單元測(cè)試的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-08-08
  • Python之requests高級(jí)用法詳解

    Python之requests高級(jí)用法詳解

    這篇文章主要介紹了Python之requests高級(jí)用法詳解,http協(xié)議是無狀態(tài)的,?服務(wù)器無法區(qū)分多個(gè)請(qǐng)求是否來自同一個(gè)人,因此需要用cookie來進(jìn)行標(biāo)識(shí),一般如果需要登錄才能訪問的網(wǎng)站就需要發(fā)送cookie信息,需要的朋友可以參考下
    2023-10-10
  • Python數(shù)據(jù)結(jié)構(gòu)之雙向鏈表的定義與使用方法示例

    Python數(shù)據(jù)結(jié)構(gòu)之雙向鏈表的定義與使用方法示例

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)之雙向鏈表的定義與使用方法,結(jié)合實(shí)例形式分析了Python雙向鏈表的概念、原理、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-01-01

最新評(píng)論