当我使用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
答案 0 :(得分:2)
尝试将laparams中的char_margin设置为50。
即
laparams=LAParams()
laparams.char_margin = float(50)
converter = TextConverter(manager, output, laparams=laparams)
interpreter = PDFPageInterpreter(manager, converter)