如何使用pdfrw提取PDF文本

时间:2017-02-07 11:07:52

标签: python-3.5 pdfrw

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

3 个答案:

答案 0 :(得分:1)

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

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根据author的复杂性,grpc尚不支持文本解压缩,可能毫无价值。

答案 1 :(得分:0)

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

注意:将列表中的整个Contents对象赋予该函数

注意:这与pdfrw.PdfReader.uncompress()

不同

然后,您必须解析字符串以查找您的文本。这将是被中和ET(端文本)对任一“TJ”或“TJ”轮括号内结束行标记BT之间的线(开始文本)的块。

答案 2 :(得分:-1)

以下是一个可能有用的示例:

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

的网页文本