3

我正在尝试使用图像的 BBox 坐标提取 PDF 中的图像。

我尝试使用 pdfrw 库,它正在识别图像对象,并且它有一个名为媒体框的属性,它有一些坐标,我不确定这些是否是正确的 bbox 坐标,因为对于某些 pdf,它显示类似 ['0', ' 0', '684', '864'] 但图像不是从页面的开头开始,所以我不认为它是 bbox

我尝试使用 pdfrw 使用以下代码

import pdfrw, os
from pdfrw import PdfReader, PdfWriter
from pdfrw.findobjs import page_per_xobj
outfn = 'extract.' + os.path.basename(path)
pages = list(page_per_xobj(PdfReader(path).pages, margin=0.5*72))
writer = PdfWriter(outfn)
writer.addpages(pages)
writer.write()

如何获取图像及其 bbox 坐标?

示例 pdf:https ://drive.google.com/open?id=1IVbj1b3JfmSv_BJvGUqYvAPVl3FwC2A-

4

1 回答 1

4

我通过一个名为pdfplumber的库找到了一种方法。它建立在 pdfminer 之上,并且在我的用例中始终如一地工作。而且,它的 MIT 许可,所以它对我的办公室工作很有帮助。

    import pdfplumber

    pdf_obj = pdfplumber.open(doc_path)
    page = pdf_obj.pages[page_no]
    images_in_page = page.images
    page_height = page.height
    image = images_in_page[0] # assuming images_in_page has at least one element, only for understanding purpose. 
    image_bbox = (image['x0'], page_height - image['y1'], image['x1'], page_height - image['y0'])
    cropped_page = page.crop(image_bbox)
    image_obj = cropped_page.to_image(resolution=400)
    image_obj.save(path_to_save_image)

    

在我的情况下,适用于表格和图像。

于 2019-12-06T07:16:55.053 回答