非常に多数の 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() 呼び出しにあるため、違いは実際には問題ではありません。
それをスピードアップするためのアイデアはありますか?