如何使用python将pdf复制并粘贴到文本中获得相同的结果?

时间:2015-11-09 23:01:31

标签: python pdf text copy-paste

当我使用ctrl + a,ctrl + c,ctrl + v将pdf文档复制并粘贴到文本文件中时,我得到的结果如下 this

但是当我使用pdfminer和下面的代码时,我得到this

from cStringIO import StringIO
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage

*....*

def scrub(self):
    text = self.convert(self.inFile)
    with open(self.WBOutputFile, "w") as WBOut:
        WBOut.write(text)

#code from Tim Arnold at https://www.binpress.com/tutorial/manipulating-pdfs-with-python/167
def convert(self, fname):
    pagenums = set()

    output = StringIO()
    manager = PDFResourceManager()
    converter = TextConverter(manager, output, laparams=LAParams())
    interpreter = PDFPageInterpreter(manager, converter)

    infile = file(fname, 'rb')
    for page in PDFPage.get_pages(infile, pagenums):
        interpreter.process_page(page)
    infile.close()
    converter.close()
    text = output.getvalue()
    output.close
    return text

*....*

代码比手动操作需要几秒钟,但我想将这个pdf自动化为文本处理,因为我有很多文档。有没有办法得到类似的结果(在速度和格式方面)与复制和粘贴类似?我使用chrome作为我的pdf查看器,使用sublime文本作为我的文本编辑器,使用windows 8作为我的操作系统。

我正在使用来自http:// www的pdf。 supremecourt.gov/oral_arguments/argument_transcripts/14-8349_n648 .pdf

1 个答案:

答案 0 :(得分:2)

尝试将laparams中的char_margin设置为50。

laparams=LAParams()
laparams.char_margin = float(50)
converter = TextConverter(manager, output, laparams=laparams)
interpreter = PDFPageInterpreter(manager, converter)