Python 3.7.5
操作系统:Windows Server 2016
Ghostscript版本:9.5
我正在尝试使用Ghostscript对目录中的多个PDF进行文本提取。该目录当前包含2个PDF:1234.pdf和5678.pdf。
sudo apt install hfsprogs
# HFS file system consistency check, use fdisk -l to find your disk indetifier
sudo fsck.hfsplus /dev/sda2
我遇到的问题是,处理第一个PDF不会出现问题,但是尝试处理第二个PDF总是会导致Python阻塞。我注意到即使从Python控制台进行文本提取也遇到此错误。我可以提取第二个文件的唯一方法是退出Python并重新启动它。
我已经重命名了文件,所以第二个PDF首先得到处理。该PDF可以毫无问题地处理,现在成功处理的第二个PDF现在会引发致命错误。我尝试过将args列表和编码变量重新设置为零,然后调用ghostscript中不存在的方法,例如.quit()或.exit()。我确实看到了一篇帖子,其中提到exit方法在 init 中被注释掉了。我删除了评论,但没有成功。
import os
import sys
def pdf2txt(directory,file):
import locale
import ghostscript
args=[file,"-dBATCH","-dNOPAUSE","-dNOPROMPT","-sDEVICE=txtwrite","-sOutputFile="+directory+"\\output\\"+file+"-%d.txt",directory+"\\"+file]
encoding=locale.getpreferredencoding()
args=[a.encode(encoding) for a in args]
print (args)
ghostscript.Ghostscript(*args)
directory=sys.argv[1]
files=os.listdir(directory)
for file in files:
print("Trying "+directory+"\\"+file)
pdf2txt(directory,file)
答案 0 :(得分:0)
我今天遇到了同样的问题,发现应该ghostscript.Ghostscript
块中调用with
。另外,在创建新的ghostscript.Ghostscript
实例之前,我必须调用ghostscript.cleanup()
。
尝试一下:
import os
import sys
def pdf2txt(directory,file):
import locale
import ghostscript
args=[file,"-dBATCH","-dNOPAUSE","-dNOPROMPT","-sDEVICE=txtwrite","-sOutputFile="+directory+"\\output\\"+file+"-%d.txt",directory+"\\"+file]
encoding=locale.getpreferredencoding()
args=[a.encode(encoding) for a in args]
print (args)
with ghostscript.Ghostscript(*args) as g:
ghostscript.cleanup()
directory=sys.argv[1]
files=os.listdir(directory)
for file in files:
print("Trying "+directory+"\\"+file)
pdf2txt(directory,file)