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
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
取决于将哪些过滤器应用于page.Contents.stream
. 如果它只是 FlateDecode 你可以pdfrw.uncompress.uncompress([page.Contents])
用来解码它。
注意:将列表中的整个 Contents 对象提供给函数
注意:这不一样pdfrw.PdfReader.uncompress()
然后你必须解析字符串来找到你的文本。它将位于圆括号内以“TJ”或“Tj”结尾的行上的 BT(开始文本)和 ET(结束文本)标记之间的行块中。
在文档中解释了如何提取文本。但是,它只是一个字节流。您可以遍历页面并单独解码它们。
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
的说法,由于其复杂性,尚不支持文本解压缩
可能一文不值。
这是一个可能有用的示例:
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 的页面文本