版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章Python基礎快速入門目錄011.1Python安裝與第一個Python程序020403第一講Python基礎快速入門1.2Python基礎知識1.3Python語句1.4函數與模塊1.1Python安裝與第一個Python程序Python是Anaconda的一個發(fā)新版本,安裝好了Anaconda就相當于安裝好了Python。Anaconda的官網下載地址/download/
(隨著版本更新,該網址可能會有變化,但是通過該網址都可以訪問到下載地址)或者直接網頁搜索Anaconda,進入官網(),選擇下載即可。我們這邊選擇Python3.7版本,它默認是64位的電腦,如果你的電腦很舊,那可能是32位的,選擇32位的即可,如果是Mac或者Linux選擇相對應的版本即可。安裝到下圖這一步的時候,一定要把第一個勾給勾選上,因為這個對于初學者來說,就相當于自動配置好了環(huán)境變量,不然還得麻煩手動配置。然后一直點Next,下面這一步是否安裝額外內容選擇skip即可。其他一直選擇Next即可,最后點擊Finish,那Python就安裝完成啦。Spyder打開方法如下:電腦左下角打開Anaconda,點擊Spyder即可。Spyder顯示如下界面:其中左邊紅色框是寫代碼的地方右邊紅色框則是輸出代碼結果的地方上方的綠色的箭頭則是運行代碼的標志下面就讓我們來寫第一個Python程序吧,在左邊輸入代碼的地方,在英文模式下輸入:print(‘helloworld’)然后點擊上方綠色的運行按鈕,在Spyder里,也可以按F5來運行程序。注意:輸入時候必須切換到英文模式,其中單引號,雙引號在Python中沒有區(qū)別。補充:編譯器Pycharm安裝(推薦安裝)我們之后的教學大多都是使用Pycharm來進行講解,Pycharm和Spyder的功能是大致相同的。如果不想安裝Pycharm,可以跳過這一步。注意:第一次運行Pycharm的時候Index緩沖的時間較長,以后就好多了。到官網:/pycharm/download/#section=windows
下載PyCharm安裝包,我們選擇免費版(Community)就完全夠用了。下載完后,雙擊就可以安裝了,安裝過程中,一直選擇Next和Install即可,其中這一頁選擇下面兩項即可。之后一直點擊Next一直到最后的Finish(結束)出現(xiàn)之后點擊Finish即可。按完Finish之后的第一步:這個勾選“Donotimportsettings“第二步:選擇頁面風格,建議選擇默認的黑色風格。第三步:選擇輔助工具,直接跳過,啥也不需要選。第四步:點擊“CreateNewProject”創(chuàng)建Python文件。第五步:文件進行命名,這一步千萬記得點開ProjectInterpreter,勾選Existinginterpreter。然后點擊最右邊的,如下圖:在彈出的頁面中選擇SystemInterpreter,
可以看到Interpreter變成了Anaconda3\Python.exe,選擇OK?;氐巾椖縿?chuàng)建頁面后,點擊Create即可創(chuàng)建新的PythonProject。第六步:關閉官方小技巧提示,等待最下面的Index緩沖完畢,它緩沖的過程其實是在配置你Python的運行環(huán)境。等到最下面的那個Index已經緩沖完畢后,我們可以進行下一步。第七步:創(chuàng)建Python文件,如下圖,點擊之前創(chuàng)建的項目文件夾,然后右鍵,點擊New,選擇PythonFile。將新的Python文件命名為helloworld。你之后如果要新建文件的話,可以在File里面選擇NewProject,如下圖所示:然后重復上訴步驟,注意在選ProjectInterpreter的時候勾選Existinginterpreter。第八步:在英文模式下輸入print(‘helloworld’)
其中單引號雙引號沒有區(qū)別(和Spyder一樣)我們在上或者代碼輸入框內右擊,選擇Run‘helloworld’。你也可以通過點擊界面右上角的綠色運行按鈕
,運行程序,或者按住快捷鍵Ctrl+
Shift+F10也可以運行程序。改變字的大?。哼x擇Settings中的Editor,選擇Font,如下圖所示,在右邊的Size里可以調節(jié)顯示字體的大小以及行間距。大家先點擊File,選擇下圖的Settings。目錄011.2.1變量、行、縮進與注釋0204031.2.2數據類型:數字與字符串1.2.3列表與字典1.2.4運算符介紹與實踐1.2Python基礎知識1.2.1變量、行、縮進與注釋(1)變量關于變量的命名,大家盡量用字母a,b,c,a_1,b_1等,或者自己創(chuàng)建的字符,不要用系統(tǒng)自帶的函數來命名,比如說不要用print來命名,寫成print=1,這樣程序就會頭疼了。1.2.1變量、行、縮進與注釋
如果我們不打出print(x)和print(y),python只會保存x和y的結果,并不會顯示結果輸入下面的程序:運行的結果:1.2.1變量、行、縮進與注釋(2)行在Python中,一般來說,很少用逗號或者分號,代碼都是一行一行寫的,所以每寫完一句,在句尾,我們按一下Enter鍵,就可以進行換行。1.2.1變量、行、縮進與注釋(3)縮進(縮進快捷鍵是Tab鍵)在if,for,while等語句中都會使用到縮進代碼的輸入法和中文翻譯:在第3行和第5行的print前面就必須要有縮進,否則Python會報錯注意:如果你要減少縮進,那么按住Shift+Tab鍵的話就可以撤銷原來的縮進,你可以選擇一片區(qū)域,按住Tab鍵進行縮進練習,再按住Shift+Tab鍵撤銷原來的縮進1.2.1變量、行、縮進與注釋(4)注釋Python回不運動你的注釋,注釋在程序中大多是做個提示的作用。注釋有兩個方式:你可以輸入#或者‘’‘,或者在Pycharm中,注釋的快捷鍵是Ctrl+/;在Spyder中,注釋的快捷鍵為Ctrl+1。1.2.2數據類型:數字與字符串(1)數字int()與字符串str()使用單或雙引號中寫出的數字回事被認為字符串;單寫的數字會被認為數字我們可以使用type()做個示范:注意:不同的數據類型是不能相互運算的,比如不可以寫:Python會報錯的,不同數據類型不能相互運算。彈出結果:1.2.2數據類型:數字與字符串(1)數字int()與字符串str()我們可以使用int()把字符串變成數字,或使用str()把數字變成字符串。彈出結果:彈出結果:1.2.3列表和字典(1)列表list()列表里的元素可以是字符串,也可以是數字,甚至可以是另外一個列表:1.2.3列表和字典(1)列表list()彈出結果:1.2.3列表和字典(a)統(tǒng)計列表的元素個數的函數:len()彈出結果:1.2.3列表和字典(a)統(tǒng)計列表的元素個數的函數:len()彈出結果:1.2.3列表和字典(b)調取一個列表元素的方法只要在列表之后加一個[序號],注意到元素序號是從0開始算起:彈出結果:1.2.3列表和字典(c)選取多個列表元素的方法方法是和(b)一樣的,只要在列表之后加一個[序號1:序號2],這樣的選法會包括序號1,但不會包括序號2:彈出結果:彈出的結果是class1元素[1,2,3]1.2.3列表和字典(d)列表增加元素的辦法:列表.append()代碼的第一行是創(chuàng)造一個空的列表,第二—四行是把數碼加入選好的列表彈出結果:1.2.3列表和字典(e)列表與字符串之間的轉換方法:彈出結果:如果想把列表里的元素變成一個元素可以使用”,”.join()注意:雙引號里面可以使用空格“”也可以使用別的符號比如“;”1.2.3列表和字典(e)列表與字符串之間的轉換方法:彈出結果:如果想把列表里的字符串分開可以使:列表.split(“”)注意:雙引號里面可以使用別的符號
“;”或“,”來分字符串1.2.3列表和字典(2)字典在字典中,每個元素都有兩部分(區(qū)別于列表中一個元素只有一個部分),前一個部分,我們稱之為鍵,后一個部分我們稱其為值,中間用冒號相連。1.2.3列表和字典(2)字典使用鍵來獲取值:彈出結果:951.2.3列表和字典(2)字典使用for來獲字典里的全部取值:彈出結果:注意:這是必須要使str(class(i))如果使class(i)會出問題的1.2.3列表和字典(2)字典使用for來獲字典里的全部取值:彈出結果:注意:這是必須要使str(class(i))如果使class(i)會出問題的1.2.4運算符介紹與實踐
字符串的拼接:彈出結果:1.2.4運算符介紹與實踐(2)比較運算符(<,>,==):例子:彈出結果:1.2.4運算符介紹與實踐(3)邏輯運算符(<,>,==):例子:彈出結果:1.2.4運算符介紹與實踐目錄011.3.1if,elif,else02031.3.2for1.3.3while1.3Python語句(1.3.1)的例子:例子:彈出結果:及格因為85>=601.3.1If語句詳解與實踐(1.3.1)的例子:例子:彈出結果:不及格,因為:80>=55也小于601.3.1If語句詳解與實踐(1.2.4)的例子:例子:彈出結果:1.3.1If語句詳解與實踐(1.2.4)的例子:例子:彈出結果:1.3.1If語句詳解與實踐例子:彈出結果:1.3.2For語句詳解與實踐例子:彈出結果:1.3.3While語句詳解與實踐目錄011.4.1函數的定義與調用0204031.4.2函數參數、返回值與作用域1.4.3一些基本函數的介紹1.4.4Python模塊1.4函數與模塊1.4.1函數的定義與調用上面的函數Python代碼寫法是左邊的例子第一行和第二行。第三行的意思是讓x=1彈出的結果回是:x+1=(1)+1=2例子:彈出結果:1.4.1For語句詳解與實踐例子:彈出結果改不了,因為沒有辦法改變x的價值:1.4.1For語句詳解與實踐例子:1.4.2函數參數、返回值與作用域(1)參數再研究大家要注意到雖然company和companys對不上,但是還會彈出結果,因為在def()里company代表函數。彈出結果:1.4.2函數參數、返回值與作用域(1)參數再研究彈出結果:1.4.2函數參數、返回值與作用域(2)返回值,return()例子:彈出結果:1.4.2函數參數、返回值與作用域(3)變量作用域例子:和剛才的返回值不一樣,Y(X)用完以后,x會回到原來的價值1.4.3一些基本函數的介紹(3)len()函數Length的縮寫是len():意思是長度。主要功能是統(tǒng)計列表元素個數地下給大家做了一個示范:1.4.3一些基本函數的介紹(3)len()函數Length的縮寫是len():意思是長度。主要功能是統(tǒng)計列表元素個數地下給大家做了一個示范:1.4.3一些基本函數的介紹(3)len()函數Length的縮寫是len():意思是長度。主要功能是統(tǒng)計列表元素個數地下給大家做了一個示范:1.4.3一些基本函數的介紹(3)len()函數Length的縮寫是len():意思是長度主要功能是統(tǒng)計列表元素個數低下給大家做了一個示范:1.4.3一些基本函數的介紹(4)replace()函數Replace:意思是代替主要功能是替換你想替換的內容低下給大家做了一個示范:彈出的結果:1.4.3一些基本函數的介紹(5)strip()函數Replace:意思是剝去一層刪除空白符(包括'換行符\n'和空字符串'')低下給大家做了一個示范:彈出的結果:1.4.3一些基本函數的介紹(6)split()函數Replace:意思是分開分割字符串低下給大家做了一個示范:彈出的結果:使用空格來分開字串[0]是分開的前半部分[1]是分開的后半部分1.4.3一些基本函數的介紹(7)try/except函數Replace:意思是試用/除了避免程序因為哪一步程序出了錯而整個程序終止低下給大家做了一個示范:彈出的結果:1.4.4Python模塊模塊/作庫:是Python這些年發(fā)展如此迅猛的一個原因有的庫是Python自帶的,有的庫則需要我們進行下載才可以使用。引用庫的方法一般如下:1.4.4Python模塊模塊/作庫:可以使用的代碼:彈出結果:第二章AI大模型快速入門與案例實操目錄012.1AI大模型概述020403第二章AI大模型快速入門與案例實操2.2快速上手:AI大模型使用方式2.3高效使用AI大模型的提示詞技巧2.4AI大模型在財務場景中的典型應用052.5AI大模型輔助Python代碼編寫2.1AI大模型概述主流AI大模型介紹:DeepSeek:由杭州深度求索人工智能基礎技術研究有限公司開發(fā)。
官網鏈接為/豆包:字節(jié)跳動公司推出的一款多功能人工智能工具。官網鏈接為/Kimi:在人工智能大模型領域占據著重要地位。官網鏈接為/騰訊元寶:在智能交互及數據處理方面獨具優(yōu)勢。官網鏈接為。通義:是阿里云推出的一款大模型,擁有720億參數。官網鏈接為/2.1AI大模型概述AI大模型核心功能:文本生成與處理數據提取與分析智能問答與決策輔助流程自動化大規(guī)模數據處理能力輔助投資2.1AI大模型概述AI大模型在財務自動化中的實踐應用:財務數據處理財務風險評估財務決策支持2.2快速上手:AI大模型使用方式AI大模型使用注意點:應提供準確、清晰的提示詞,以獲得更好的結果??筛鶕敵鼋Y果調整提示詞結構,例如增加“限制條件”或“輸出示例”。對于信息提煉類任務,一般不要打開“深度思考”選項,以提高總結效率。同時,如果需要上傳文件,請關閉“聯(lián)網搜索”功能。要合理利用模型的能力,避免提出過于復雜或模糊的問題。對于敏感或重要的信息,應注意保護數據的安全和隱私。2.2快速上手:AI大模型使用方式AI大模型的使用方式:官網直接體驗:用戶能夠訪問官網或者下載官方應用程序,在完成注冊流程之后,即可利用對話框輸入相應的提示詞來與AI進行交互,支持各類文件上傳(如PDF/Excel)和實時交互。例如,DeepSeek界面如圖。2.2快速上手:AI大模型使用方式AI大模型的使用方式:第三方平臺接入。以騰訊元寶平臺(/)為例,用戶可以通過此平臺調用DeepSeek服務,其能夠支持持續(xù)對話以及復雜任務處理。具體操作界面如圖。2.3高效使用AI大模型的提示詞技巧提示詞的重要性:良好的提示詞設計可以確保AI大模型準確理解用戶的具體需求,從而提高輸出結果的質量和相關性,同時減少溝通成本,提升交互效率。以下兩個例子可以清晰地說明良好提示詞設計的重要性。2.3高效使用AI大模型的提示詞技巧提示詞的重要性:實際操作過程中,用通俗易懂的語言說清楚需求也完全足夠使用,示例代碼如下。2.3高效使用AI大模型的提示詞技巧結構化提示詞:Bro法則背景(Background):說明任務的前提條件(如“現(xiàn)有2023年審計報告PDF”“需處理100張發(fā)票圖片”)。明確背景信息有助于模型更好地理解問題的上下文。角色(Role):指定AI大模型的定位(如“財務數據分析師”“稅務合規(guī)專家”)。指定角色可以讓模型從特定的角度來思考和回答問題。目標(Objective):明確具體需求(如“提取凈利潤增長率”“生成可視化圖表”“檢查發(fā)票稅率合規(guī)性”)。清晰的目標則是引導模型生成符合用戶期望的結果。2.3高效使用AI大模型的提示詞技巧標點符號:井號(#):井號用于創(chuàng)建標題,定義任務層級。#表示一級標題,##表示二級標題,以此類推。單引號('')或雙引號(""):在提示詞中,它們用于強調關鍵詞或短語。三引號('''):用于表示長文文本,可以帶換行,避免指令混淆。2.3高效使用AI大模型的提示詞技巧標點符號:星號(*)或下劃線(_):用于強調文本,即斜體或粗體。連字符(-):用于創(chuàng)建列表。表格格式:通過表格的形式,可以直觀地將不同類別的數據及其對應關系呈現(xiàn)出來。分隔符:用于分隔指令和正文,可通過“Shift+Enter”或者“Alt+Enter”組合鍵實現(xiàn)文本換行。2.3高效使用AI大模型的提示詞技巧以下為完整的代碼示例:使用標點或者快捷鍵進行特殊內容輸入和處理(以網址為例):將網址用單引號或雙引號括起來,可以明確地指示這是一個獨立的元素,而不是文本的一部分。在網址前后使用空格,可以進一步強調網址的獨立性,并且常用于提供附加信息或注釋。采用“Shift+Enter”鍵換行,將網址放置在新行或新段落上,可以視覺上將其與文本內容分隔開。網址放置在文本最后面2.3高效使用AI大模型的提示詞技巧2.3高效使用AI大模型的提示詞技巧提示詞進階技巧:掌握“庖丁解牛”法,對復雜任務進行分步拆解,以此高效管理復雜任務并控制流程。2.3高效使用AI大模型的提示詞技巧提示詞進階技巧:構建個人數據庫并利用上下文學習。例如,模擬巴菲特進行投資分析,如圖所示2.3高效使用AI大模型的提示詞技巧提示詞進階技巧:采用更加結構化的提示詞框架,框架可涵蓋背景、角色、目標、技能、限制、工作流、注意點、輸出目標、輸出格式以及引導語等要素。2.4AI大模型在財務場景中的典型應用AI大模型提取上市公司財務數據:2.4AI大模型在財務場景中的典型應用AI大模型提取上市公司財務數據:在獲取所需財務數據后,AI大模型會對數據進行深入分析,找出異常情況,并自動生成上市公司財務數據詳細分析結論。示例代碼如下:部分分析結論如圖所示。2.4AI大模型在財務場景中的典型應用AI大模型智能識別發(fā)票:2.4AI大模型在財務場景中的典型應用AI大模型智能識別發(fā)票:2.4AI大模型在財務場景中的典型應用AI大模型智能整理會議紀要:2.4AI大模型在財務場景中的典型應用AI大模型智能整理會議紀要:2.4AI大模型在財務場景中的典型應用AI大模型追蹤熱點財經新聞:2.4AI大模型在財務場景中的典型應用AI大模型智能解析簡歷:2.4AI大模型在財務場景中的典型應用AI大模型智能解析簡歷:2.4AI大模型在財務場景中的典型應用AI大模型分部估值:2.4AI大模型在財務場景中的典型應用AI大模型分部估值:2.4AI大模型在財務場景中的典型應用AI大模型生成金融財務PPT:2.4AI大模型在財務場景中的典型應用AI大模型生成金融財務PPT:2.5AI大模型輔助Python代碼編寫隨著人工智能技術的不斷發(fā)展,AI大模型已逐漸成為一種高效的輔助工具。通過自然語言指令,大模型能夠快速生成代碼框架,并解決特定場景下的問題,從而顯著降低編程的門檻。然而需要注意的是,生成的代碼通常需要結合實際運行環(huán)境進行調試與優(yōu)化。例如,在財務工作中,財務人員每月從銀行下載的PDF回單存在每頁包含上下兩張回單的情況,這導致OCR工具(如Tesseract)無法準確識別回單信息。為解決這一問題,希望通過Python代碼實現(xiàn)將每頁PDF回單分割為獨立單頁的功能,以確保OCR能夠正確提取信息。該問題的核心在于PDF頁面區(qū)域的裁剪、多頁拆分以及保存為新的文檔。向AI大模型提問時,清晰準確的提示詞是獲取有效代碼的關鍵。2.5AI大模型輔助Python代碼編寫2.5AI大模型輔助Python代碼編寫生成的代碼在直接使用前,需要在以下幾個方面進行修改與準備工作:1)采用pipinstall安裝所需的庫,如pymupdf、pdf2image等。若因網絡問題安裝失敗,可選擇采用清華鏡像源進行安裝,命令為pipinstall-i/simple<庫名>,或者通過官方渠道獲取相應的庫文件進行安裝;2)代碼參數和路徑配置。需明確指定下載的原始回單PDF路徑以及分割后的輸出路徑。在Windows系統(tǒng)中,路徑應使用r"原始字符串"或雙反斜杠,同時也可以通過os.path.abspath()獲取當前腳本路徑來實現(xiàn)動態(tài)路徑配置。同時,也需調整分割比例,默認從中間分割,若回單上下排列不均可調整此值。3)修改代碼格式、注釋等,以確保代碼的可讀性和規(guī)范性,便于后續(xù)的維護與使用。2.5AI大模型輔助Python代碼編寫2.5AI大模型輔助Python代碼編寫2.5AI大模型輔助Python代碼編寫AI大模型在編程領域的價值遠不止于代碼生成,其衍生的代碼解釋與調試輔助能力同樣革新了傳統(tǒng)開發(fā)模式。當用戶面對陌生代碼或復雜邏輯時,可向大模型輸入“解釋這段代碼的核心邏輯”等指令,大模型便能以自然語言拆解函數功能、標注關鍵算法步驟,并梳理數據流走向,助力用戶迅速構建理解框架。在調試環(huán)節(jié),大模型能模擬代碼執(zhí)行路徑,分析循環(huán)條件、變量作用域等潛在邏輯漏洞,并提供針對性的調試建議。這種全流程智能輔助模式使用戶得以從繁瑣的基礎編碼及重復性調試中解脫出來,尤其有利于新手快速掌握項目代碼邏輯,同時也為高效排查邊緣場景問題提供了有力支持。第三章Python在財務文本解析自動化領域的應用目錄013.1Python在財務文本解析自動化領域的應用介紹020403第三章Python在財務文本解析自動化領域的應用3.2PDF文本解析基礎——提取PDF文本與表格3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液3.4PDF表格數據解析實戰(zhàn)——新天綠能053.5文檔主題可視化技術063.6文檔主題可視化案例實戰(zhàn)——貴州茅臺3.1Python在財務文本解析自動化領域的應用介紹Python在財務文本解析自動化中的一些核心應用:銀行業(yè)務流程與財務報告自動化內部審計與風險合規(guī)監(jiān)控上市公司年報深度解析與綜合財務數據分析3.2PDF文本解析基礎——提取PDF文本與表格pdfplumber庫的安裝:在進行PDF文本解析時,推薦使用pip安裝方法來安裝pdfplumber庫。安裝過程與之前介紹的pip安裝方法相似,具體步驟如下:(1)按下鍵盤上的“Win+R”組合鍵,調出運行對話框。(2)輸入“cmd”并點擊“確定”,打開命令提示符窗口。(3)在控制臺中輸入命令“pipinstallpdfplumber”。(4)按下“Enter”鍵,啟動安裝過程,并等待其完成。若遇到安裝問題,可嘗試使用清華大學提供的鏡像源進行安裝?;蛘呖梢允褂萌缦麓a進行安裝,其效果與之前描述的相同:安裝界面的顯示如圖所示。3.2PDF文本解析基礎——提取PDF文本與表格pdfplumber庫提取文本內容:pdfplumber庫的使用非常簡單。通過調用庫中的extract_text()方法,可以輕松解析PDF文件第一頁的文本內容。運行效果如圖所示。3.2PDF文本解析基礎——提取PDF文本與表格pdfplumber庫提取文本內容:若需解析文檔中每一頁的內容,可通過for循環(huán)語句實現(xiàn)。3.2PDF文本解析基礎——提取PDF文本與表格pdfplumber庫提取文本內容:或者采用如下代碼:3.2PDF文本解析基礎——提取PDF文本與表格補充知識點:文件的相對路徑與絕對路徑:相對路徑:相對路徑指相對于當前代碼文件所在目錄的路徑。例如,上面案例中使用pdfplumber.open('公司A理財公告.PDF')表示打開與代碼文件同一目錄下的PDF文件。若路徑寫為pdfplumber.open('XX文件夾/公司A理財公告.PDF'),則指打開當前目錄下“XX文件夾”中的PDF文件。絕對路徑:絕對路徑提供了文件在文件系統(tǒng)中的完整路徑。例如,“E:\測試\公司A理財公告.PDF”是一個絕對路徑。由于在Python中,反斜杠“\”用作轉義字符,例如“\n”代表換行,因此在書寫絕對路徑時,建議使用雙反斜杠“E:\\測試\\公司A理財公告.PDF”以避免轉義字符的混淆。除了使用雙反斜杠外,還可以在路徑字符串前加上字母“r“,以指示該字符串為原始字符串,從而忽略單個反斜杠的特殊含義。3.2PDF文本解析基礎——提取PDF文本與表格pdfplumber庫提取表格內容:pdfplumber庫不僅能夠解析PDF文檔中的普通文本內容,還具備解析文檔內表格的功能。例如,在“公司A理財公告.PDF”文檔的第4頁,就包含了如圖所示的表格內容。3.2PDF文本解析基礎——提取PDF文本與表格pdfplumber庫提取表格內容:使用pdfplumber庫的extract_tables()方法可以提取頁面中的表格,代碼如下:輸出結果見圖。3.2PDF文本解析基礎——提取PDF文本與表格pdfplumber庫提取表格內容:得到的table是一個嵌套列表結構,其中大列表包含多個小列表,每個小列表代表表格中的每一行。為了使表格的展現(xiàn)效果更佳,可以利用pandas庫,代碼如下。其中,table[0]代表表頭信息,而table[1:]代表第2行及其以下的內容。獲得的表格df如圖所示。3.2PDF文本解析基礎——提取PDF文本與表格pdfplumber庫提取表格內容:表格中可能存在一些換行符\n,這是由于原表格中相應字符之間存在換行。若需去除這些換行符,可以使用replace()函數進行替換,代碼如下:由于table是一個嵌套列表,需要通過兩層循環(huán)定位到具體的文本內容。table[i]表示子列表,table[i][j]表示子列表中的元素。使用replace()函數替換換行符后,需要將替換后的內容重新賦值給table[i][j]以完成替換。替換后的表格輸出展示在圖中,其中換行符已被去除。3.2PDF文本解析基礎——提取PDF文本與表格pdfplumber庫提取表格內容:此外,某些IDE(如PyCharm)在展示DataFrame時可能僅展示部分列而非全部,如圖所示。為了展示DataFrame的全部列,可以在打印查看DataFrame之前添加如下代碼行,即可展示DataFrame的所有列:此時打印輸出效果如圖所示。3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液單個上市公司年報解析——以貴州茅臺為例:本節(jié)以貴州茅臺2020年年報為例,進行上市公司年報的解析實戰(zhàn)。附錄代碼中已提供貴州茅臺年報PDF,無需額外搜索下載。實戰(zhàn)中,將重點解析公司的核心競爭力和未來展望這兩部分內容,這兩部分的內容可通過第3.2節(jié)介紹的文本內容提取方法從年報中提取。打開貴州茅臺的年報PDF,找到公司的核心競爭力部分,位于年報的第三節(jié)“公司業(yè)務概要”之下,如圖所示。3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液單個上市公司年報解析——以貴州茅臺為例:首先,使用pdfplumber庫將貴州茅臺年報PDF解析為字符串,操作方法在前文已有詳細介紹,此處不再贅述。解析字符串的代碼如下:3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液單個上市公司年報解析——以貴州茅臺為例:下面的提取工作主要利用re庫定位“核心競爭力”段落在PDF中的位置。re庫是Python自帶的標準庫,無需額外安裝,其主要功能是通過正則表達式匹配字符串。要提取的內容通常以“核心競爭力分析”開頭,之后是第四節(jié)的內容(即第三節(jié)的最后一部分),可以使用此匹配規(guī)則結合re.findall函數提取符合規(guī)則的段落。由于re.findall返回的是所有符合匹配規(guī)則的段落,即res是列表,需先取列表的第一個元素res[0]。接下來進行數據清洗工作,如去除結果字符串中的“\n”和“2020年年度報告”等字符(由于此處不存在翻頁,故不存在“2020年年度報告”字符。但在實際操作中,若存在翻頁則用相應的代碼進行刪除)。這里使用replace方法,也可使用re庫的sub方法。最后,使用strip方法去除前后空格,得到包含核心競爭力信息的字符串。完整的提取代碼如下:3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液單個上市公司年報解析——以貴州茅臺為例:提取到的字符串使用print輸出結果,如圖所示。接下來,使用類似方法提取年報中上市公司關于未來發(fā)展的展望部分。定位這部分內容在年報中的位置,如圖所示。3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液單個上市公司年報解析——以貴州茅臺為例:與核心競爭力披露的解析過程相似,首先解析PDF文件,代碼如下:3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液單個上市公司年報解析——以貴州茅臺為例:然后,根據該部分前后文的特點提取內容,代碼如下:代碼與上一個部分的不同在于第3行取了結果列表中的第二個元素res[1],因為在年報中符合第2行正則表達式匹配規(guī)則的內容有兩個,第一個是詳細版目錄中出現(xiàn)的,而需要的是第二個元素。最后提取到的年報中未來展望的內容的打印結果如圖所示。3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液多個上市公式年報批量解析——以五糧液等公司為例:在掌握了單家公司年報的解析方法后,進一步探討如何提高效率,實現(xiàn)對多家公司年報的批量解析,例如白酒行業(yè)某一年份所有公司的年報。在分析五糧液2020年年報中公司未來發(fā)展展望的部分時,如圖所示,可以觀察到與貴州茅臺年報的顯著差異。五糧液年報的相應部分標題為“公司未來發(fā)展的展望”,而不是“公司關于公司未來發(fā)展的討論與分析”。這種差異意味著,如果繼續(xù)采用3.2.1節(jié)中介紹的方法進行內容提取,將無法獲得預期的結果。3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液多個上市公式年報批量解析——以五糧液等公司為例:上市公司年報的非結構化文本信息披露存在一定的差異性,這是由于年報的結構化規(guī)范程度相對較低導致。盡管證監(jiān)會對上市公司的信息披露時間、方式以及必須披露的內容已有較為規(guī)范和統(tǒng)一的規(guī)定,但在非數據信息,特別是非結構化的文本信息的披露方式上,并沒有形成統(tǒng)一的標準。大多數公司雖然會披露相關內容,但披露的具體方式和標題存在差異,這為解析工作帶來了挑戰(zhàn)。為了應對這一挑戰(zhàn),可以采取增加匹配規(guī)則數量的策略,以此來提高匹配成功的概率。經過細致的觀察和逐一比對,白酒行業(yè)中各公司在進行相應信息披露時,其內容的格式和位置可以歸納為四種組合方式,即兩種不同的起始方式與兩種不同的結束方式的組合。確定這些起始和結束方式后,利用正則表達式中的非貪婪匹配符(.*?),將它們連接起來,便能夠較為全面地涵蓋各種情況。最后將這些組合規(guī)則納入列表,以備后續(xù)使用。相應的代碼如下:3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液多個上市公式年報批量解析——以五糧液等公司為例:3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液多個上市公式年報批量解析——以五糧液等公司為例:接下來利用os.listdir方法來檢索目標文件夾“白酒行業(yè)年報”中的所有文件,并對檢索結果進行遍歷。PDF文件名中包含的公司名稱信息,能夠通過去除文件擴展名后提取出來。完成解析后,將解析結果寫入以相應公司名稱命名的文本文件中,以此確保輸出結果的整潔性和有序性。隨后,對PDF文件執(zhí)行解析操作,這一過程在前文中已有詳細說明(其中第13行可以根據需要選擇性地進行打印輸出,以便于調試和驗證解析結果),解析得到的文本內容text_all將用于后續(xù)的正則表達式匹配。相應的代碼如下:3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液多個上市公式年報批量解析——以五糧液等公司為例:在執(zhí)行正則表達式匹配的過程中,需逐一嘗試應用之前創(chuàng)建的匹配規(guī)則列表。對每個規(guī)則正則表達式提取后,進行條件判斷:若提取結果為空(即返回結果的長度為零),則繼續(xù)應用列表的下一個匹配規(guī)則;若結果非空,則認為已成功匹配到所需內容,隨機退出循環(huán)。這種方法確保了在面對多樣化的文本信息披露格式時,能夠靈活地識別并提取目標數據。代碼如下:在解析過程中可能會遇到目錄重復的問題,類似于3.3.1節(jié)中所述情形,解決這一問題的相應代碼如下。3.3PDF文本解析實戰(zhàn)——貴州茅臺、五糧液多個上市公式年報批量解析——以五糧液等公司為例:最終,所有提取并保存的文件將被放在指定的文件夾內,如圖所示。3.4PDF表格數據解析實戰(zhàn)——新天綠能單份經營報告表格解析——以新天綠能為例:上市公司的經營數據對專業(yè)投資者而言通常具有較高的關注價值,因為相較于財務數據,經營數據更難于人為操縱,能夠提供財報之外的更多信息。以A股上市公司“新天綠能”為例,該公司每月都會公布上一個月的經營數據。這些數據在巨潮資訊網及公司官網上以PDF格式發(fā)布。利用Python自動化解析這些PDF文件,并整理其經營業(yè)務數據,是一種高效的數據處理方式。圖3-15和圖3-16展示了該公司2021年1月份的經營數據披露情況,其主要收入來源包括風電、太陽能(光伏)和天然氣三大板塊。爬取這些數據并自動整理到Excel中,可以為進一步的分析和決策提供便利。3.4PDF表格數據解析實戰(zhàn)——新天綠能單份經營報告表格解析——以新天綠能為例:3.4PDF表格數據解析實戰(zhàn)——新天綠能單份經營報告表格解析——以新天綠能為例:按照以下逐步的方法,可以將經營報告中的分散數據提取出來,并轉化為具有高可讀性的圖表。首先,需從經營報告中提取所有表格(源代碼文件夾下給出了該PDF文件),并將這些數據輸出為一份Excel文件。此過程涉及的知識點在3.2.2節(jié)中有詳細說明。需使用pdfplumber庫打開PDF文件,并調用pages方法以獲取每一頁的內容,代碼如下:3.4PDF表格數據解析實戰(zhàn)——新天綠能單份經營報告表格解析——以新天綠能為例:在接下來的部分,將采用不同的方法,因為觀察到報告包含很多頁內容,例如此處展示的兩頁。首要任務是將所有的表格匯總至單一列表中。具體操作為,首先創(chuàng)建一個空列表,隨后逐頁遍歷,利用extract_tables方法將解析得到的每個表格添加至結果列表。在3.2.3節(jié)中提及,pdfplumber解析得到的表格以列表形式呈現(xiàn),即一個表格由多個列表構成。因此,當前的tables列表具有三層結構:第一層代表頁數,第二層代表相應頁的表格數量,第三層則為每個表格的具體內容列表。例如,tables[1][0][1]表示第二頁第一個表格的第2行數據。然而,這種多層次結構不利于生成統(tǒng)一格式的表格,故需要首先對列表內容進行“攤平”處理。代碼如下:3.4PDF表格數據解析實戰(zhàn)——新天綠能單份經營報告表格解析——以新天綠能為例:首先,創(chuàng)建一個列表以存儲解析結果。接下來,對于表格數據的三層結構,需要逐層進行遍歷。在達到第三層時,實際上是將每一行的內容添加到結果列表中。這一過程的理解可能稍顯復雜,建議讀者在此步驟中密切觀察tables列表,以助于加深理解。代碼如下:接下來的步驟涉及將數據常規(guī)地轉換為DataFrame格式??紤]到轉換后得到的DataFrame可能會出現(xiàn)列名和行名未對齊的情況,因此需要進行進一步的調整以確保數據的準確性和可讀性,相應代碼如下。為了更好地理解這一過程,建議讀者親自運行代碼直至該步驟,并觀察DataFramedf的結構。3.4PDF表格數據解析實戰(zhàn)——新天綠能單份經營報告表格解析——以新天綠能為例:最終,將DataFrame的內容打印出來,如圖所示。3.4PDF表格數據解析實戰(zhàn)——新天綠能多份經營報告表格批量解析:掌握單份報告的解析方法后,便能夠通過遍歷方法高效地批量解析多份報告中的表格。在這一過程中,關鍵在于結果的輸出方式。目標是將這些表格保存在同一文件中,作為不同的表格。如果對每份表格都單獨使用to_excel方法,可能會導致文件內容被覆蓋,最終僅保留最后處理的表格,例如7月的數據。為避免這一問題,可以采用openpyxl庫提供的方法。值得一提的是,openpyxl是Python中用于處理Excel文件讀寫的一個高效工具,值得學習。在作者的其他著作中,將對openpyxl庫進行更深入的介紹。相應的代碼如下:接下來開始遍歷,由于文件名具有高度相似性,只有3月和6月是季度性文件,僅需通過if語句塊進行簡單的區(qū)分。在處理過程中,可以參考3.4.1節(jié)中描述的單份報告解析過程,此處不再贅述。相應的代碼如下:3.4PDF表格數據解析實戰(zhàn)——新天綠能多份經營報告表格批量解析:在最終保存數據時,應將每個月的數據寫入Excel文件的一個獨立工作表中,并以月份命名工作表。例如,使用writer.save()將數據寫入相應的工作表,并保存Excel文件。代碼如下:3.4PDF表格數據解析實戰(zhàn)——新天綠能多份經營報告表格批量解析:完成保存后,打開生成的Excel文件,如圖所示。3.4PDF表格數據解析實戰(zhàn)——新天綠能拼接整理多份表格:在提取并保存每個月的表格數據之后,下一步是將各個業(yè)務板塊的總和數據按時間序列進行整理和統(tǒng)計,以生成一張匯總表,這樣能夠清晰地展示公司每個月數據的變化趨勢。在進行這一步驟時,需注意使用openpyxl庫的load_workbook方法,以確保在最終保存過程中不會丟失之前得到的結果,相應代碼如下。代碼的第6行應首先初始化生成用于存放匯總結果的表格,為后續(xù)的數據整理和分析打下基礎。3.4PDF表格數據解析實戰(zhàn)——新天綠能拼接整理多份表格:在繼續(xù)處理數據的過程中,需要對每張表格進行逐一遍歷。由于在之前保存時已經按照月份命名,因此可以方便地通過遍歷調取每張表格,代碼如下。從第3行至第6行,將對單個表格的索引進行規(guī)范化處理。這一步驟的必要性在于,后續(xù)操作需要利用索引進行精確定位,而直接讀取得到的索引可能存在左右空格,例如“風電業(yè)務”。為此,首先初始化一個索引列表,然后遍歷現(xiàn)有的所有索引項,對每個索引項執(zhí)行strip操作以去除空格,并將處理后的索引項加入到索引列表。最終,重新定義表格的索引,以確保數據的準確性和一致性。3.4PDF表格數據解析實戰(zhàn)——新天綠能拼接整理多份表格:接下來在進行數據提取的過程中,需要特別關注3月和6月的數據,因為這兩個月份提供的是季度總和值。因此,在計算這兩個月份的具體數值時,應使用表格對應位置的數值減去前兩個月的數值,以得到準確的月度數據。此外,3月和6月的數據提取還存在另一處特殊性。這兩個月份會額外包含一張上網電量表,該表位于發(fā)電量表和天然氣表之間。通過使用loc方法進行定位后,可能會發(fā)現(xiàn)存在兩行標記為“太陽能業(yè)務”的數據。在這種情況下,需要進一步使用iloc方法選取其中的第1行數據,即代表了關注的發(fā)電量數據。相應的代碼如下:3.4PDF表格數據解析實戰(zhàn)——新天綠能拼接整理多份表格:對于其他月份的數據提取,邏輯相對簡單。首先,利用loc方法根據索引名定位到相應的行,然后按照列表的順序直接提取數據。在解析過程中,需要注意的是,此時解析得到的表中的數據通常以字符串形式存在。為了進行計算,必須將這些字符串轉換為浮點數,這可以通過使用float方法實現(xiàn)。此外,天然氣數據的處理存在一些特殊性。觀察不同月份天然氣數據可以發(fā)現(xiàn),3月、6月和7月的數據位于第一列,而其他月份的數據則位于第二列。因此,在提取數據時,需要使用try...except...代碼塊進行異常處理。如果try代碼塊中的float轉換失敗(這通常發(fā)生在該位置無內容而無法轉換為浮點數時),則執(zhí)行except代碼塊中的代碼。這種異常處理機制確保了數據處理的穩(wěn)健性,即使在數據格式存在差異的情況下,也能夠正確地提取所需信息。相應的代碼如下:3.4PDF表格數據解析實戰(zhàn)——新天綠能拼接整理多份表格:接下來需要計算風電和太陽能的總發(fā)電量。由于之前已經將數據轉換為浮點數,因此在計算過程中無需再次進行轉換,代碼如下:在遍歷并處理完所有單個表格后,使用writer.save()方法保存Excel文件,代碼如下:再次打開保存后的Excel文件,可以發(fā)現(xiàn)在原有的按月份統(tǒng)計的單個工作表之后,新增了一個按業(yè)務和月份排序的匯總工作表,如圖所示。通過這個匯總表,可以清晰地觀察到各項業(yè)務數據隨時間的變化趨勢。3.5文檔主題可視化技術中文大數據分詞技巧:jieba庫的安裝在進行文本大數據分詞之前,必須先安裝中文分詞庫——jieba庫。該庫可以通過pip安裝法進行安裝。以Windows系統(tǒng)為例,用戶可以通過按下“Win+R”快捷鍵來調出運行框,輸入“cmd”并回車,在隨后彈出的命令行窗口中輸入命令“pipinstalljieba”來完成安裝。若遇到安裝失敗的情況,可以嘗試使用清華鏡像的pip安裝方法。安裝完成后,即可使用jieba庫進行文本的分詞操作。首先需要導入jieba庫,這通常通過一行代碼實現(xiàn)。緊接著,使用jieba庫中的cut()函數對指定的文本內容進行分詞處理,并將分詞結果存儲于變量word中。隨后,通過for循環(huán)遍歷word中的分詞結果,并將其打印輸出。代碼如下:打印輸出的分詞結果如下所示:3.5文檔主題可視化技術中文大數據分詞技巧:讀取文本內容,并進行分詞圖3-20展示了2017年的信托行業(yè)年度報告,該報告大約包含20萬字。對于業(yè)務分析人員而言,關注點往往在于這20萬字中哪些內容更為重要。一種簡單的方法是識別出現(xiàn)頻率最高的詞匯,因此這些詞匯所對應的內容可能具有更高的關注度和重要性。實現(xiàn)這一功能,需要先對文本進行中文分詞,隨后進行詞頻統(tǒng)計。以下代碼示例展示了如何對一個文本文件進行分詞:3.5文檔主題可視化技術中文大數據分詞技巧:讀取文本內容,并進行分詞需要注意的是,cut()函數返回的words不是一個列表,而是一個迭代器。迭代器與列表在功能上相似,但可以被視為一種“隱身的列表”。由于迭代器的特性,不能直接通過print(words)來輸出其內容,而應該使用for循環(huán)來遍歷迭代器中的元素,如下所示:此時的結果如圖3-21所示。3.5文檔主題可視化技術中文大數據分詞技巧:提取分詞后的四字詞以提取大于或等于四個字的詞匯為例說明如何按特定的要求獲取詞匯,代碼如下:首先,創(chuàng)建一個名為report_words的列表。隨后,遍歷words中的每個元素,若元素的詞匯長度達到或超過四個字,則將其添加到report_words列表中。完成篩選后,將該列表中的詞匯打印輸出,其結果如圖所示。3.5文檔主題可視化技術詞頻統(tǒng)計技巧:統(tǒng)計高頻詞匯的詞頻是一個相對直接的過程,可以通過使用collections模塊中的Counter類來實現(xiàn),代碼如下:執(zhí)行上述代碼將打印輸出report_words列表中每個詞匯的頻次。若需要查看出現(xiàn)頻次最多的前50名詞匯,可以使用Counter對象的most_common()函數來獲取高頻詞及其出現(xiàn)次數,代碼如下:下圖展示了將result打印出來的運行效果。3.5文檔主題可視化技術詞云圖繪制:詞云圖初步繪制在繪制詞云圖之前,首先需要引入相關的庫,代碼如下:引入相關庫后,可以通過如下代碼繪制詞云圖:3.5文檔主題可視化技術詞云圖繪制:詞云圖初步繪制3.5文檔主題可視化技術詞云圖繪制:繪制特定形狀的詞云圖當前展示的詞云圖在美觀度上尚有提升空間。接下來將介紹生成具有特定形狀的詞云圖的方法,首先介紹所需相關庫的引入,相應的代碼如下:引入所需庫之后,即可開始繪制具有指定形狀的詞云圖,代碼如下:3.5文檔主題可視化技術詞云圖繪制:繪制特定形狀的詞云圖生成的最終結果如圖所示。此時,已形成微博logo的輪廓,但顏色尚未進行自定義設置,仍保持默認顏色。3.5文檔主題可視化技術詞云圖繪制:繪制具有特定形狀和顏色的詞云圖本節(jié)將介紹在生成特定形狀的基礎上,如何進一步為詞云圖添加特定顏色。首先,需要引入必要的庫,代碼如下:完成庫的引入后,即可開始繪制具有指定顏色的詞云圖。在之前的代碼基礎上,添加以下代碼段:3.5文檔主題可視化技術詞云圖繪制:繪制具有特定形狀和顏色的詞云圖最終生成的詞云圖如圖所示,此時詞云圖不僅具有特定的形狀,還融入了微博logo的標致性顏色。3.5文檔主題可視化技術補充知識點:詞性標注:詞性(part-of-speech)是詞匯基本的語法范疇,亦稱為詞類,其主要功能在于描述一個詞在具體語境中的語法作用。例如,用來指稱一個概念的詞通常為名詞,而用來指代前文提到的名詞的詞則為代詞。由于一個詞可能對應多種詞性,因此準確地為每個詞標注詞性是一項具有挑戰(zhàn)性的任務。例如,在句子“中國開始對計劃經濟體制進行改革”中,“改革”作為動詞使用,而在“醫(yī)藥衛(wèi)生改革中的經濟問題”中則作為名詞使用。將此問題抽象化,即在已知單詞序列的基礎上,為每個單詞標注相應的詞性。詞性標注是自然語言處理領域中的一項基礎且重要的工作。jieba庫提供了詞性標注功能,可以直接調用。以下代碼是一個示例:3.5文檔主題可視化技術補充知識點:詞性標注:Jieba分詞的詞性代碼及其對應的名稱和幫助記憶的詮釋如表所示。3.5文檔主題可視化技術補充知識點:詞性標注:此外,該結果本身是一個結構化的迭代器,該迭代器(記為seg)包含兩個鍵:word(詞)和flag(詞性)??梢圆捎萌缦麓a進一步進行規(guī)整處理,并將結果分列保存到df中。3.5文檔主題可視化技術補充知識點:詞性標注:為了進一步演示,可以將文本替換為先前的信托行業(yè)報告,以觀察其中的名詞使用情況,代碼如下:3.5文檔主題可視化技術補充知識點:詞性標注:結果如圖所示。3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺單個上市公司風險段詞云圖繪制——以貴州茅臺為例:本小節(jié)以貴州茅臺2019年年報的風險提示段為例,詳細說明如何繪制單個上市公司的詞云圖。首先,打開相應文件夾中的文件,利用jieba進行分詞處理。該文件夾已在源代碼文件中提供,讀者可以直接使用。代碼如下:3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺單個上市公司風險段詞云圖繪制——以貴州茅臺為例:第二步,篩選特定長度的詞語。由于風險提示段本身較短,若設置的詞語長度過長,可能導致最終結果數量有限。因此,除了單字詞外,其他詞語均納入考慮范圍。代碼如下:隨后,開始繪制詞云圖。首先設置詞云圖的形狀,相關企業(yè)logo圖片已在文件夾中提供,例如貴州茅臺的的logo。接著,使用上文介紹的image.open方法打開該圖片,并將其轉換為數組形式的圖片遮罩層。代碼如下:3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺單個上市公司風險段詞云圖繪制——以貴州茅臺為例:接下來,將分詞結果按空格連接,設置詞云圖的各項參數,代碼如下:為了體現(xiàn)出詞云圖背景的顏色,需要讀取預先設置好路徑的圖片,并獲取其顏色信息,然后重新為詞云圖設置顏色,代碼如下:最后,進行保存操作,代碼如下:3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺單個上市公司風險段詞云圖繪制——以貴州茅臺為例:繪制完成的詞云圖如圖所示。3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺批量繪制多個公司詞云圖:本節(jié)將探討如何批量生成多個上市公司風險段文本的詞云圖。實現(xiàn)此功能的主要技術難點在于合理應用os模塊和for循環(huán)。在開始遍歷文件之前,應先創(chuàng)建一個用于存放詞云圖結果的文件夾。隨后,利用os模塊的listdir方法來獲取風險段文件夾下所有文件的名稱。代碼如下:遍歷文件的代碼如下:3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺批量繪制多個公司詞云圖:3.6文檔主題可視化案例實戰(zhàn)——貴州茅臺批量繪制多個公司詞云圖:運行上述代碼后,詞云圖結果文件夾的內容如圖所示。第四章Python在財務圖像識別和電子郵件處理自動化領域的應用目錄014.1Python在財務圖像識別和電子郵件處理自動化領域的應用介紹020403第四章Python在財務圖像識別和電子郵件處理自動化領域的應用4.2PDF格式銀行回單的自動識別4.3回單內容提取4.4電子郵件處理自動化4.1Python在財務圖像識別和電子郵件處理自動化領域的應用Python在財務圖像識別和電子郵件處理自動化領域的應用:財務圖像識別自動化應用:發(fā)票處理自動化;銀行交易回執(zhí)解析;差旅報銷流程優(yōu)化電子郵件處理自動化應用:合同協(xié)議管理;會議安排通知;簡歷篩選與分類;客戶服務郵件回復4.2PDF格式銀行回單的自動識別電子回單是網上銀行客戶進行匯款、繳費、B2C等交易后生成的電子化交易憑證,用以記錄交易的詳細信息。這種回單通常包含交易金額、日期、參與交易的賬號號碼等關鍵信息。鑒于電子回單的格式具有一致性,可以高效地將其進行批量處理,如單據分割、關鍵信息提取和數據導出等。在實際應用中,銀行回單的PDF版本往往在一張A4大小的頁面上展示兩張回單信息(如圖所示)。在解析回單內容的過程中,首先應將PDF頁面轉換為圖像。隨后,根據回單的展示區(qū)域對圖像進行分割,以獲取單獨的回單圖像。以下是詳細的操作流程說明。4.2PDF格式銀行回單的自動識別PDF轉圖片PDF文件的導入。進行PDF格式的轉換的首要步驟是將PDF文件導入Python。該步驟代碼如下:4.2PDF格式銀行回單的自動識別PDF轉圖片PDF轉化為圖片。導入PDF文件至Python之后,接下來進行的操作是對文件中的每一頁內容進行遍歷,并將頁面內容轉換為圖片格式。該步驟完整代碼如下:4.2PDF格式銀行回單的自動識別圖片切割圖片導入。使用Python中的PIL庫(PythonImagingLibrary)來打開圖片文件。代碼如下:查看圖片大小。導入圖片之后,下一步是檢查圖片的尺寸,以確定圖片切割的具體位置。通過調用size函數,可以獲取圖片的尺寸信息。代碼如下:輸出的結果示例為:4.2PDF格式銀行回單的自動識別圖片切割圖片切割。接下來介紹圖片切割的過程,以下是相關代碼:4.2PDF格式銀行回單的自動識別圖片切割圖片切割。最終的切割結果如圖所示。4.2PDF格式銀行回單的自動識別案例實戰(zhàn)根據前兩節(jié)所介紹的知識點,可以構建一個通用的PDF轉換成圖像的函數,以實現(xiàn)批量處理和代碼的可復用性。具體代碼如下:4.2PDF格式銀行回單的自動識別案例實戰(zhàn)接下來,通過使用for循環(huán)對cut函數進行迭代調用,對文檔doc中的所有回單圖片執(zhí)行切割操作。代碼如下:PDF文件轉換圖片后的縮略圖如圖所示。4.3回單內容提取在完成第4.2節(jié)所述的將銀行回單PDF文件轉換為圖像之后,接下來的步驟是利用圖像文字識別技術(OCR)來進一步提取圖像中的信息,以實現(xiàn)銀行回單處理的完整流程。OCR技術,即光學字符識別(OpticalCharacterRecognition),是一種通過掃描等光學輸入手段將票據、報刊、書籍、文稿以及其他印刷品上的文字轉換為圖像信息,隨后使用文字識別技術將這些圖像信息轉換成計算機可識別和使用的輸入數據的技術。OCR技術廣泛應用于銀行票據處理、大量文字資料的錄入、檔案卷宗的數字化以及文案的處理等領域。在本案例中,將采用百度的OCR接口來提取銀行回單中的信息。4.3回單內容提取Python圖片文字識別(OCR)注冊:在利用百度的OCR接口之前,需先在官方網站進行注冊。以下是注冊和獲取接口使用權限的步驟:(1)訪問百度文字識別官方網站[百度AI開放平臺-OCR](/tech/ocr),并點擊“立即使用”按鈕,如圖所示。4.3回單內容提取Python圖片文字識別(OCR)注冊:在利用百度的OCR接口之前,需先在官方網站進行注冊。以下是注冊和獲取接口使用權限的步驟:(2)點擊“立即使用”后,將彈出登錄頁面。若尚未擁有百度賬號,用戶需先進行注冊,隨后登錄。(3)登錄百度賬號后,進入百度文字識別平臺,如圖所示。此時,應點擊頁面上的“創(chuàng)建應用”按鈕。4.3回單內容提取Python圖片文字識別(OCR)注冊:在利用百度的OCR接口之前,需先在官方網站進行注冊。以下是注冊和獲取接口使用權限的步驟:(4)在第(3)步點擊“創(chuàng)建應用”后,將進入應用創(chuàng)建界面(見圖)。在此界面,用戶需填寫自定義的應用名稱,選擇應用類型,并填寫所需的其他信息。填寫完畢后,點擊頁面底部的“立即創(chuàng)建”按鈕。4.3回單內容提取Python圖片文字識別(OCR)注冊:在利用百度的OCR接口之前,需先在官方網站進行注冊。以下是注冊和獲取接口使用權限的步驟:(5)點擊左側邊欄的“概覽”選項,用戶可以在“我的應用”欄目中看到“公有云1個”,隨后點擊該選項,見圖。4.3回單內容提取Python圖片文字識別(OCR)注冊:在利用百度的OCR接口之前,需先在官方網站進行注冊。以下是注冊和獲取接口使用權限的步驟:此時,用戶將能看到剛剛創(chuàng)建的應用的AppID、APIKey以及SecretKey等參數,見圖。這些參數在調用文字識別API時必須填入。4.3回單內容提取Python圖片文字識別(OCR)Python接口調用:Python接口調用的具體步驟如下:(1)安裝baidu-aip庫。在通過Python調用圖像識別接口之前,必須首先安裝baidu-aip庫。該庫可以通過pip命令進行下載,具體命令為pipinstallbaidu-aip。(2)調用接口進行圖像識別。通過以下代碼示例,可以調用百度OCR接口實現(xiàn)圖像識別功能。4.3回單內容提取Python圖片文字識別(OCR)Python接口調用:Python接口調用的具體步驟如下:(3)解析結果以提取字符串。調用圖像識別接口后,返回的結果變量result是一個字典(dict)類型。其中,words_result鍵對應的值是一個列表類型的變量,而列表中的每個元素本身也是一個字典類型的變量,其中的words鍵對應值即為識別出的文字。相應的代碼如下:為了展示圖片文字識別的效果,此處使用如圖所示的一首詩的圖片作為示例。通過此示例,讀者可以觀察到圖像文字識別技術在實際應用中的表現(xiàn)。4.3回單內容提取Python圖片文字識別(OCR)Python接口調用:Python接口調用的具體步驟如下:(3)運行結果如下:4.3回單內容提取調用百度OCR接口識別回單在學習了百度OCR接口的使用方法之后,進入銀行回單識別的實踐階段。按照以下代碼示例,用戶需填入自己的APP_ID、API_KEY和SECRET_KEY。百度OCR提供了一定量的免費調用額度,供學習和測試使用。初始化設置定義用于打開文件的函數及其參數變量,代碼如下:4.3回單內容提取調用百度OCR接口識別回單初始化設置提取所有待信息提取的圖片文件名稱,代碼如下:創(chuàng)建一個空白的DataFrame,并根據信息記錄自定義列標簽,隨后將表格寫入Excel文件。代碼如下:使用openpyxl模塊處理Excel文件。通過op.load_workbook函數打開指定的工作簿wb,并通過wb['工作表名稱']引用工作簿中的特定工作表。代碼如下:4.3回單內容提取調用百度OCR接口識別回單提取圖片內的文本信息并導入Excel對回單文件列表中的所有圖片進行遍歷,使用百度OCR技術識別圖片中的文字,并提取相應的文本內容。代碼如下:4.3回單內容提取調用百度OCR接口識別回單提取圖片內的文本信息并導入Excel最終生成的結果如圖所示,已成功識別并獲取了電子回單的號碼與金額。4.4電子郵件處理自動化QQ郵箱郵件自動化本節(jié)將介紹如何利用騰訊QQ郵箱發(fā)送郵件。該過程涉及的代碼結構相對簡單,代碼如下:4.4電子郵件處理自動化QQ郵箱郵件自動化執(zhí)行上述步驟后,運行結果將如圖所示。4.4電子郵件處理自動化QQ郵箱郵件自動化在實際應用中,需要調整發(fā)件人信息、SMTP服務授權、收件人信息以及郵件正文和主題。特別指出,上述代碼中第4行提到的SMTP授權碼并非QQ郵箱的登錄密碼,而是自動化郵件發(fā)送程序所需的特定授權碼。本部分首先以QQ郵箱為例,介紹如何獲取該授權碼,并在下一小節(jié)中闡述如何獲取網易163郵箱的授權碼。首先,登錄qq郵箱,點擊頁面頂部的設置選項,隨后選擇賬號,如圖所示。4.4電子郵件處理自動化QQ郵箱郵件自動化在賬號設置頁面中,滾動至頁面底部,如圖所示,點擊POP3/SMTP服務選項中的開啟按鈕。開啟服務后,系統(tǒng)將要求進行手機驗證。按照指示,將驗證內容發(fā)送至指定的手機號碼,隨后點擊“我已發(fā)送”按鈕,如圖所示。4.4電子郵件處理自動化QQ郵箱郵件自動化完成驗證后,系統(tǒng)將自動顯示一個包含SMTP授權碼的對話框,如圖所示。請復制該授權碼并妥善保存,以備后續(xù)調用。在獲取QQ郵箱的SMTP授權碼之后,可以設置代碼中的發(fā)件人信息、授權碼以及收件人信息。接下來,可以利用Python編寫的程序自動發(fā)送QQ郵件。4.4電子郵件處理自動化網易163郵箱自動化若需使用其他電子郵箱賬號發(fā)送郵件,操作流程如下:(1)獲取該郵箱賬戶的SMTP授權碼。(2)修改設置SMTP授權碼的代碼行。以獲取163郵箱的SMTP授權碼為例,操作步驟如圖所示:點擊郵箱界面頂部的“設置”選項,隨后選擇“POPS/SMTP/IMAP”進行進一步操作。4.4電子郵件處理自動化網易163郵箱自動化如圖所示,用戶應在彈出的界面中選擇啟用POP3/SMTP服務:其他驗證方式應遵循163郵箱提供的指示進行操作,這些步驟與QQ郵箱的操作大體相似。對于其他郵箱服務,操作原理與此相似。用戶需更改相應的SMTP授權碼,并在代碼中將郵箱后綴替換為所選郵箱的實際后綴。代碼如下:4.4電子郵件處理自動化發(fā)送HTML格式的郵件自動發(fā)送文本內容的電子郵件功能已實現(xiàn)。接下來,探討如何發(fā)送HTML格式的電子郵件。HTML格式的郵件允許郵件內容模擬網頁布局,實現(xiàn)交互功能,例如點擊文字鏈接跳轉至特定網頁。如圖所示,郵件中的新聞標題通過超鏈接實現(xiàn)點擊跳轉,引導用戶訪問相關新聞網址。4.4電子郵件處理自動化發(fā)送HTML格式的郵件實現(xiàn)上述效果,關鍵在于修改郵件正文內容的輸入部分。具體而言,需要對如下代碼的MIMEText()函數的參數進行相應的調整。首先,構造包含超鏈接的郵件正文段落。在實際應用中,編寫mail_msg中的郵件正文內容是關鍵步驟。mail_msg變量通過三個單引號定義一個多行字符串。盡管在Python基礎教學中曾提及三個單引號通常用于注釋,但在此情形下,將三個單引號包含的內容賦值給mail_msg變量后,mail_msg便成為一個多行字符串。三個單引號中包含HTML格式的代碼。代碼如下:4.4電子郵件處理自動化發(fā)送HTML格式的郵件接下來,使用MIMEText函數來編輯郵件正文。MIMEText()函數的第一個參數mail_msg為郵件正文內容,第二個參數html指明內容應以HTML格式呈現(xiàn),第三個參數utf-8聲明使用的中文編碼方式。代碼如下:運行結果如圖所示。在該圖中,點擊正文內容的第2行文字,將自動跳轉至百度首頁。4.4電子郵件處理自動化發(fā)送帶回單附件的郵件如需在郵件中附加文件,可對上一節(jié)中設置郵件正文的如下代碼進行修改。修改成如下代碼:4.4電子郵件處理自動化發(fā)送帶回單附件的郵件最終的運行結果如圖所示,此時應能收到一份包含附件的電子郵件。4.4電子郵件處理自動化發(fā)送帶回單附件的郵件上述代碼的局限性在于僅支持txt格式的附件。若需要發(fā)送多種格式的多個附件,例如任務中所要求的,將分割后的訂單圖像(png格式)和處理過的Excel文件作為附件發(fā)送,如圖所示,現(xiàn)有代碼則需要進行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 婦產科臨床技能:新生兒神經行為評估課件
- 課件適用場景
- 如何-音樂活動策劃方案(3篇)
- 戶外整體活動策劃方案(3篇)
- 2026年石家莊人民醫(yī)學高等??茖W校單招綜合素質考試備考試題帶答案解析
- 2026年重慶青年職業(yè)技術學院單招綜合素質筆試模擬試題帶答案解析
- 活動策劃方案封面頁(3篇)
- 2026年揚州中瑞酒店職業(yè)學院高職單招職業(yè)適應性測試模擬試題有答案解析
- 2026年遼寧工程職業(yè)學院高職單招職業(yè)適應性測試參考題庫有答案解析
- 2026年綠色建筑對電氣設備配置的影響
- 買房分手協(xié)議書范本
- 門窗安裝專項施工方案
- 耐克加盟協(xié)議書
- 2026年母嬰產品社群營銷方案與寶媽群體深度運營手冊
- 私人奴隸協(xié)議書范本
- 汽車底盤資料課件
- 2025年教育系統(tǒng)后備干部面試題及答案
- 配電房整改工程施工方案(2025版)
- 頂管施工技術培訓
- 《JJG 1081.2-2024鐵路機車車輛輪徑量具檢定規(guī)程第2部分:輪徑測量器》 解讀
- YY/T 1488-2025中醫(yī)器械舌象信息采集設備
評論
0/150
提交評論