在PDF文件中查找文本位置

Sim*_*dan 6 python pdf string text

我有一个PDF文件,我试图在PDF中找到特定的文本并使用Python突出显示。我找到了PyPDF2,当我们在文件中提供所需突出显示位置的坐标时,它可以突出显示PDF的一部分

我试图找到一种工具,可以给我指定文本在PDF中的位置。

Cil*_*rek 8

PyMuPDF可以按坐标查找文本。您可以将其与PyPDF2高亮方法结合使用以完成您所描述的内容。或者,您可以只使用PyMuPDF突出显示文本

这是用于使用PyMuPDF查找文本和突出显示的示例代码:

import fitz

### READ IN PDF

doc = fitz.open("input.pdf")
page = doc[0]

text = "Sample text"
text_instances = page.searchFor(text)

### HIGHLIGHT

for inst in text_instances:
    highlight = page.addHighlightAnnot(inst)


### OUTPUT

doc.save("output.pdf", garbage=4, deflate=True, clean=True)
Run Code Online (Sandbox Code Playgroud)

  • 上面的代码需要一些帮助。在 `highlight = ...` 之后添加 `highlight.update()` 另外,如果 pdf 文档有多于一页,则将 `### SEARCH` 和 `### HIGHLIGHT` 部分包装在 `for 中page in doc:` 循环并删除 `page = doc[0]`。 (3认同)
  • @keramat 32/64 位版本存在问题。您需要安装较低版本的PyMuPDF。pip install PyMuPDF==1.16.7 有效,但默认版本和最新版本无效请查看此处以获取更多信息;https://github.com/pymupdf/PyMuPDF/issues/414 (2认同)

小智 5

在新版本的 PyMuPDF 中,一些方法被弃用了。这是最新版本的示例代码。其次,我还为每个亮点添加了注释,以方便用户横向查看。

pdfIn = fitz.open("page-4.pdf")

for page in pdfIn:
    print(page)
    texts = ["SEPA", "voorstelnummer"]
    text_instances = [page.search_for(text) for text in texts] 
    
    # coordinates of each word found in PDF-page
    print(text_instances)  

    # iterate through each instance for highlighting
    for inst in text_instances:
        annot = page.add_highlight_annot(inst)
        # annot = page.add_rect_annot(inst)
        
        ## Adding comment to the highlighted text
        info = annot.info
        info["title"] = "word_diffs"
        info["content"] = "diffs"
        annot.set_info(info)
        annot.update()


# Saving the PDF Output
pdfIn.save("page-4_output.pdf")

Run Code Online (Sandbox Code Playgroud)