使用pymupdf-page.searchFor选择完全匹配

问题描述

下面是我的一段代码,我在其中搜索特定单词并提取其坐标。

根据文档page.searchFor()page.searchFor(needle,hit_max=16,quads=False,flags=None). 页面搜索针头。大写/小写被忽略。该字符串可能包含空格。

首先,我要精确匹配的坐标。 其次,如果选择的单词是“ inter”,还将从文档中存在的单词内部化中提取“ inter”的坐标,这与我的任务相冲突。

有什么办法可以实现相同目标吗?

doc = fitz.open(document_name)

words = ["Midpoint","CORPORATE","internalization"]

for page in doc:
  page._wrapContents()

  for word in words:
      text_instances = page.searchFor(word)

      for rect_coordinates in text_instances:
             page.addRedactAnnot(rect_coordinates,text_color = (0,0),fill = (0,0))

      page.apply_redactions()

解决方法

您可以使用 page.getText("words") 获取页面上的字词及其位置。

对我有用的解决方法是使用 page.searchFor() 获取可能匹配的位置,并基于使用此位置的较大矩形在 getText 中传递剪辑参数。然后,我使用 re 检查了 getText 中的所有单词是否匹配。

但是,您可以使用 page.getText("words") 获取所有单词并迭代所有获得的单词,因为您只需要精确的单词匹配。您也可以传递用于处理连字符的标志。请参阅doc link