使用多处理并行运行多个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
和退出完成其工作之前。您需要致电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)))
不,不工作,要么。其实,这个问题是不是与过程本身的Tesseract关闭问题:即使我启动它独自我有我的CPU running.Normally的300%的PDF页面它需要10s。现在它不停地运行 – hamma
你有没有尝试通过'subprocess'调用它本身,而没有进程'Pool'? – noxdafox
我不认为有任何解决我的问题:我同时启动了2个tesseract(从pdf中提取文本),甚至从2个独立的终端我没有得到任何结果。 – hamma