2017-06-20 22 views
0

私は複数のtesseractインスタンスを並列に起動するためにmultiproccesingライブラリを使用するPythonスクリプトを作成しています。 私はtesseractへの複数の呼び出しを使用するが、ループを使用してシーケンスで動作します。ただし、すべてのコードを並列化しようとするとうまく見えますが、結果が得られません(10分間待っています)。複数のtesseractインスタンスを並列処理して、結果を返さないマルチプロセスを使用しています

私のコードでは、元の複数ページの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))) 

答えて

0

あなたのコードは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

いや、どちらか.INの事実を動作しません、問題がたTesseract自体に問題を閉じる過程ではない:私は一人でそれを起動した場合でも、私は、PDFのページに対してrunning.Normally私のCPUの300%を持っていますそれは10秒かかる。今は停止せずに実行し続ける – hamma

+0

'Pool'プロセスなしで' subprocess'自身を介してそれを呼び出そうとしましたか? – noxdafox

+0

私の問題には解決策はないと思います。私は2つの別々の端末からでも2つのtesseract(pdfからテキストを抽出する)を起動しました。結果は得られません。 – hamma

関連する問題