高效的OCR微调

时间:2013-04-21 22:22:47

标签: python opencv ocr tesseract

我正在开发一个涉及对大量PDF进行OCR的项目。每个PDF都是普通办公室类型文档的图像。每个PDF页面都存储在一个单独的文件中。有没有办法比我目前的方法更快地(即计算时间更短)做到这一点?

对于这样规模的项目,任何小的性能改进都会大大降低计算成本/时间。目前,对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()调用中。

有什么想法加快速度吗?

1 个答案:

答案 0 :(得分:0)

如果是在多核CPU上,最好的办法是将其并行化。

请查看http://wiki.python.org/moin/ParallelProcessing之类的内容以获取更多信息。