繁体   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