使用 PyMUPDF 提取文本,重点关注粗体/斜体字体

问题描述 投票:0回答:1

我正在尝试使用 PyMUPDF 1.18.14 从 PDF 中提取粗体文本元素。我希望这能按照我从文档中了解到的那样工作,

flags=4
针对粗体字体。

page = doc[1]
text = page.get_text(flags=4)
print(text)

但它会打印页面上的所有文本,而不仅仅是粗体文本。

像这样使用

TextPage.extractDICT() (or Page.get_text(“dict”))
时:-

page.get_text("dict", flags=11)["blocks"]

该标志可以工作,但我无法理解它在做什么。也许可以在图像和文本块之间切换。

跨度

所以看来你必须到达

span
才能访问标志。

<page>
    <text block>
        <line>
            <span>
                <char>
    <image block>
        <img>

所以你可以做这样的事情,我在span标签上使用

flags=20
来获得粗体字体。

page = doc[1]
blocks = page.get_text("dict", flags=11)["blocks"]
for b in blocks:  # iterate through the text blocks
    for l in b["lines"]:  # iterate through the text lines
        for s in l["spans"]:  # iterate through the text spans
            if s["flags"] == 20:  # 20 targets bold
                print(s)

但这似乎还很遥远。

所以我的问题是这是找到大胆元素的最佳方式还是我遗漏了什么?

如果能够使用

page.search_for()

搜索粗体元素那就太好了
python python-3.x search bold pymupdf
1个回答
0
投票

我也尝试从pdf中提取粗体文本,我尝试了你的代码,我发现在某些pdf中,粗体文本的标志值可能并不总是20,而是我发现的标志值是16。我可能会感到困惑pymupdf 对我来说是新的。

© www.soinside.com 2019 - 2024. All rights reserved.