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

问题描述:

我正在编写一个python脚本,我在其中使用multiproccesing库并行地启动多个tesseract实例。 当我使用多个调用tesseract但顺序使用循环,它的工作。但是,当我尝试并行代码一切看起来不错,但我没有得到任何结果(我等了10分钟)。使用多处理并行运行多个tesseract实例不返回任何结果

在我的代码中,我尝试从原始多页PDF中分离出多个pdf页面。

这里是我的代码:

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))) 

您的代码正在发起一项Pool和退出完成其工作之前。您需要致电closejoin

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))) 
+0

不,不工作,要么。其实,这个问题是不是与过程本身的Tesseract关闭问题:即使我启动它独自我有我的CPU running.Normally的300%的PDF页面它需要10s。现在它不停地运行 – hamma

+0

你有没有尝试通过'subprocess'调用它本身,而没有进程'Pool'? – noxdafox

+0

我不认为有任何解决我的问题:我同时启动了2个tesseract(从pdf中提取文本),甚至从2个独立的终端我没有得到任何结果。 – hamma