Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PDFminer跳过行或错误放置字符串行_Python_File_File Io_Io_Pdfminer - Fatal编程技术网

Python PDFminer跳过行或错误放置字符串行

Python PDFminer跳过行或错误放置字符串行,python,file,file-io,io,pdfminer,Python,File,File Io,Io,Pdfminer,我开发了一个读取PDF文件的程序,但我注意到我用来读取PDF文件的工具(PDFminer)似乎把文本放错了地方,或者根本就没有放。 输出似乎非常清晰和准确。它尊重间距和换行,因此输出看起来更像原始PDF。但是,它似乎跳过了一些行(在我检查的文件中发生过一次)和错位行(在一个文档中发生过两次,错位行的模式是其他10行,那么为什么只在这两行中发生呢?) 检索行的代码如下所示: def extract(fname,docPage): pages=[docPage,docPage] pa

我开发了一个读取PDF文件的程序,但我注意到我用来读取PDF文件的工具(PDFminer)似乎把文本放错了地方,或者根本就没有放。 输出似乎非常清晰和准确。它尊重间距和换行,因此输出看起来更像原始PDF。但是,它似乎跳过了一些行(在我检查的文件中发生过一次)和错位行(在一个文档中发生过两次,错位行的模式是其他10行,那么为什么只在这两行中发生呢?)

检索行的代码如下所示:

def extract(fname,docPage):
    pages=[docPage,docPage]
    pagenums = set(pages)

    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().decode("utf8")
output.close

return text
有什么想法吗?还是有人面临过这个问题?我已经研究过这个问题,但没有结果。也许使用任何其他工具(如pyPdf2)的方法

可移植文档格式(pdf)没有结构化的数据。如果从pdf中提取数据的代码遵循特定格式,则任何从pdf中提取数据的代码都会失败。使用任何一个库,结果都会导致灾难。所以你需要硬编码一些东西。在这种情况下使用调试器。您可以在这里检查我的答案,它将数据转换为xml,从那里您可以理解为什么缺少一些行。