Python 使用多处理并行运行多个tesseract实例,不返回任何结果

Python 使用多处理并行运行多个tesseract实例,不返回任何结果,python,multiprocessing,tesseract,Python,Multiprocessing,Tesseract,我正在编写一个python脚本,其中使用多进程库并行启动多个tesseract实例。 当我使用多个对tesseract的调用,但使用循环按顺序调用时,它是有效的。然而,当我尝试并行编码时,一切看起来都很好,但我没有得到任何结果(我等待了10分钟) 在我的代码中,当我将多页pdf从原始的多页pdf中拆分出来后,我尝试对多页pdf进行Ocrize 这是我的密码: def processPage(i): nameJPG="converted-"+str(i)+".jpg" nam

我正在编写一个python脚本,其中使用多进程库并行启动多个tesseract实例。 当我使用多个对tesseract的调用,但使用循环按顺序调用时,它是有效的。然而,当我尝试并行编码时,一切看起来都很好,但我没有得到任何结果(我等待了10分钟)

在我的代码中,当我将多页pdf从原始的多页pdf中拆分出来后,我尝试对多页pdf进行Ocrize

这是我的密码:

def processPage(i):



    nameJPG="converted-"+str(i)+".jpg"
    nameHocr="converted-"+str(i)
    p=subprocess.check_call(["tesseract",nameJPG,nameHocr,"-l","eng","hocr"])
    print "tesseract did the job for the ",str(i+1),"page" 

pool1=Pool(4)
    pool1.map(processPage, range(len(pdf.pages)))

您的代码正在启动
,并在完成其作业之前退出。您需要调用
close
join

pool1=Pool(4)
pool1.map(processPage, range(len(pdf.pages)))
pool1.close()
pool1.join()
或者,您可以等待其结果

pool1=Pool(4)
print pool1.map(processPage, range(len(pdf.pages)))

据我所知,如果您有quadcore并且同时运行4个进程,那么PyteSeract将不允许多个进程,而tesseract将被阻塞,并且您将有高cpu使用率和其他问题,如果您需要这一点,并且您不想使用google vision api,那么您必须设置多个服务器并执行套接字编程从不同的服务器请求文本,使并行进程的数量小于服务器同时运行不同进程的能力,就像四核一样,它应该是2或3 或者你可以点击谷歌视觉api,他们有很多服务器,输出也很好 通过在环境中设置OMP_THREAD_LIMIT=1,在tesseract中禁用多处理也将有助于实现这一点。但您不能在同一台服务器上为tesseract运行多个进程


不,也不行。事实上,问题不在于进程关闭了TeserAct本身的问题:即使我单独启动它,我也有300%的cpu在运行。通常pdf页面需要10秒。现在它一直在运行而不停止。你有没有尝试在没有进程
的情况下通过
子进程
本身调用它?我认为我的问题没有任何解决方案问题:我同时启动了2个tesseract(从pdf中提取文本),甚至从2个独立的终端也没有得到任何结果。tesseract支持多线程和多处理,我在多个进程中广泛使用它。因此,在您执行它的方式或您的环境中可能存在一些问题。我使用的是tesseract 4和ubuntu 16.04