使用 Python 从 PDF 文件中按顺序提取图像

问题描述

我想通过 Python 实现 PDF 自动化,其中当我执行下面的代码时,它会从整个 PDF 中获取任何随机图像,而不是按照给定 PDF 中的图像页面顺序进行操作。

请找到我附加的从以下代码执行的 PDF 图像。

enter image description here

req[f'{i}qty']

预期输出:- 我想按照 PDF 中给出的顺序提取图像。 例如 - 首先它应该选择第 1 页的图像,然后按顺序选择第 2 页,依此类推。

解决方法

def start():
    print("Start working....")
    # doc = fitz.open("cs2102g0065_016_549355_ca_cs_sb_sb_fy22q2wk11_oa_bfij-proper-fr_XXXxXXX_jsos.pdf")
    # pdf_file = fitz.open(
    #     r"C:\Users\kunal.joshi\PycharmProjects\1190_PDF to gif\cs2103g0052_019_549291_ca_cs_sb_sb_fy22q2wk7_oa_showcase-premium-fr_XXXxXXX_jsos.pdf")
    input = path.get()
    pdf_file = fitz.open(input)
    try:
        os.mkdir("Extract Images")
    except:
        pass
    DIR = "Extract Images"
    for page_index in range(len(pdf_file)):
        # print(page_index)
        # get the page itself
        page = pdf_file[page_index]
        image_list = page.getImageList()
        # printing number of images found in this page
        if image_list:
            print(f"[+] Found  {len(image_list)} images in page {page_index}")
        else:
            print("[!] No images found on the given pdf page",page_index)
        for image_index,img in enumerate(page.getImageList(),start=1):
            # get the XREF of the image
            xref = img[0]
            # extract the image bytes
            base_image = pdf_file.extractImage(xref)
            image_bytes = base_image["image"]
            # get the image extension
            image_ext = base_image["ext"]
            # load it to PIL
            image = Image.open(io.BytesIO(image_bytes))
            # save it to local disk
            # image.save(open(f"image{page_index + 1}_{image_index}.{image_ext}","wb"))
            image.save(os.path.join(DIR,f"image{page_index + 1}_{image_index}.{image_ext}"))
            # image.save(os.path.join(DIR,image_ext))