2013-04-21 24 views
1

我正在研究一個涉及OCR大量PDF的項目。每個PDF都是正常的辦公型文檔的圖像。每個PDF頁面都存儲一個單獨的文件。有沒有辦法比我現在的方法更快地完成這項工作(即計算時間更短)?高效的OCR微調

對於這樣一個規模的項目,任何小的性能改進都會大大降低計算成本/時間。目前,對Tesseract的呼叫需要比項目中所有其他處理步驟多出2-3個數量級的時間。

對於每個文件(page.pdf),我首先將它轉換爲Tiff(image.tiff),就像這樣。爲了清晰起見,我從此電話中剝離了Python。

ghostscript -o image.tiff -q -r300x300 -sCompression=none -sDEVICE=tiffgray page.pdf 

然後,我基本上運行以下過程。

def ocr(image): 
    import tesseract, cv2.cv as cv 

    # Load Tesseract 
    api = tesseract.TessBaseAPI() 
    api.Init(".","eng",tesseract.OEM_DEFAULT) 
    api.SetPageSegMode(tesseract.PSM_AUTO) 

    # Load and OCR the image file 
    cv_image = cv.LoadImage(image, cv.CV_LOAD_IMAGE_GRAYSCALE) 
    tesseract.SetCvImage(cv_image, api) 

    # Return the text 
    return api.GetUTF8Text() 

爲簡明起見,我簡化了一下。例如,我實際上並沒有爲每個文件分別加載Tesseract。我處理異常等。但是,差異並不重要,因爲使用時間的99.9%在api.GetUTF8Text()調用中。

任何想法加快它?

回答

0

如果在多核CPU上,最好的方法是將其並行化。

查看更多信息,請點擊http://wiki.python.org/moin/ParallelProcessing

+0

感謝您的回覆。但是,我已經將整個過程並行化了。我在雲中運行這個過程,因此每個pdf文件都有一臺獨立的機器。我一次運行大約100個內核。 – beerslayer 2013-04-21 23:22:25