使用标志提取文本以使用 PyMUPDF

问题描述

我正在尝试使用 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>

enter image description here

所以你可以做这样的事情,我在 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()

搜索粗体元素会很棒

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...