3

pdfrw可以从文档中提取文本吗?

我在想一些事情

from pdfrw import PdfReader
doc = PdfReader(pdf_path)
page_texts = []
for page_nr in doc.numPages:
    page_texts.append(doc.getPage(page_nr).parse_page())  # ..or something
4

3 回答 3

2

取决于将哪些过滤器应用于page.Contents.stream. 如果它只是 FlateDecode 你可以pdfrw.uncompress.uncompress([page.Contents])用来解码它。

注意:将列表中的整个 Contents 对象提供给函数

注意:这不一样pdfrw.PdfReader.uncompress()

然后你必须解析字符串来找到你的文本。它将位于圆括号内以“TJ”或“Tj”结尾的行上的 BT(开始文本)和 ET(结束文本)标记之间的行块中。

于 2019-01-31T10:56:32.103 回答
2

文档中解释了如何提取文本。但是,它只是一个字节流。您可以遍历页面并单独解码它们。

from pdfrw import PdfReader
doc = PdfReader(pdf_path)
for page in doc.pages:
    bytestream = page.Contents.stream # This is a string with bytes, Not a bytestring
    string = #somehow decode bytestream. Maybe using zlib.decompress
    # do something with that text

编辑:根据作者pdfrw的说法,由于其复杂性,尚不支持文本解压缩 可能一文不值。

于 2018-04-22T09:18:52.443 回答
-2

这是一个可能有用的示例:

for pg_num in range(number_of_pages):

    pg_obj = pdfreader.getPage(pg_num)

    print(pg_num)

    if re.search(r'CSE', pg_obj.extractText()):
        cse_count+= 1
        pdfwriter.addPage(pg_obj)

这里extractText()将提取包含关键字 CSE 的页面文本

于 2017-03-17T14:36:53.157 回答