【问题标题】:Keep Layout of extracted text in pdfminer.six python在pdfminer.six python中保留提取文本的布局
【发布时间】:2018-04-08 21:01:59
【问题描述】:

我要提取这个pdf的文本:https://github.com/pdfminer/pdfminer.six/files/1887670/Wochenkarte-KW-15-Neu.pdf

当我使用此代码提取文本时:

def convert_pdf_to_txt(path):
    resource_manager = PDFResourceManager()
    device = None
    try:
        with StringIO() as string_writer, open(path, 'rb') as pdf_file:
            device = TextConverter(resource_manager, string_writer, codec='utf-8', laparams=LAParams())
            interpreter = PDFPageInterpreter(resource_manager, device)

            for page in PDFPage.get_pages(pdf_file, maxpages=1):
                interpreter.process_page(page)

            pdf_text = string_writer.getvalue()
    finally:
        if device:
            device.close()
    return pdf_text

文本与 pdf 的文本布局不对应。 当前结果:

Montag 09.04.2018 
Menü 1 

Kl. Salat 


Menü 2 

Kl. Salat 

Seelachs-Spinat-Türmchen mit Spinat-
Masalla-Sauce und Reis 
Currywurst mit Pommes 

预期结果:

Montag 09.04.2018 
Menü 1 

Kl. Salat Seelachs-Spinat-Türmchen mit Spinat-Masalla-Sauce und Reis 

Menü 2 

Kl. Salat Currywurst mit Pommes 

我做错了什么还是我错过了什么?

【问题讨论】:

  • 我认为您只是在这里遇到了 PDF 的属性。 PDF 没有真正的布局,它只是页面上的一堆单词。 PDF 提取器会尽力从中猜测布局,但通常无法
  • 我能以某种方式影响 pdfminer 的“猜测”吗?例如,如果我使用网站 pdftotext.com 一切看起来都很好。

标签: python python-3.x pdf text pdfminer


【解决方案1】:

关键是在LAParams中给出另一个linemargin:

LAParams(line_margin=0.1)

我的线路现在看起来像这样:

device = TextConverter(resource_manager, string_writer, codec='utf-8', laparams=LAParams(line_margin=0.1))

感谢Tim

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 2012-04-08
    • 2018-06-13
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多