財務(wù)自動化工具開發(fā)與應(yīng)用-基于Python和DeepSeek 課件 第3、4章 Python在財務(wù)文本解析自動化領(lǐng)域的應(yīng)用、Python在財務(wù)圖像識別和電子郵件處理自動化領(lǐng)域的應(yīng)用_第1頁
財務(wù)自動化工具開發(fā)與應(yīng)用-基于Python和DeepSeek 課件 第3、4章 Python在財務(wù)文本解析自動化領(lǐng)域的應(yīng)用、Python在財務(wù)圖像識別和電子郵件處理自動化領(lǐng)域的應(yīng)用_第2頁
財務(wù)自動化工具開發(fā)與應(yīng)用-基于Python和DeepSeek 課件 第3、4章 Python在財務(wù)文本解析自動化領(lǐng)域的應(yīng)用、Python在財務(wù)圖像識別和電子郵件處理自動化領(lǐng)域的應(yīng)用_第3頁
財務(wù)自動化工具開發(fā)與應(yīng)用-基于Python和DeepSeek 課件 第3、4章 Python在財務(wù)文本解析自動化領(lǐng)域的應(yīng)用、Python在財務(wù)圖像識別和電子郵件處理自動化領(lǐng)域的應(yīng)用_第4頁
財務(wù)自動化工具開發(fā)與應(yīng)用-基于Python和DeepSeek 課件 第3、4章 Python在財務(wù)文本解析自動化領(lǐng)域的應(yīng)用、Python在財務(wù)圖像識別和電子郵件處理自動化領(lǐng)域的應(yīng)用_第5頁
已閱讀5頁,還剩96頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第三章Python在財務(wù)文本解析自動化領(lǐng)域的應(yīng)用目錄013.1Python在財務(wù)文本解析自動化領(lǐng)域的應(yīng)用介紹020403第三章Python在財務(wù)文本解析自動化領(lǐng)域的應(yīng)用3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能053.5文檔主題可視化技術(shù)063.6文檔主題可視化案例實戰(zhàn)——貴州茅臺3.1Python在財務(wù)文本解析自動化領(lǐng)域的應(yīng)用介紹Python在財務(wù)文本解析自動化中的一些核心應(yīng)用:銀行業(yè)務(wù)流程與財務(wù)報告自動化內(nèi)部審計與風(fēng)險合規(guī)監(jiān)控上市公司年報深度解析與綜合財務(wù)數(shù)據(jù)分析3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫的安裝:在進行PDF文本解析時,推薦使用pip安裝方法來安裝pdfplumber庫。安裝過程與之前介紹的pip安裝方法相似,具體步驟如下:(1)按下鍵盤上的“Win+R”組合鍵,調(diào)出運行對話框。(2)輸入“cmd”并點擊“確定”,打開命令提示符窗口。(3)在控制臺中輸入命令“pipinstallpdfplumber”。(4)按下“Enter”鍵,啟動安裝過程,并等待其完成。若遇到安裝問題,可嘗試使用清華大學(xué)提供的鏡像源進行安裝?;蛘呖梢允褂萌缦麓a進行安裝,其效果與之前描述的相同:安裝界面的顯示如圖所示。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取文本內(nèi)容:pdfplumber庫的使用非常簡單。通過調(diào)用庫中的extract_text()方法,可以輕松解析PDF文件第一頁的文本內(nèi)容。運行效果如圖所示。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取文本內(nèi)容:若需解析文檔中每一頁的內(nèi)容,可通過for循環(huán)語句實現(xiàn)。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取文本內(nèi)容:或者采用如下代碼:3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格補充知識點:文件的相對路徑與絕對路徑:相對路徑:相對路徑指相對于當前代碼文件所在目錄的路徑。例如,上面案例中使用pdfplumber.open('公司A理財公告.PDF')表示打開與代碼文件同一目錄下的PDF文件。若路徑寫為pdfplumber.open('XX文件夾/公司A理財公告.PDF'),則指打開當前目錄下“XX文件夾”中的PDF文件。絕對路徑:絕對路徑提供了文件在文件系統(tǒng)中的完整路徑。例如,“E:\測試\公司A理財公告.PDF”是一個絕對路徑。由于在Python中,反斜杠“\”用作轉(zhuǎn)義字符,例如“\n”代表換行,因此在書寫絕對路徑時,建議使用雙反斜杠“E:\\測試\\公司A理財公告.PDF”以避免轉(zhuǎn)義字符的混淆。除了使用雙反斜杠外,還可以在路徑字符串前加上字母“r“,以指示該字符串為原始字符串,從而忽略單個反斜杠的特殊含義。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取表格內(nèi)容:pdfplumber庫不僅能夠解析PDF文檔中的普通文本內(nèi)容,還具備解析文檔內(nèi)表格的功能。例如,在“公司A理財公告.PDF”文檔的第4頁,就包含了如圖所示的表格內(nèi)容。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取表格內(nèi)容:使用pdfplumber庫的extract_tables()方法可以提取頁面中的表格,代碼如下:輸出結(jié)果見圖。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取表格內(nèi)容:得到的table是一個嵌套列表結(jié)構(gòu),其中大列表包含多個小列表,每個小列表代表表格中的每一行。為了使表格的展現(xiàn)效果更佳,可以利用pandas庫,代碼如下。其中,table[0]代表表頭信息,而table[1:]代表第2行及其以下的內(nèi)容。獲得的表格df如圖所示。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取表格內(nèi)容:表格中可能存在一些換行符\n,這是由于原表格中相應(yīng)字符之間存在換行。若需去除這些換行符,可以使用replace()函數(shù)進行替換,代碼如下:由于table是一個嵌套列表,需要通過兩層循環(huán)定位到具體的文本內(nèi)容。table[i]表示子列表,table[i][j]表示子列表中的元素。使用replace()函數(shù)替換換行符后,需要將替換后的內(nèi)容重新賦值給table[i][j]以完成替換。替換后的表格輸出展示在圖中,其中換行符已被去除。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取表格內(nèi)容:此外,某些IDE(如PyCharm)在展示DataFrame時可能僅展示部分列而非全部,如圖所示。為了展示DataFrame的全部列,可以在打印查看DataFrame之前添加如下代碼行,即可展示DataFrame的所有列:此時打印輸出效果如圖所示。3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液單個上市公司年報解析——以貴州茅臺為例:本節(jié)以貴州茅臺2020年年報為例,進行上市公司年報的解析實戰(zhàn)。附錄代碼中已提供貴州茅臺年報PDF,無需額外搜索下載。實戰(zhàn)中,將重點解析公司的核心競爭力和未來展望這兩部分內(nèi)容,這兩部分的內(nèi)容可通過第3.2節(jié)介紹的文本內(nèi)容提取方法從年報中提取。打開貴州茅臺的年報PDF,找到公司的核心競爭力部分,位于年報的第三節(jié)“公司業(yè)務(wù)概要”之下,如圖所示。3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液單個上市公司年報解析——以貴州茅臺為例:首先,使用pdfplumber庫將貴州茅臺年報PDF解析為字符串,操作方法在前文已有詳細介紹,此處不再贅述。解析字符串的代碼如下:3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液單個上市公司年報解析——以貴州茅臺為例:下面的提取工作主要利用re庫定位“核心競爭力”段落在PDF中的位置。re庫是Python自帶的標準庫,無需額外安裝,其主要功能是通過正則表達式匹配字符串。要提取的內(nèi)容通常以“核心競爭力分析”開頭,之后是第四節(jié)的內(nèi)容(即第三節(jié)的最后一部分),可以使用此匹配規(guī)則結(jié)合re.findall函數(shù)提取符合規(guī)則的段落。由于re.findall返回的是所有符合匹配規(guī)則的段落,即res是列表,需先取列表的第一個元素res[0]。接下來進行數(shù)據(jù)清洗工作,如去除結(jié)果字符串中的“\n”和“2020年年度報告”等字符(由于此處不存在翻頁,故不存在“2020年年度報告”字符。但在實際操作中,若存在翻頁則用相應(yīng)的代碼進行刪除)。這里使用replace方法,也可使用re庫的sub方法。最后,使用strip方法去除前后空格,得到包含核心競爭力信息的字符串。完整的提取代碼如下:3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液單個上市公司年報解析——以貴州茅臺為例:提取到的字符串使用print輸出結(jié)果,如圖所示。接下來,使用類似方法提取年報中上市公司關(guān)于未來發(fā)展的展望部分。定位這部分內(nèi)容在年報中的位置,如圖所示。3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液單個上市公司年報解析——以貴州茅臺為例:與核心競爭力披露的解析過程相似,首先解析PDF文件,代碼如下:3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液單個上市公司年報解析——以貴州茅臺為例:然后,根據(jù)該部分前后文的特點提取內(nèi)容,代碼如下:代碼與上一個部分的不同在于第3行取了結(jié)果列表中的第二個元素res[1],因為在年報中符合第2行正則表達式匹配規(guī)則的內(nèi)容有兩個,第一個是詳細版目錄中出現(xiàn)的,而需要的是第二個元素。最后提取到的年報中未來展望的內(nèi)容的打印結(jié)果如圖所示。3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液多個上市公式年報批量解析——以五糧液等公司為例:在掌握了單家公司年報的解析方法后,進一步探討如何提高效率,實現(xiàn)對多家公司年報的批量解析,例如白酒行業(yè)某一年份所有公司的年報。在分析五糧液2020年年報中公司未來發(fā)展展望的部分時,如圖所示,可以觀察到與貴州茅臺年報的顯著差異。五糧液年報的相應(yīng)部分標題為“公司未來發(fā)展的展望”,而不是“公司關(guān)于公司未來發(fā)展的討論與分析”。這種差異意味著,如果繼續(xù)采用3.2.1節(jié)中介紹的方法進行內(nèi)容提取,將無法獲得預(yù)期的結(jié)果。3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液多個上市公式年報批量解析——以五糧液等公司為例:上市公司年報的非結(jié)構(gòu)化文本信息披露存在一定的差異性,這是由于年報的結(jié)構(gòu)化規(guī)范程度相對較低導(dǎo)致。盡管證監(jiān)會對上市公司的信息披露時間、方式以及必須披露的內(nèi)容已有較為規(guī)范和統(tǒng)一的規(guī)定,但在非數(shù)據(jù)信息,特別是非結(jié)構(gòu)化的文本信息的披露方式上,并沒有形成統(tǒng)一的標準。大多數(shù)公司雖然會披露相關(guān)內(nèi)容,但披露的具體方式和標題存在差異,這為解析工作帶來了挑戰(zhàn)。為了應(yīng)對這一挑戰(zhàn),可以采取增加匹配規(guī)則數(shù)量的策略,以此來提高匹配成功的概率。經(jīng)過細致的觀察和逐一比對,白酒行業(yè)中各公司在進行相應(yīng)信息披露時,其內(nèi)容的格式和位置可以歸納為四種組合方式,即兩種不同的起始方式與兩種不同的結(jié)束方式的組合。確定這些起始和結(jié)束方式后,利用正則表達式中的非貪婪匹配符(.*?),將它們連接起來,便能夠較為全面地涵蓋各種情況。最后將這些組合規(guī)則納入列表,以備后續(xù)使用。相應(yīng)的代碼如下:3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液多個上市公式年報批量解析——以五糧液等公司為例:3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液多個上市公式年報批量解析——以五糧液等公司為例:接下來利用os.listdir方法來檢索目標文件夾“白酒行業(yè)年報”中的所有文件,并對檢索結(jié)果進行遍歷。PDF文件名中包含的公司名稱信息,能夠通過去除文件擴展名后提取出來。完成解析后,將解析結(jié)果寫入以相應(yīng)公司名稱命名的文本文件中,以此確保輸出結(jié)果的整潔性和有序性。隨后,對PDF文件執(zhí)行解析操作,這一過程在前文中已有詳細說明(其中第13行可以根據(jù)需要選擇性地進行打印輸出,以便于調(diào)試和驗證解析結(jié)果),解析得到的文本內(nèi)容text_all將用于后續(xù)的正則表達式匹配。相應(yīng)的代碼如下:3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液多個上市公式年報批量解析——以五糧液等公司為例:在執(zhí)行正則表達式匹配的過程中,需逐一嘗試應(yīng)用之前創(chuàng)建的匹配規(guī)則列表。對每個規(guī)則正則表達式提取后,進行條件判斷:若提取結(jié)果為空(即返回結(jié)果的長度為零),則繼續(xù)應(yīng)用列表的下一個匹配規(guī)則;若結(jié)果非空,則認為已成功匹配到所需內(nèi)容,隨機退出循環(huán)。這種方法確保了在面對多樣化的文本信息披露格式時,能夠靈活地識別并提取目標數(shù)據(jù)。代碼如下:在解析過程中可能會遇到目錄重復(fù)的問題,類似于3.3.1節(jié)中所述情形,解決這一問題的相應(yīng)代碼如下。3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液多個上市公式年報批量解析——以五糧液等公司為例:最終,所有提取并保存的文件將被放在指定的文件夾內(nèi),如圖所示。3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能單份經(jīng)營報告表格解析——以新天綠能為例:上市公司的經(jīng)營數(shù)據(jù)對專業(yè)投資者而言通常具有較高的關(guān)注價值,因為相較于財務(wù)數(shù)據(jù),經(jīng)營數(shù)據(jù)更難于人為操縱,能夠提供財報之外的更多信息。以A股上市公司“新天綠能”為例,該公司每月都會公布上一個月的經(jīng)營數(shù)據(jù)。這些數(shù)據(jù)在巨潮資訊網(wǎng)及公司官網(wǎng)上以PDF格式發(fā)布。利用Python自動化解析這些PDF文件,并整理其經(jīng)營業(yè)務(wù)數(shù)據(jù),是一種高效的數(shù)據(jù)處理方式。圖3-15和圖3-16展示了該公司2021年1月份的經(jīng)營數(shù)據(jù)披露情況,其主要收入來源包括風(fēng)電、太陽能(光伏)和天然氣三大板塊。爬取這些數(shù)據(jù)并自動整理到Excel中,可以為進一步的分析和決策提供便利。3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能單份經(jīng)營報告表格解析——以新天綠能為例:3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能單份經(jīng)營報告表格解析——以新天綠能為例:按照以下逐步的方法,可以將經(jīng)營報告中的分散數(shù)據(jù)提取出來,并轉(zhuǎn)化為具有高可讀性的圖表。首先,需從經(jīng)營報告中提取所有表格(源代碼文件夾下給出了該PDF文件),并將這些數(shù)據(jù)輸出為一份Excel文件。此過程涉及的知識點在3.2.2節(jié)中有詳細說明。需使用pdfplumber庫打開PDF文件,并調(diào)用pages方法以獲取每一頁的內(nèi)容,代碼如下:3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能單份經(jīng)營報告表格解析——以新天綠能為例:在接下來的部分,將采用不同的方法,因為觀察到報告包含很多頁內(nèi)容,例如此處展示的兩頁。首要任務(wù)是將所有的表格匯總至單一列表中。具體操作為,首先創(chuàng)建一個空列表,隨后逐頁遍歷,利用extract_tables方法將解析得到的每個表格添加至結(jié)果列表。在3.2.3節(jié)中提及,pdfplumber解析得到的表格以列表形式呈現(xiàn),即一個表格由多個列表構(gòu)成。因此,當前的tables列表具有三層結(jié)構(gòu):第一層代表頁數(shù),第二層代表相應(yīng)頁的表格數(shù)量,第三層則為每個表格的具體內(nèi)容列表。例如,tables[1][0][1]表示第二頁第一個表格的第2行數(shù)據(jù)。然而,這種多層次結(jié)構(gòu)不利于生成統(tǒng)一格式的表格,故需要首先對列表內(nèi)容進行“攤平”處理。代碼如下:3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能單份經(jīng)營報告表格解析——以新天綠能為例:首先,創(chuàng)建一個列表以存儲解析結(jié)果。接下來,對于表格數(shù)據(jù)的三層結(jié)構(gòu),需要逐層進行遍歷。在達到第三層時,實際上是將每一行的內(nèi)容添加到結(jié)果列表中。這一過程的理解可能稍顯復(fù)雜,建議讀者在此步驟中密切觀察tables列表,以助于加深理解。代碼如下:接下來的步驟涉及將數(shù)據(jù)常規(guī)地轉(zhuǎn)換為DataFrame格式??紤]到轉(zhuǎn)換后得到的DataFrame可能會出現(xiàn)列名和行名未對齊的情況,因此需要進行進一步的調(diào)整以確保數(shù)據(jù)的準確性和可讀性,相應(yīng)代碼如下。為了更好地理解這一過程,建議讀者親自運行代碼直至該步驟,并觀察DataFramedf的結(jié)構(gòu)。3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能單份經(jīng)營報告表格解析——以新天綠能為例:最終,將DataFrame的內(nèi)容打印出來,如圖所示。3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能多份經(jīng)營報告表格批量解析:掌握單份報告的解析方法后,便能夠通過遍歷方法高效地批量解析多份報告中的表格。在這一過程中,關(guān)鍵在于結(jié)果的輸出方式。目標是將這些表格保存在同一文件中,作為不同的表格。如果對每份表格都單獨使用to_excel方法,可能會導(dǎo)致文件內(nèi)容被覆蓋,最終僅保留最后處理的表格,例如7月的數(shù)據(jù)。為避免這一問題,可以采用openpyxl庫提供的方法。值得一提的是,openpyxl是Python中用于處理Excel文件讀寫的一個高效工具,值得學(xué)習(xí)。在作者的其他著作中,將對openpyxl庫進行更深入的介紹。相應(yīng)的代碼如下:接下來開始遍歷,由于文件名具有高度相似性,只有3月和6月是季度性文件,僅需通過if語句塊進行簡單的區(qū)分。在處理過程中,可以參考3.4.1節(jié)中描述的單份報告解析過程,此處不再贅述。相應(yīng)的代碼如下:3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能多份經(jīng)營報告表格批量解析:在最終保存數(shù)據(jù)時,應(yīng)將每個月的數(shù)據(jù)寫入Excel文件的一個獨立工作表中,并以月份命名工作表。例如,使用writer.save()將數(shù)據(jù)寫入相應(yīng)的工作表,并保存Excel文件。代碼如下:3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能多份經(jīng)營報告表格批量解析:完成保存后,打開生成的Excel文件,如圖所示。3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能拼接整理多份表格:在提取并保存每個月的表格數(shù)據(jù)之后,下一步是將各個業(yè)務(wù)板塊的總和數(shù)據(jù)按時間序列進行整理和統(tǒng)計,以生成一張匯總表,這樣能夠清晰地展示公司每個月數(shù)據(jù)的變化趨勢。在進行這一步驟時,需注意使用openpyxl庫的load_workbook方法,以確保在最終保存過程中不會丟失之前得到的結(jié)果,相應(yīng)代碼如下。代碼的第6行應(yīng)首先初始化生成用于存放匯總結(jié)果的表格,為后續(xù)的數(shù)據(jù)整理和分析打下基礎(chǔ)。3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能拼接整理多份表格:在繼續(xù)處理數(shù)據(jù)的過程中,需要對每張表格進行逐一遍歷。由于在之前保存時已經(jīng)按照月份命名,因此可以方便地通過遍歷調(diào)取每張表格,代碼如下。從第3行至第6行,將對單個表格的索引進行規(guī)范化處理。這一步驟的必要性在于,后續(xù)操作需要利用索引進行精確定位,而直接讀取得到的索引可能存在左右空格,例如“風(fēng)電業(yè)務(wù)”。為此,首先初始化一個索引列表,然后遍歷現(xiàn)有的所有索引項,對每個索引項執(zhí)行strip操作以去除空格,并將處理后的索引項加入到索引列表。最終,重新定義表格的索引,以確保數(shù)據(jù)的準確性和一致性。3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能拼接整理多份表格:接下來在進行數(shù)據(jù)提取的過程中,需要特別關(guān)注3月和6月的數(shù)據(jù),因為這兩個月份提供的是季度總和值。因此,在計算這兩個月份的具體數(shù)值時,應(yīng)使用表格對應(yīng)位置的數(shù)值減去前兩個月的數(shù)值,以得到準確的月度數(shù)據(jù)。此外,3月和6月的數(shù)據(jù)提取還存在另一處特殊性。這兩個月份會額外包含一張上網(wǎng)電量表,該表位于發(fā)電量表和天然氣表之間。通過使用loc方法進行定位后,可能會發(fā)現(xiàn)存在兩行標記為“太陽能業(yè)務(wù)”的數(shù)據(jù)。在這種情況下,需要進一步使用iloc方法選取其中的第1行數(shù)據(jù),即代表了關(guān)注的發(fā)電量數(shù)據(jù)。相應(yīng)的代碼如下:3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能拼接整理多份表格:對于其他月份的數(shù)據(jù)提取,邏輯相對簡單。首先,利用loc方法根據(jù)索引名定位到相應(yīng)的行,然后按照列表的順序直接提取數(shù)據(jù)。在解析過程中,需要注意的是,此時解析得到的表中的數(shù)據(jù)通常以字符串形式存在。為了進行計算,必須將這些字符串轉(zhuǎn)換為浮點數(shù),這可以通過使用float方法實現(xiàn)。此外,天然氣數(shù)據(jù)的處理存在一些特殊性。觀察不同月份天然氣數(shù)據(jù)可以發(fā)現(xiàn),3月、6月和7月的數(shù)據(jù)位于第一列,而其他月份的數(shù)據(jù)則位于第二列。因此,在提取數(shù)據(jù)時,需要使用try...except...代碼塊進行異常處理。如果try代碼塊中的float轉(zhuǎn)換失?。ㄟ@通常發(fā)生在該位置無內(nèi)容而無法轉(zhuǎn)換為浮點數(shù)時),則執(zhí)行except代碼塊中的代碼。這種異常處理機制確保了數(shù)據(jù)處理的穩(wěn)健性,即使在數(shù)據(jù)格式存在差異的情況下,也能夠正確地提取所需信息。相應(yīng)的代碼如下:3.4PDF表格數(shù)據(jù)解析實戰(zhàn)——新天綠能拼接整理多份表格:接下來需要計算風(fēng)電和太陽能的總發(fā)電量。由于之前已經(jīng)將數(shù)據(jù)轉(zhuǎn)換為浮點數(shù),因此在計算過程中無需再次進行轉(zhuǎn)換,代碼如下:在遍歷并處理完所有單個表格后,使用writer.save()方法保存Excel文件,代碼如下:再次打開保存后的Excel文件,可以發(fā)現(xiàn)在原有的按月份統(tǒng)計的單個工作表之后,新增了一個按業(yè)務(wù)和月份排序的匯總工作表,如圖所示。通過這個匯總表,可以清晰地觀察到各項業(yè)務(wù)數(shù)據(jù)隨時間的變化趨勢。3.5文檔主題可視化技術(shù)中文大數(shù)據(jù)分詞技巧:jieba庫的安裝在進行文本大數(shù)據(jù)分詞之前,必須先安裝中文分詞庫——jieba庫。該庫可以通過pip安裝法進行安裝。以Windows系統(tǒng)為例,用戶可以通過按下“Win+R”快捷鍵來調(diào)出運行框,輸入“cmd”并回車,在隨后彈出的命令行窗口中輸入命令“pipinstalljieba”來完成安裝。若遇到安裝失敗的情況,可以嘗試使用清華鏡像的pip安裝方法。安裝完成后,即可使用jieba庫進行文本的分詞操作。首先需要導(dǎo)入jieba庫,這通常通過一行代碼實現(xiàn)。緊接著,使用jieba庫中的cut()函數(shù)對指定的文本內(nèi)容進行分詞處理,并將分詞結(jié)果存儲于變量word中。隨后,通過for循環(huán)遍歷word中的分詞結(jié)果,并將其打印輸出。代碼如下:打印輸出的分詞結(jié)果如下所示:3.5文檔主題可視化技術(shù)中文大數(shù)據(jù)分詞技巧:讀取文本內(nèi)容,并進行分詞圖3-20展示了2017年的信托行業(yè)年度報告,該報告大約包含20萬字。對于業(yè)務(wù)分析人員而言,關(guān)注點往往在于這20萬字中哪些內(nèi)容更為重要。一種簡單的方法是識別出現(xiàn)頻率最高的詞匯,因此這些詞匯所對應(yīng)的內(nèi)容可能具有更高的關(guān)注度和重要性。實現(xiàn)這一功能,需要先對文本進行中文分詞,隨后進行詞頻統(tǒng)計。以下代碼示例展示了如何對一個文本文件進行分詞:3.5文檔主題可視化技術(shù)中文大數(shù)據(jù)分詞技巧:讀取文本內(nèi)容,并進行分詞需要注意的是,cut()函數(shù)返回的words不是一個列表,而是一個迭代器。迭代器與列表在功能上相似,但可以被視為一種“隱身的列表”。由于迭代器的特性,不能直接通過print(words)來輸出其內(nèi)容,而應(yīng)該使用for循環(huán)來遍歷迭代器中的元素,如下所示:此時的結(jié)果如圖3-21所示。3.5文檔主題可視化技術(shù)中文大數(shù)據(jù)分詞技巧:提取分詞后的四字詞以提取大于或等于四個字的詞匯為例說明如何按特定的要求獲取詞匯,代碼如下:首先,創(chuàng)建一個名為report_words的列表。隨后,遍歷words中的每個元素,若元素的詞匯長度達到或超過四個字,則將其添加到report_words列表中。完成篩選后,將該列表中的詞匯打印輸出,其結(jié)果如圖所示。3.5文檔主題可視化技術(shù)詞頻統(tǒng)計技巧:統(tǒng)計高頻詞匯的詞頻是一個相對直接的過程,可以通過使用collections模塊中的Counter類來實現(xiàn),代碼如下:執(zhí)行上述代碼將打印輸出report_words列表中每個詞匯的頻次。若需要查看出現(xiàn)頻次最多的前50名詞匯,可以使用Counter對象的most_common()函數(shù)來獲取高頻詞及其出現(xiàn)次數(shù),代碼如下:下圖展示了將result打印出來的運行效果。3.5文檔主題可視化技術(shù)詞云圖繪制:詞云圖初步繪制在繪制詞云圖之前,首先需要引入相關(guān)的庫,代碼如下:引入相關(guān)庫后,可以通過如下代碼繪制詞云圖:3.5文檔主題可視化技術(shù)詞云圖繪制:詞云圖初步繪制3.5文檔主題可視化技術(shù)詞云圖繪制:繪制特定形狀的詞云圖當前展示的詞云圖在美觀度上尚有提升空間。接下來將介紹生成具有特定形狀的詞云圖的方法,首先介紹所需相關(guān)庫的引入,相應(yīng)的代碼如下:引入所需庫之后,即可開始繪制具有指定形狀的詞云圖,代碼如下:3.5文檔主題可視化技術(shù)詞云圖繪制:繪制特定形狀的詞云圖生成的最終結(jié)果如圖所示。此時,已形成微博logo的輪廓,但顏色尚未進行自定義設(shè)置,仍保持默認顏色。3.5文檔主題可視化技術(shù)詞云圖繪制:繪制具有特定形狀和顏色的詞云圖本節(jié)將介紹在生成特定形狀的基礎(chǔ)上,如何進一步為詞云圖添加特定顏色。首先,需要引入必要的庫,代碼如下:完成庫的引入后,即可開始繪制具有指定顏色的詞云圖。在之前的代碼基礎(chǔ)上,添加以下代碼段:3.5文檔主題可視化技術(shù)詞云圖繪制:繪制具有特定形狀和顏色的詞云圖最終生成的詞云圖如圖所示,此時詞云圖不僅具有特定的形狀,還融入了微博logo的標致性顏色。3.5文檔主題可視化技術(shù)補充知識點:詞性標注:詞性(part-of-speech)是詞匯基本的語法范疇,亦稱為詞類,其主要功能在于描述一個詞在具體語境中的語法作用。例如,用來指稱一個概念的詞通常為名詞,而用來指代前文提到的名詞的詞則為代詞。由于一個詞可能對應(yīng)多種詞性,因此準確地為每個詞標注詞性是一項具有挑戰(zhàn)性的任務(wù)。例如,在句子“中國開始對計劃經(jīng)濟體制進行改革”中,“改革”作為動詞使用,而在“醫(yī)藥衛(wèi)生改革中的經(jīng)濟問題”中則作為名詞使用。將此問題抽象化,即在已知單詞序列的基礎(chǔ)上,為每個單詞標注相應(yīng)的詞性。詞性標注是自然語言處理領(lǐng)域中的一項基礎(chǔ)且重要的工作。jieba庫提供了詞性標注功能,可以直接調(diào)用。以下代碼是一個示例:3.5文檔主題可視化技術(shù)補充知識點:詞性標注:Jieba分詞的詞性代碼及其對應(yīng)的名稱和幫助記憶的詮釋如表所示。3.5文檔主題可視化技術(shù)補充知識點:詞性標注:此外,該結(jié)果本身是一個結(jié)構(gòu)化的迭代器,該迭代器(記為seg)包含兩個鍵:word(詞)和flag(詞性)。可以采用如下代碼進一步進行規(guī)整處理,并將結(jié)果分列保存到df中。3.5文檔主題可視化技術(shù)補充知識點:詞性標注:為了進一步演示,可以將文本替換為先前的信托行業(yè)報告,以觀察其中的名詞使用情況,代碼如下:3.5文檔主題可視化技術(shù)補充知識點:詞性標注:結(jié)果如圖所示。3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺單個上市公司風(fēng)險段詞云圖繪制——以貴州茅臺為例:本小節(jié)以貴州茅臺2019年年報的風(fēng)險提示段為例,詳細說明如何繪制單個上市公司的詞云圖。首先,打開相應(yīng)文件夾中的文件,利用jieba進行分詞處理。該文件夾已在源代碼文件中提供,讀者可以直接使用。代碼如下:3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺單個上市公司風(fēng)險段詞云圖繪制——以貴州茅臺為例:第二步,篩選特定長度的詞語。由于風(fēng)險提示段本身較短,若設(shè)置的詞語長度過長,可能導(dǎo)致最終結(jié)果數(shù)量有限。因此,除了單字詞外,其他詞語均納入考慮范圍。代碼如下:隨后,開始繪制詞云圖。首先設(shè)置詞云圖的形狀,相關(guān)企業(yè)logo圖片已在文件夾中提供,例如貴州茅臺的的logo。接著,使用上文介紹的image.open方法打開該圖片,并將其轉(zhuǎn)換為數(shù)組形式的圖片遮罩層。代碼如下:3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺單個上市公司風(fēng)險段詞云圖繪制——以貴州茅臺為例:接下來,將分詞結(jié)果按空格連接,設(shè)置詞云圖的各項參數(shù),代碼如下:為了體現(xiàn)出詞云圖背景的顏色,需要讀取預(yù)先設(shè)置好路徑的圖片,并獲取其顏色信息,然后重新為詞云圖設(shè)置顏色,代碼如下:最后,進行保存操作,代碼如下:3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺單個上市公司風(fēng)險段詞云圖繪制——以貴州茅臺為例:繪制完成的詞云圖如圖所示。3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺批量繪制多個公司詞云圖:本節(jié)將探討如何批量生成多個上市公司風(fēng)險段文本的詞云圖。實現(xiàn)此功能的主要技術(shù)難點在于合理應(yīng)用os模塊和for循環(huán)。在開始遍歷文件之前,應(yīng)先創(chuàng)建一個用于存放詞云圖結(jié)果的文件夾。隨后,利用os模塊的listdir方法來獲取風(fēng)險段文件夾下所有文件的名稱。代碼如下:遍歷文件的代碼如下:3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺批量繪制多個公司詞云圖:3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺批量繪制多個公司詞云圖:運行上述代碼后,詞云圖結(jié)果文件夾的內(nèi)容如圖所示。by劉云菁&張敏&王宇韜第四章Python在財務(wù)圖像識別和電子郵件處理自動化領(lǐng)域的應(yīng)用目錄014.1Python在財務(wù)圖像識別和電子郵件處理自動化領(lǐng)域的應(yīng)用介紹020403第四章Python在財務(wù)圖像識別和電子郵件處理自動化領(lǐng)域的應(yīng)用4.2PDF格式銀行回單的自動識別4.3回單內(nèi)容提取4.4電子郵件處理自動化4.1Python在財務(wù)圖像識別和電子郵件處理自動化領(lǐng)域的應(yīng)用Python在財務(wù)圖像識別和電子郵件處理自動化領(lǐng)域的應(yīng)用:財務(wù)圖像識別自動化應(yīng)用:發(fā)票處理自動化;銀行交易回執(zhí)解析;差旅報銷流程優(yōu)化電子郵件處理自動化應(yīng)用:合同協(xié)議管理;會議安排通知;簡歷篩選與分類;客戶服務(wù)郵件回復(fù)4.2PDF格式銀行回單的自動識別電子回單是網(wǎng)上銀行客戶進行匯款、繳費、B2C等交易后生成的電子化交易憑證,用以記錄交易的詳細信息。這種回單通常包含交易金額、日期、參與交易的賬號號碼等關(guān)鍵信息。鑒于電子回單的格式具有一致性,可以高效地將其進行批量處理,如單據(jù)分割、關(guān)鍵信息提取和數(shù)據(jù)導(dǎo)出等。在實際應(yīng)用中,銀行回單的PDF版本往往在一張A4大小的頁面上展示兩張回單信息(如圖所示)。在解析回單內(nèi)容的過程中,首先應(yīng)將PDF頁面轉(zhuǎn)換為圖像。隨后,根據(jù)回單的展示區(qū)域?qū)D像進行分割,以獲取單獨的回單圖像。以下是詳細的操作流程說明。4.2PDF格式銀行回單的自動識別PDF轉(zhuǎn)圖片PDF文件的導(dǎo)入。進行PDF格式的轉(zhuǎn)換的首要步驟是將PDF文件導(dǎo)入Python。該步驟代碼如下:4.2PDF格式銀行回單的自動識別PDF轉(zhuǎn)圖片PDF轉(zhuǎn)化為圖片。導(dǎo)入PDF文件至Python之后,接下來進行的操作是對文件中的每一頁內(nèi)容進行遍歷,并將頁面內(nèi)容轉(zhuǎn)換為圖片格式。該步驟完整代碼如下:4.2PDF格式銀行回單的自動識別圖片切割圖片導(dǎo)入。使用Python中的PIL庫(PythonImagingLibrary)來打開圖片文件。代碼如下:查看圖片大小。導(dǎo)入圖片之后,下一步是檢查圖片的尺寸,以確定圖片切割的具體位置。通過調(diào)用size函數(shù),可以獲取圖片的尺寸信息。代碼如下:輸出的結(jié)果示例為:4.2PDF格式銀行回單的自動識別圖片切割圖片切割。接下來介紹圖片切割的過程,以下是相關(guān)代碼:4.2PDF格式銀行回單的自動識別圖片切割圖片切割。最終的切割結(jié)果如圖所示。4.2PDF格式銀行回單的自動識別案例實戰(zhàn)根據(jù)前兩節(jié)所介紹的知識點,可以構(gòu)建一個通用的PDF轉(zhuǎn)換成圖像的函數(shù),以實現(xiàn)批量處理和代碼的可復(fù)用性。具體代碼如下:4.2PDF格式銀行回單的自動識別案例實戰(zhàn)接下來,通過使用for循環(huán)對cut函數(shù)進行迭代調(diào)用,對文檔doc中的所有回單圖片執(zhí)行切割操作。代碼如下:PDF文件轉(zhuǎn)換圖片后的縮略圖如圖所示。4.3回單內(nèi)容提取在完成第4.2節(jié)所述的將銀行回單PDF文件轉(zhuǎn)換為圖像之后,接下來的步驟是利用圖像文字識別技術(shù)(OCR)來進一步提取圖像中的信息,以實現(xiàn)銀行回單處理的完整流程。OCR技術(shù),即光學(xué)字符識別(OpticalCharacterRecognition),是一種通過掃描等光學(xué)輸入手段將票據(jù)、報刊、書籍、文稿以及其他印刷品上的文字轉(zhuǎn)換為圖像信息,隨后使用文字識別技術(shù)將這些圖像信息轉(zhuǎn)換成計算機可識別和使用的輸入數(shù)據(jù)的技術(shù)。OCR技術(shù)廣泛應(yīng)用于銀行票據(jù)處理、大量文字資料的錄入、檔案卷宗的數(shù)字化以及文案的處理等領(lǐng)域。在本案例中,將采用百度的OCR接口來提取銀行回單中的信息。4.3回單內(nèi)容提取Python圖片文字識別(OCR)注冊:在利用百度的OCR接口之前,需先在官方網(wǎng)站進行注冊。以下是注冊和獲取接口使用權(quán)限的步驟:(1)訪問百度文字識別官方網(wǎng)站[百度AI開放平臺-OCR](/tech/ocr),并點擊“立即使用”按鈕,如圖所示。4.3回單內(nèi)容提取Python圖片文字識別(OCR)注冊:在利用百度的OCR接口之前,需先在官方網(wǎng)站進行注冊。以下是注冊和獲取接口使用權(quán)限的步驟:(2)點擊“立即使用”后,將彈出登錄頁面。若尚未擁有百度賬號,用戶需先進行注冊,隨后登錄。(3)登錄百度賬號后,進入百度文字識別平臺,如圖所示。此時,應(yīng)點擊頁面上的“創(chuàng)建應(yīng)用”按鈕。4.3回單內(nèi)容提取Python圖片文字識別(OCR)注冊:在利用百度的OCR接口之前,需先在官方網(wǎng)站進行注冊。以下是注冊和獲取接口使用權(quán)限的步驟:(4)在第(3)步點擊“創(chuàng)建應(yīng)用”后,將進入應(yīng)用創(chuàng)建界面(見圖)。在此界面,用戶需填寫自定義的應(yīng)用名稱,選擇應(yīng)用類型,并填寫所需的其他信息。填寫完畢后,點擊頁面底部的“立即創(chuàng)建”按鈕。4.3回單內(nèi)容提取Python圖片文字識別(OCR)注冊:在利用百度的OCR接口之前,需先在官方網(wǎng)站進行注冊。以下是注冊和獲取接口使用權(quán)限的步驟:(5)點擊左側(cè)邊欄的“概覽”選項,用戶可以在“我的應(yīng)用”欄目中看到“公有云1個”,隨后點擊該選項,見圖。4.3回單內(nèi)容提取Python圖片文字識別(OCR)注冊:在利用百度的OCR接口之前,需先在官方網(wǎng)站進行注冊。以下是注冊和獲取接口使用權(quán)限的步驟:此時,用戶將能看到剛剛創(chuàng)建的應(yīng)用的AppID、APIKey以及SecretKey等參數(shù),見圖。這些參數(shù)在調(diào)用文字識別API時必須填入。4.3回單內(nèi)容提取Python圖片文字識別(OCR)Python接口調(diào)用:Python接口調(diào)用的具體步驟如下:(1)安裝baidu-aip庫。在通過Python調(diào)用圖像識別接口之前,必須首先安裝baidu-aip庫。該庫可以通過pip命令進行下載,具體命令為pipinstallbaidu-aip。(2)調(diào)用接口進行圖像識別。通過以下代碼示例,可以調(diào)用百度OCR接口實現(xiàn)圖像識別功能。4.3回單內(nèi)容提取Python圖片文字識別(OCR)Python接口調(diào)用:Python接口調(diào)用的具體步驟如下:(3)解析結(jié)果以提取字符串。調(diào)用圖像識別接口后,返回的結(jié)果變量result是一個字典(dict)類型。其中,words_result鍵對應(yīng)的值是一個列表類型的變量,而列表中的每個元素本身也是一個字典類型的變量,其中的words鍵對應(yīng)值即為識別出的文字。相應(yīng)的代碼如下:為了展示圖片文字識別的效果,此處使用如圖所示的一首詩的圖片作為示例。通過此示例,讀者可以觀察到圖像文字識別技術(shù)在實際應(yīng)用中的表現(xiàn)。4.3回單內(nèi)容提取Python圖片文字識別(OCR)Python接口調(diào)用:Python接口調(diào)用的具體步驟如下:(3)運行結(jié)果如下:4.3回單內(nèi)容提取調(diào)用百度OCR接口識別回單在學(xué)習(xí)了百度OCR接口的使用方法之后,進入銀行回單識別的實踐階段。按照以下代碼示例,用戶需填入自己的APP_ID、API_KEY和SECRET_KEY。百度OCR提供了一定量的免費調(diào)用額度,供學(xué)習(xí)和測試使用。初始化設(shè)置定義用于打開文件的函數(shù)及其參數(shù)變量,代碼如下:4.3回單內(nèi)容提取調(diào)用百度OCR接口識別回單初始化設(shè)置提取所有待信息提取的圖片文件名稱,代碼如下:創(chuàng)建一個空白的DataFrame,并根據(jù)信息記錄自定義列標簽,隨后將表格寫入Excel文件。代碼如下:使用openpyxl模塊處理Excel文件。通過op.load_workbook函數(shù)打開指定的工作簿wb,并通過wb['工作表名稱']引用工作簿中的特定工作表。代碼如下:4.3回單內(nèi)容提取調(diào)用百度OCR接口識別回單提取圖片內(nèi)的文本信息并導(dǎo)入Excel對回單文件列表中的所有圖片進行遍歷,使用百度OCR技術(shù)識別圖片中的文字,并提取相應(yīng)的文本內(nèi)容。代碼如下:4.3回單內(nèi)容提取調(diào)用百度OCR接口識別回單提取圖片內(nèi)的文本信息并導(dǎo)入Excel最終生成的結(jié)果如圖所示,已成功識別并獲取了電子回單的號碼與金額。4.4電子郵件處理自動化QQ郵箱郵件自動化本節(jié)將介紹如何利用騰訊QQ郵箱發(fā)送郵件。該過程涉及的代碼結(jié)構(gòu)相對簡單,代碼如下:4.4電子郵件處理自動化QQ郵箱郵件自動化執(zhí)行上述步驟后,運行結(jié)果將如圖所示。4.4電子郵件處理自動化QQ郵箱郵件自動化在實際應(yīng)用中,需要調(diào)整發(fā)件人信息、SMTP服務(wù)授權(quán)、收件人信息以及郵件正文和主題。特別指出,上述代碼中第4行提到的SMTP授權(quán)碼并非QQ郵箱的登錄密碼,而是自動化郵件發(fā)送程序所需的特定授權(quán)碼。本部

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論