第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用python突出顯示pdf文件中的文本內(nèi)容并保存屏幕截圖

使用python突出顯示pdf文件中的文本內(nèi)容并保存屏幕截圖

慕容3067478 2022-01-11 16:39:04
我有一個(gè) pdf 文件列表,我需要在這些文件的每一頁(yè)上突出顯示特定文本,并為每個(gè)文本實(shí)例保存一個(gè)快照。到目前為止,我能夠突出顯示文本并將 pdf 文件的整個(gè)頁(yè)面保存為快照。但是,我想找到突出顯示文本的位置并放大快照,與整頁(yè)快照相比,它會(huì)更詳細(xì)。我很確定必須有解決這個(gè)問(wèn)題的方法。我是 Python 新手,因此我找不到它。如果有人能幫助我解決這個(gè)問(wèn)題,我將不勝感激。我曾嘗試使用PyPDF2,Pymupdf庫(kù),但我無(wú)法找出解決方案。我還嘗試通過(guò)提供有效的坐標(biāo)來(lái)突出顯示,但找不到將這些坐標(biāo)作為輸出的方法。[![Sample snapshot from the code[![\]\[1\]][1]][1]][1]#import PyPDF2import osimport fitzfrom wand.image import Imageimport csv#import re#from pdf2image import convert_from_pathcheck = r'C:\Users\Pradyumna.M\Desktop\Pradyumna\Automation\Intel Bytes\Create Source Docs\Sample Check 8 Apr 2019'dir1 = check + '\\Source Docs\\'dir2 = check + '\\Output\\'dir = [dir1, dir2]for x in dir:    try:        os.mkdir(x)    except FileExistsError:        print("Directory ", x, " already exists")### READ PDF FILEwith open('upload1.csv', newline='') as myfile:    reader = csv.reader(myfile)    for row in reader:        rowarray = '; '.join(row)        src = rowarray.split("; ")        file = check + '\\' + src[4] + '.pdf'        print(file)        #pdfFileObj = open(file,'rb')        #pdfReader = PyPDF2.PdfFileReader(pdfFileObj)        #print("Total number of pages: " + str(pdfReader.numPages))        doc = fitz.open(file)        print(src[5])        for i in range(int(src[5])-1, int(src[5])):            i = int(i)            page = doc[i]            print("Processing page: " + str(i))            text = src[3]            #SEARCH TEXT            print("Searching: " + text)            text_instances = page.searchFor(text)            for inst in text_instances:                highlight = page.addHighlightAnnot(inst)                file1 = check + '\\Output\\' + src[4] + '_output.pdf'
查看完整描述

1 回答

?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊

“找不到將這些坐標(biāo)作為輸出的方法” - 您可以通過(guò)以下方式獲取坐標(biāo):


for inst in text_instances:

    print(inst)

inst是fitz.Rect包含找到的文本的左上角和右下角坐標(biāo)的對(duì)象。所有信息都可以在docs 中找到。


我設(shè)法使用以下代碼片段突出顯示點(diǎn)并保存裁剪區(qū)域。我正在使用 python 3.7.1,我的輸出fitz.version是('1.14.13', '1.14.0', '20190407064320').


import fitz


doc = fitz.open("foo.pdf")

inst_counter = 0

for pi in range(doc.pageCount):

    page = doc[pi]


    text = "hello"

    text_instances = page.searchFor(text)


    five_percent_height = (page.rect.br.y - page.rect.tl.y)*0.05


    for inst in text_instances:

        inst_counter += 1

        highlight = page.addHighlightAnnot(inst)


        # define a suitable cropping box which spans the whole page 

        # and adds padding around the highlighted text

        tl_pt = fitz.Point(page.rect.tl.x, max(page.rect.tl.y, inst.tl.y - five_percent_height))

        br_pt = fitz.Point(page.rect.br.x, min(page.rect.br.y, inst.br.y + five_percent_height))

        hl_clip = fitz.Rect(tl_pt, br_pt)


        zoom_mat = fitz.Matrix(2, 2)

        pix = page.getPixmap(matrix=zoom_mat, clip = hl_clip)

        pix.writePNG(f"pg{pi}-hl{inst_counter}.png")


doc.close()

我在一個(gè)帶有“你好”的樣本 pdf 上對(duì)此進(jìn)行了測(cè)試:

http://img1.sycdn.imooc.com//61dd42f20001548d09570670.jpg

腳本的一些輸出: 

http://img1.sycdn.imooc.com//61dd430f0001af7209630172.jpg

http://img1.sycdn.imooc.com//61dd431c0001bf1209540198.jpg


查看完整回答
反對(duì) 回復(fù) 2022-01-11
  • 1 回答
  • 0 關(guān)注
  • 360 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)