【问题标题】:How to use pdfminer.six's pdf2txt.py in python script and outside command line?如何在 python 脚本和外部命令行中使用 pdfminer.six 的 pdf2txt.py?
【发布时间】:2018-09-20 01:31:29
【问题描述】:

我知道如何在命令行中使用 pdfminer.six 的 pdf2txt.py 工具;但是,我有许多 PDF 文件要转换为 txt 文件,而且我不能在命令行中一一进行。我还没有找到如何在实际的 python 脚本中使用这个工具。有什么想法吗?

【问题讨论】:

  • 我们不能在这里使用 subprocess.run() 吗?

标签: python python-3.x python-3.6 pdfminer


【解决方案1】:

好消息是您可以使用 PDFMiner 库重新创建您可能在命令行上使用 pdf2text 运行的任何属性/命令。下面是我使用的一个基本示例:

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import BytesIO

def pdf_to_text(path):
    manager = PDFResourceManager()
    retstr = BytesIO()
    layout = LAParams(all_texts=True)
    device = TextConverter(manager, retstr, laparams=layout)
    filepath = open(path, 'rb')
    interpreter = PDFPageInterpreter(manager, device)

    for page in PDFPage.get_pages(filepath, check_extractable=True):
        interpreter.process_page(page)

    text = retstr.getvalue()

    filepath.close()
    device.close()
    retstr.close()
    return text


if __name__ == "__main__":
    text = pdf_to_text("yourfile.pdf")
    print(text)

如果您需要应用页码或密码,这些是 PDFPage.get_pages 中的可选参数。同样,如果您需要进行布局更改,例如全文本或边距大小,LAParams 初始化程序也有可选属性

【讨论】:

  • 谢谢!请问你这些都是哪里来的?官方文档和github好像没有关于这些的说明
  • 当然,这主要是从他们在此 API 页面上提供的一些示例中剥离出来的:pdfminer-docs.readthedocs.io/programming.html。至于很多自定义属性,我也找不到太多。我不得不查看 Lib\site-packages\pdfminer 中的 layout.py 和 pdfpage.py 文件,以获取在启动这些对象时可以调用的不同参数。
  • 我现在用 Python3 尝试了这个并且得到了一个错误:TypeError: a bytes-like object is required, not 'str'。我可以通过用 StringIO 替换 ByteIO 来修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多