使用Python實(shí)現(xiàn)在PDF中查找和高亮文字的方法
引言
在日常工作和學(xué)習(xí)中,我們常常需要處理各種PDF文件。其中對文字內(nèi)容進(jìn)行查找和高亮是非常常見的需求。以工作場景為例,我們可能需要快速檢索一份長篇報(bào)告中的關(guān)鍵信息。利用PDF的查找功能,我們能夠迅速定位到相關(guān)內(nèi)容,大幅提高工作效率。同時(shí),通過高亮標(biāo)注重要信息,我們能夠方便地進(jìn)行日后復(fù)習(xí)和回顧。這篇博客將探討如何使用Python實(shí)現(xiàn)在PDF中查找和高亮文字,主要涵蓋以下內(nèi)容:
- Python在PDF中查找和高亮文字并統(tǒng)計(jì)出現(xiàn)次數(shù)和頁碼
- Python在PDF的特定頁面區(qū)域中查找和高亮文字
- Python使用正則表達(dá)式在PDF中查找和高亮文字
- Python在PDF中查找文字并獲取它的坐標(biāo)位置
- 其他查找條件設(shè)置
使用工具
要在Python應(yīng)用程序中查找和高亮PDF中的文字,可以使用Spire.PDF for Python庫。它支持在Python應(yīng)用程序中創(chuàng)建、讀取、操作和轉(zhuǎn)換PDF文檔。
你可以通過在終端運(yùn)行以下命令來從PyPI安裝Spire.PDF for Python:
pip install Spire.PDF
Python在PDF中查找和高亮文字并統(tǒng)計(jì)出現(xiàn)次數(shù)和頁碼
Spire.PDF for Python提供了PdfTextFinder類,用于查找PDF頁面上的文字。使用該類的Find() 方法,你可以搜索特定的文字或句子。找到后,你可以為其設(shè)置高亮顏色,同時(shí)還能獲取該文字在PDF文檔中出現(xiàn)的次數(shù)以及所在的頁碼信息。
下面是在PDF中查找和高亮文字的具體步驟:
- 創(chuàng)建PdfDocument類的實(shí)例并使用PdfDocument.LoadFromFile()加載PDF文檔。
- 初始化一個(gè)計(jì)數(shù)器來跟蹤文本出現(xiàn)的次數(shù)以及一個(gè)列表來存儲文本出現(xiàn)的頁碼。
- 遍歷PDF中的頁面。
- 為每個(gè)頁面創(chuàng)建一個(gè)PdfTextFinder實(shí)例并將當(dāng)前頁面對象作為參數(shù)傳入該類的構(gòu)造函數(shù)。
- 使用PdfTextFinder.Find()方法查找特定文本。該方法將返回一個(gè)PdfTextFragment對象列表,其中每個(gè)對象代表該文本在文檔中的一個(gè)實(shí)例。
- 遍歷列表中的PdfTextFragment對象,使用PdfTextFragment.Highlight()方法高亮每個(gè)實(shí)例,同時(shí)遞增文本出現(xiàn)的次數(shù)并將當(dāng)前頁碼添加到列表。
- 使用PdfDocument.SaveToFile()方法保存結(jié)果文檔。
- 打印文本在PDF中出現(xiàn)的次數(shù)和頁碼。
下面是在PDF中查找和高亮文字的Python代碼:
from spire.pdf.common import * from spire.pdf import * # 創(chuàng)建 PdfDocument 類的對象 doc = PdfDocument() # 加載 PDF 文件 doc.LoadFromFile("什么是python.pdf") # 初始化一個(gè)計(jì)數(shù)器來跟蹤文本出現(xiàn)的次數(shù) occurrence_count = 0 # 初始化一個(gè)列表來存儲頁碼 page_numbers = [] # 遍歷文檔中的頁面 for i in range(doc.Pages.Count): page = doc.Pages[i] # 創(chuàng)建 PdfTextFinder 實(shí)例 finder = PdfTextFinder(page) # 查找特定文本 results = finder.Find("Python") # 遍歷找到的所有實(shí)例 for text in results: # 設(shè)置高亮顏色 text.HighLight(Color.get_Yellow()) # 遞增文本出現(xiàn)次數(shù) occurrence_count += 1 # 將頁碼添加到列表中 page_numbers.append(i+1) # 保存結(jié)果文檔 doc.SaveToFile("查找和高亮文本.pdf") doc.Close() # 打印出現(xiàn)次數(shù)和頁碼 print(f"文本 'Python' 在 PDF 中出現(xiàn)了 {occurrence_count} 次。") print(f"該文本出現(xiàn)在以下頁碼: {', '.join(map(str, page_numbers))}")
Python在PDF的特定頁面區(qū)域中查找和高亮文字
除了在PDF文檔的所有頁面或特定頁面中查找和高亮文字(見以上例子)以外,你還可以在特定的頁面區(qū)域中查找和高亮文字。使用PdfTextFinder.Options.Area屬性,你可以指定查找的頁面區(qū)域。
下面是在PDF的特定頁面區(qū)域中查找和高亮文字的具體步驟:
- 創(chuàng)建PdfDocument類的實(shí)例并使用PdfDocument.LoadFromFile()加載PDF文檔。
- 遍歷PDF中的頁面。
- 為每個(gè)頁面創(chuàng)建一個(gè)PdfTextFinder實(shí)例并將當(dāng)前頁面對象作為參數(shù)傳入該類的構(gòu)造函數(shù)。
- 通過PdfTextFinder.Options.Area屬性指定查找的頁面區(qū)域。
- 使用PdfTextFinder.Find()方法查找特定文本。
- 使用PdfTextFragment.Highlight()方法高亮每個(gè)找到的實(shí)例。
- 使用PdfDocument.SaveToFile()方法保存結(jié)果文檔。
下面是在PDF的特定頁面區(qū)域中查找和高亮文字的Python代碼:
from spire.pdf.common import * from spire.pdf import * # 創(chuàng)建 PdfDocument 類的對象 doc = PdfDocument() # 加載 PDF 文件 doc.LoadFromFile("什么是python.pdf") # 遍歷文檔中的頁面 for i in range(doc.Pages.Count): page = doc.Pages[i] # 創(chuàng)建 PdfTextFinder 實(shí)例 finder = PdfTextFinder(page) # 指定查找的頁面區(qū)域 finder.Options.Area = RectangleF(0.0, 0.0, 300.0, 300.0) # 查找特定文本 results = finder.Find("Python") # 遍歷找到的所有實(shí)例 for text in results: # 設(shè)置高亮顏色 text.HighLight(Color.get_Yellow()) # 保存結(jié)果文檔 doc.SaveToFile("在頁面區(qū)域中查找和高亮文本.pdf") doc.Close()
Python使用正則表達(dá)式在PDF中查找和高亮文字
要在PDF中使用正則表達(dá)式查找和高亮文字,你首先需要將PdfTextFinder.Options.Parameter屬性設(shè)置為TextFindParameter.Regex,以啟用正則表達(dá)式查找。然后,你需要將正則表達(dá)式作為參數(shù)傳遞給Find()方法來實(shí)現(xiàn)基于正則表達(dá)式查找文字。
下面是使用正則表達(dá)式在PDF中查找和高亮文字的具體步驟:
- 創(chuàng)建PdfDocument類的實(shí)例并使用PdfDocument.LoadFromFile()加載PDF文檔。
- 遍歷PDF中的頁面。
- 為每個(gè)頁面創(chuàng)建一個(gè)PdfTextFinder實(shí)例并將當(dāng)前頁面對象作為參數(shù)傳入該類的構(gòu)造函數(shù)。
- 將PdfTextFinder.Options.Parameter屬性設(shè)置為TextFindParameter.Regex以啟用正則表達(dá)式文本查找模式。
- 將正則表達(dá)式傳遞給PdfTextFinder.Find()方法來實(shí)現(xiàn)基于正則表達(dá)式查找特定文本。
- 使用PdfTextFragment.Highlight()方法高亮每個(gè)匹配到的實(shí)例。
- 使用PdfDocument.SaveToFile()方法保存結(jié)果文檔。
下面是使用正則表達(dá)式在PDF中查找和高亮文字的Python代碼:
from spire.pdf.common import * from spire.pdf import * # 創(chuàng)建 PdfDocument 類的對象 doc = PdfDocument() # 加載 PDF 文件 doc.LoadFromFile("示例.pdf") # 遍歷文檔中的頁面 for i in range(doc.Pages.Count): page = doc.Pages[i] # 創(chuàng)建 PdfTextFinder 實(shí)例 finder = PdfTextFinder(page) # 設(shè)置文本查找條件為使用正則表達(dá)式查找 finder.Options.Parameter = TextFindParameter.Regex # 查找以符號 “#” 開頭的文本 results = finder.Find("""\\#\\w+\\b""") # 遍歷找到的所有實(shí)例 for text in results: # 設(shè)置高亮顏色 text.HighLight(Color.get_Yellow()) # 保存結(jié)果文檔 doc.SaveToFile("使用正則表達(dá)式查找和高亮文本.pdf") doc.Close()
Python在PDF中查找文字并獲取它的坐標(biāo)位置
在找到特定的文字后,你還可以獲取它的相關(guān)信息,例如它的坐標(biāo)位置。下面是在PDF中查找文字并獲取它的坐標(biāo)信息的具體步驟:
- 創(chuàng)建PdfDocument類的實(shí)例并使用PdfDocument.LoadFromFile()加載PDF文檔。
- 遍歷PDF中的頁面。
- 為每個(gè)頁面創(chuàng)建一個(gè)PdfTextFinder實(shí)例并將當(dāng)前頁面對象作為參數(shù)傳入該類的構(gòu)造函數(shù)。
- 使用PdfTextFinder.Find()方法查找特定文本。
- 使用PdfTextFragment.Positions[0].X和PdfTextFragment.Positions[0].Y屬性獲取每個(gè)找到的實(shí)例的X和Y坐標(biāo)。
下面是在PDF中查找文字并獲取它的坐標(biāo)位置的Python代碼:
from spire.pdf.common import * from spire.pdf import * # 創(chuàng)建 PdfDocument 類的對象 doc = PdfDocument() # 加載 PDF 文件 doc.LoadFromFile("什么是python.pdf") # 遍歷文檔中的頁面 for i in range(doc.Pages.Count): page = doc.Pages[i] # 創(chuàng)建 PdfTextFinder 實(shí)例 finder = PdfTextFinder(page) # 查找特定文本 results = finder.Find("Python") # 遍歷找到的所有實(shí)例 for text in results: # 打印當(dāng)前實(shí)例的坐標(biāo)信息 print(f"文本坐標(biāo): ({text.Positions[0].X}, {text.Positions[0].Y})") doc.Close()
其他查找條件設(shè)置
Spire.PDF for Python還支持設(shè)置其他查找條件,如不區(qū)分大小寫或全詞匹配。具體代碼如下:
from spire.pdf.common import * from spire.pdf import * # 創(chuàng)建 PdfDocument 類的對象 doc = PdfDocument() # 加載 PDF 文件 doc.LoadFromFile("什么是python.pdf") # 遍歷文檔中的頁面 for i in range(doc.Pages.Count): page = doc.Pages[i] # 創(chuàng)建 PdfTextFinder 實(shí)例 finder = PdfTextFinder(page) # 設(shè)置文本查找條件為不區(qū)分大小寫和全詞匹配 finder.Options.Parameter = TextFindParameter.IgnoreCase finder.Options.Parameter = TextFindParameter.WholeWord # 查找特定文本 results = finder.Find("Python") # 遍歷找到的所有實(shí)例 for text in results: # 設(shè)置高亮顏色 text.HighLight(Color.get_Yellow()) # 保存結(jié)果文檔 doc.SaveToFile("其他查找條件.pdf") doc.Close()
這篇文章介紹了使用Python在PDF中查找和高亮文字的多種不同的場景,你需要根據(jù)自己的實(shí)際情況對代碼中的文檔路徑、待查找的文字、頁面區(qū)域、或正則表達(dá)式等內(nèi)容進(jìn)行相應(yīng)的修改。
以上就是使用Python實(shí)現(xiàn)在PDF中查找和高亮文字的方法的詳細(xì)內(nèi)容,更多關(guān)于Python PDF查找和高亮文字的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
pytorch/transformers?最后一層不加激活函數(shù)的原因分析
這里給大家解釋一下為什么bert模型最后都不加激活函數(shù),是因?yàn)閾p失函數(shù)選擇的原因,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-01-01Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊(duì)列的操作方法
這篇文章主要介紹了Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊(duì)列的操作方法,需要的朋友可以參考下2019-07-07Python如何實(shí)現(xiàn)xml解析并輸出到Excel上
本文介紹了如何使用Python的ElementTree模塊解析XML文件,并將解析后的數(shù)據(jù)寫入Excel文件,通過編寫XML文件、解析XML、編寫將數(shù)據(jù)寫入Excel的函數(shù),最終實(shí)現(xiàn)XML數(shù)據(jù)到Excel的轉(zhuǎn)換2025-02-02Django中ORM找出內(nèi)容不為空的數(shù)據(jù)實(shí)例
這篇文章主要介紹了Django中ORM找出內(nèi)容不為空的數(shù)據(jù)實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05