如何使用python提取图像和图像BBox坐标?

时间:2019-02-06 06:41:48

标签: python pypdf2 pdf-extraction pdfrw

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

我尝试使用pdfrw库,它正在识别图像对象,并且具有一个称为media box的属性,该属性具有一些坐标,我不确定这些属性是否是正确的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-

1 个答案:

答案 0 :(得分:0)

我找到了一种通过名为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_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)



在我的情况下,表格和图像效果很好。