Python pdftotext ShellError使用textract

时间:2015-04-08 17:01:39

标签: python pdf text-extraction

当我在包含PDF文件的目录上运行以下Python脚本时,我不断收到此错误:

  

ShellError:命令pdftotext "path/to/pdf/title.pdf" -失败,退出代码为1   ------------- stdout -------------   ------------- stderr -------------   “pdftotext”未被识别为内部或外部命令,   可操作程序或批处理文件。

我已验证pdf2text和PDFMiner已正确安装。这是我第一次使用textract,它适用于所有其他文件类型(Word文档,PowerPoint文档,Excel文档等)。当pdftotext是实际库时,为什么流程会调用pdf2text

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

谢谢!

2 个答案:

答案 0 :(得分:2)

我自己刚刚完成了这个问题的处理。根据我的理解,令人困惑的是pdftotext是一个在linux中很流行的命令实用程序,而pdf2text是PDFMiner包的包装器。我的poppler和pdftotext的windows二进制文件来自archive.org链接,所以我感觉不能在这里链接到它,但here's a link我在维基百科页面上找到了一个windows二进制文件。从我的能力来看,pdftotext往往比pdfMiner提供更好的输出。我遇到的问题是产生了你收到的同样错误是pdftotext.exe已安装,并且在我的路径中,但如果我没有通过cmdline启动python脚本,我会收到错误。

如果你最终下载它,它附带一些其他很好的实用程序,如pdftohtml和pdftops。个人最喜欢的是pdftotext -layout whatever.txt,它会将pdf打印到stdout作为明文,一切就绪。

tl; dr 尝试运行打开cmdline并运行该程序。如果您仍然可以尝试(1)安装Windows二进制文件(假设您在Windows上)或(2)尝试使用

更新textract
pip install textract --upgrade

希望这有帮助!

答案 1 :(得分:0)

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

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

但是您应该安装libreoffice。