使用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: 中文亂碼怎么辦?
解決方案:
- 檢查chardet檢測(cè)結(jié)果
- 嘗試添加GBK編碼
- 手動(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文件操作和數(shù)據(jù)格式詳解(簡(jiǎn)單簡(jiǎn)潔)
文本處理是腳本語言的強(qiáng)項(xiàng),下面這篇文章主要給大家介紹了關(guān)于Python文件操作和數(shù)據(jù)格式的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05python里glob模塊知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于python里glob模塊知識(shí)點(diǎn)總結(jié),有需要的朋友們可以參考下。2021-01-01Python基于列表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-01Python數(shù)據(jù)結(jié)構(gòu)之雙向鏈表的定義與使用方法示例
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)之雙向鏈表的定義與使用方法,結(jié)合實(shí)例形式分析了Python雙向鏈表的概念、原理、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-01-01