如何获取用Python裁剪的图像的dpi? Tesseract --dpi 参数

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

我的代码打开一个 pdf,将第一页转换为图像,然后通过坐标从该图像中剪切出矩形,并使用 Tesseract 从每个剪切的矩形中提取文本。

我发现,在某些情况下,对于较大的图像,OCR 的表现比其他情况下要差得多。

在命令行中使用 Tesseract 后,我还发现对于某些图像 Tesseract 会估计分辨率本身,这会影响结果。

我还尝试了 --dpi 参数。对于某些图像,使用 --dpi 1800 可以获得最佳结果,对于某些图像,使用 --dpi 300 可以获得最佳结果。 我正在寻找一种在提取文本之前设置图像 dpi 的方法,或者一种查找图像 dpi 的方法。

我还尝试使用

pix.set_dpi()
get_pixmap(dpi = ..)
,但没有任何改善。如果有任何建议我将不胜感激

这是我使用的代码:

        page = doc.load_page(0)
        page_size = page.rect
        zoom = 3
        mat = fitz.Matrix(zoom, zoom)
        pix = page.get_pixmap(matrix=mat)
        img_data = pix.samples
        img_array = np.frombuffer(img_data, dtype=np.uint8)
        img_array = img_array.reshape(pix.height, pix.width, pix.n)
        img = cv.cvtColor(img_array, cv.COLOR_RGB2BGR)
                    
        #...
        k=0
        result_dict = {}
        for i, rect in enumerate(rectangles):
            x1, y1, x2, y2 = rect
            roi = img[y1:y2, x1:x2]
            k+=1
            text = pytesseract.image_to_string(roi, lang="eng+deu")

opencv tesseract python-tesseract dpi pymupdf
1个回答
1
投票

使用 PyMuPDF 及其 Tesseract 界面对 PDF 页面进行 OCR。

import fitz  # PyMuPDF
doc = fitz.open("input.pdf")  # some PDF (or any other supported file type!)
page = doc[0]  # load page via page number

# OCR images parts of the page
tp = page.get_textpage_ocr(flags=3, language='eng', dpi=72, full=False, tessdata=None)

text = page.get_text()

注意: 我是 PyMuPDF 的维护者和原始创建者。

© www.soinside.com 2019 - 2024. All rights reserved.