簡體   English   中英

使用search_for時如何使用Python Fitz檢測連字符?

[英]How to use Python Fitz detect Hyphen when using search_for?

我是 Fitz 庫的新手,正在做一個項目,我需要在 PDF 頁面中找到一個字符串。 我遇到了一種情況,我正在搜索的頁面上的文本被連字符連接。 我知道我可以在搜索 function 時使用 TEXT_DEHYPHENATE 標志,但這對我不起作用(如圖所示https://postimg.cc/zHZPdd6v )。 當我搜索帶連字符的字符串時,我沒有遇到任何情況。

Python 腳本

LOC = "./test.pdf"

doc = fitz.open(LOC) 
page = doc[1]
print(page.get_text())
found = page.search_for("lowcost", flags=TEXT_DEHYPHENATE)
print("DONE")
print(len(found))
found = page.search_for("low-cost", flags=TEXT_DEHYPHENATE)
print("DONE")
print(len(found))
found = page.search_for("low cost", flags=TEXT_DEHYPHENATE)
print("DONE")
print(len(found))

for rect in found: 
    print(rect)

Output

Abstract 
The objective of “XXXXXXXXXXXXXXXXXX” was design and assemble a low-
cost and efficient tool.  
 
DONE
0
DONE
0
DONE
0

有人可以告訴我如何檢測文件中的連字符嗎? 謝謝!

你的第一種方法應該有效,看這里:

# insert some hyphenated text
page.insert_textbox((100,100,300,300),"The objective of 'xxx' was design and assemble a low-\ncost and efficient tool.")
157.94699853658676

# now search for it again
page.search_for("lowcost")  # 2 rectangles!
[Rect(159.3009796142578, 116.24800109863281, 175.8009796142578, 131.36199951171875),
 Rect(100.0, 132.49501037597656, 120.17399597167969, 147.6090087890625)]

# each containing a text portion with hyphen removed
for rect in page.search_for("lowcost"):
    print(page.get_textbox(rect))

    
low
cost

沒有原始文件就沒有辦法告訴你失敗的原因。 你確定真的有文字 - 而不是例如圖像或其他問題?

編輯:根據下面用戶@KJ 的評論:PyMuPDF 的 C 基礎庫 MuPDF 將所有 unicodes '-', 0xAD, 0x2010, 0x2011視為此上下文中的連字符。 他們都應該工作相同。 只是在一個例子中再次確認了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM