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()調用中。
任何想法加快它?
感謝您的回覆。但是,我已經將整個過程並行化了。我在雲中運行這個過程,因此每個pdf文件都有一臺獨立的機器。我一次運行大約100個內核。 – beerslayer 2013-04-21 23:22:25