使用tex的Python pdftotext ShellError

2024-05-20 18:46:33 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在包含PDF文件的目录上运行下面的Python脚本时,我会一直收到以下错误:

ShellError: The command pdftotext "path/to/pdf/title.pdf" - failed with exit code 1 ------------- stdout ------------- ------------- stderr ------------- 'pdftotext' is not recognized as an internal or external command, operable program or batch file.

我已经确认pdf2text和PDFMiner安装正确。这是我第一次使用textract,它对所有其他文件类型(Word文档、PowerPoint文档、Excel文档等)都非常有效。当pdf2text是实际的库时,进程为什么要调用pdftotext

import os
import os.path
import textract

pdf_path = 'path/to/pdf/'

for fname in os.listdir(pdf_path):
    if os.path.isfile(pdf_path+fname ):
        f = textract.process(pdf_path+fname )
        if 'string' in f:
            print fname

谢谢!


Tags: ortopathin文档importifpdf
2条回答

我自己刚处理完这个问题。据我所知,困惑在于pdftotext是linux中流行的命令实用程序,而pdf2text是PDFMiner包的包装器。我的windows poppler和pdftotext二进制文件来自一个archive.org链接,所以我觉得这里的链接不对,但是here's a link我在wikipedia页面上找到了一个windows二进制文件。据我所知,pdftotext往往比pdfMiner提供更好的输出。我遇到的问题是,生成的错误与您收到的错误相同,即pdftotext.exe已安装,并且位于我的路径中,但是如果我不通过命令行启动python脚本,则会收到错误。

如果你最终下载了它,它会附带一些其他的好工具,比如pdftohtml和pdftops。不过,个人最喜欢的是pdftotext -layout whatever.txt,它将把pdf打印成纯文本,并将所有内容都打印到位。

tl;dr尝试运行打开命令行并运行程序。如果您仍然可以尝试(1)安装windows二进制文件(假设您在windows上)或(2)尝试用更新textract

pip install textract --upgrade

希望能帮上忙!

尝试在代码中实现此代码。

import subprocess
subprocess.call(['soffice', '--headless',
            '--convert-to', 'odt', filename])
filename = os.path.splitext(filename)[0] + str('.odt')

但你应该安装libreoffice。

相关问题 更多 >