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

使用Python實(shí)現(xiàn)在PDF中查找和高亮文字的方法

 更新時(shí)間:2025年07月25日 11:05:15   作者:nuclear2011  
在日常工作和學(xué)習(xí)中,我們常常需要處理各種PDF文件,其中對文字內(nèi)容進(jìn)行查找和高亮是非常常見的需求,本文將探討如何使用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].XPdfTextFragment.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ù)的原因分析

    pytorch/transformers?最后一層不加激活函數(shù)的原因分析

    這里給大家解釋一下為什么bert模型最后都不加激活函數(shù),是因?yàn)閾p失函數(shù)選擇的原因,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-01-01
  • Linux重裝miniconda的方法步驟

    Linux重裝miniconda的方法步驟

    在Linux系統(tǒng)中,使用miniconda可以方便的進(jìn)行軟件的安裝和環(huán)境配置,本文就來介紹一下Linux重裝miniconda的方法步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Python pandas之多級索引取值詳解

    Python pandas之多級索引取值詳解

    這篇文章主要為大家介紹了Python pandas之多級索引取值,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • pytest接口自動(dòng)化測試框架搭建的全過程

    pytest接口自動(dòng)化測試框架搭建的全過程

    pytest是Python的一種單元測試框架,可用來組織用例執(zhí)行,用例斷言,下面這篇文章主要給大家介紹了關(guān)于pytest接口自動(dòng)化測試框架搭建的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 基于python爬取有道翻譯過程圖解

    基于python爬取有道翻譯過程圖解

    這篇文章主要介紹了基于python爬取有道翻譯過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Django中間件攔截未登錄url實(shí)例詳解

    Django中間件攔截未登錄url實(shí)例詳解

    在本篇文章里小編給各位整理了關(guān)于Django中間件攔截未登錄url的實(shí)例內(nèi)容以及相關(guān)知識點(diǎn),有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊(duì)列的操作方法

    Python 實(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-07
  • Python如何實(shí)現(xiàn)xml解析并輸出到Excel上

    Python如何實(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-02
  • Django中ORM找出內(nèi)容不為空的數(shù)據(jù)實(shí)例

    Django中ORM找出內(nèi)容不為空的數(shù)據(jù)實(shí)例

    這篇文章主要介紹了Django中ORM找出內(nèi)容不為空的數(shù)據(jù)實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Django視圖擴(kuò)展類知識點(diǎn)詳解

    Django視圖擴(kuò)展類知識點(diǎn)詳解

    這篇文章主要介紹了Django視圖擴(kuò)展類知識點(diǎn)以及實(shí)例代碼,需要的朋友們可以學(xué)習(xí)下。
    2019-10-10

最新評論