当我在包含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
谢谢!
解决方法:
我自己完成了这个问题.据我所知,令人困惑的是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
希望这有帮助!
标签:python,pdf,text-extraction