【发布时间】:2014-12-15 09:38:24
【问题描述】:
我正在使用 Python pdfminer library 从 PDF 中提取文本和图像。由于TextConverter class 默认写入sys.stdout,因此我使用StringIO 将文本作为变量捕获,如下所示(参见粘贴:
def extractTextAndImagesFromPDF(rawFile):
laparams = LAParams()
imagewriter = ImageWriter('extractedImageFolder/')
resourceManager = PDFResourceManager(caching=True)
outfp = StringIO() # Use StringIO to catch the output later.
device = TextConverter(resourceManager, outfp, codec='utf-8', laparams=laparams, imagewriter=imagewriter)
interpreter = PDFPageInterpreter(resourceManager, device)
for page in PDFPage.get_pages(rawFile, set(), maxpages=0, caching=True, check_extractable=True):
interpreter.process_page(page)
device.close()
extractedText = outfp.getvalue() # Get the text from the StringIO
outfp.close()
return extractedText
这适用于提取的文本。此功能还可以提取 PDF 中的图像并将它们写入'extractedImageFolder/'。这也可以,但我现在希望将图像“写入”文件对象而不是文件系统,以便我可以对它们进行一些后期处理。
ImageWriter class 定义一个文件 (fp = file(path, 'wb')),然后写入该文件。我想要的是我的extractTextAndImagesFromPDF() 函数也可以返回文件对象列表,而不是直接将它们写入文件。我想我还需要为此使用StringIO,但我不知道该怎么做。部分还因为写入文件是在 pdfminer 中进行的。
有人知道如何返回文件对象列表而不是将图像写入文件系统吗?欢迎所有提示!
【问题讨论】:
标签: python pdf io stream pdfminer