处理多个文件时,Ghostscript中出现致命错误

时间:2019-12-12 00:10:09

标签: python ghostscript

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)

1 个答案:

答案 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)
相关问题