pytesseract 在 PDF 上的速度性能(与 python 中现有的 pdf-ocr 库相比)

问题描述 投票:0回答:0

我是 OCR 项目的初学者,目前正在研究 python 中的不同方法以获取 pdf 中的 OCR 文本。

一种简单而流行的方法似乎是先将 pdf 文件转换为 png / jpg 的 pytesseract 库。 我也尝试启用 pdf ocr 功能的库,例如 pymupdf (fitz)

令人惊讶的是,我发现与 pytesseract 相比,它实现了更高的速度(快约 2 倍),即使它也使用 tesseract 引擎来完成 OCR 任务:Doc。 没有详细检查库中的代码(由于复杂性),我不确定造成巨大差异的主要原因。我想这与图像输入格式有关? (因为 Tesseract 使用 Leptonica 库来处理输入图像?)

我更喜欢使用 pytesseract 库,因为它支持预处理/置信度阈值,我相信应该有进一步提高其性能的方法。 谁能建议任何加速我的 pytesseract 代码的方法?

我的速度测试代码:

import pdf2image
import io
import time
import cv2
import numpy as np
import pytesseract as pt
import fitz
import os

directory = "../testpdf"
FILE_LIST = [
    os.path.join(directory, f) for f in os.listdir(directory) if f.endswith(".pdf")
]

fitz_time = []
pt_time = []


def fitz_ocr():
    doc = fitz.open(file_path)

    for page_index, page in enumerate(doc):
        tp = page.get_textpage_ocr(
            flags=0,
            full=True,
            dpi=300,
        )
        dict = page.get_text("dict", textpage=tp)


def pt_ocr():
    pages = pdf2image.convert_from_path(file_path, dpi=300, grayscale=True)
    for page_index, page in enumerate(pages):
        in_mem_file = io.BytesIO()
        page.save(in_mem_file, format="png")
        in_mem_file.seek(0)
        img_origin = cv2.imdecode(np.frombuffer(in_mem_file.read(), np.uint8), 1)

        text = pt.image_to_data(
            img_origin,
            config=r"-l eng --psm 6",
        )


for file_path in FILE_LIST:
    st = time.time()
    fitz_ocr()
    done_time = time.time() - st
    print(f"fitz: {done_time}", end=" ")
    fitz_time.append(done_time)

    st = time.time()
    pt_ocr()
    done_time = time.time() - st
    pt_time.append(done_time)

    print(f"pt: {done_time}")

print(f"avg fitz: {sum(fitz_time)/len(fitz_time)}, avg pt: {sum(pt_time)/len(pt_time)}")

及其在我本地机器中的结果

fitz: 1.113755464553833 pt: 2.4535179138183594
fitz: 6.783350229263306 pt: 18.1472225189209
fitz: 1.1973145008087158 pt: 2.1595921516418457
fitz: 1.1768627166748047 pt: 2.162658452987671
fitz: 1.1746160984039307 pt: 2.0023140907287598
fitz: 3.0561563968658447 pt: 6.202923536300659
fitz: 1.1177668571472168 pt: 2.0603621006011963
fitz: 1.3792881965637207 pt: 2.8750576972961426
fitz: 3.2603485584259033 pt: 7.149296760559082
fitz: 0.8049216270446777 pt: 1.6897962093353271

avg fitz: 2.1064380645751952, avg pt: 4.6902741432189945
pdf ocr tesseract python-tesseract pymupdf
© www.soinside.com 2019 - 2024. All rights reserved.