当我在包含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
谢谢!
答案 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)尝试使用
更新textractpip install textract --upgrade
希望这有帮助!
答案 1 :(得分:0)
尝试在您的代码中实现此代码。
import subprocess
subprocess.call(['soffice', '--headless',
'--convert-to', 'odt', filename])
filename = os.path.splitext(filename)[0] + str('.odt')
但是您应该安装libreoffice。