Python을 사용하여 PDF 파일에서 이미지 추출

Lakshay Kapoor 2023년10월10일
  1. Python에서PyMuPDF라이브러리 설치
  2. Python의 PDF 파일에서 이미지 추출
Python을 사용하여 PDF 파일에서 이미지 추출

Python을 사용하여 외부 파일 및 소스로 많은 작업을 수행 할 수 있습니다. 작업 중 하나는 Python의 PDF 파일에서 이미지를 추출하는 것입니다. 이는 PDF가 너무 길고 수동으로 관리 할 수 ​​없을 때 매우 유용합니다.

이 가이드는 Python의 PDF 파일에서 이미지를 추출하는 방법을 보여줍니다.

Python에서PyMuPDF라이브러리 설치

이 작업을 수행하려면 Python에PyMuPDF라이브러리를 설치해야합니다. 이 라이브러리는 사용자가PDF,XPS,FB2,OpenXPSEPUB형식의 파일을 처리하는 데 도움이됩니다. 고성능 및 렌더링 품질로 알려진 매우 다양한 라이브러리입니다. 그러나 Python에는 사전 설치되어 있지 않습니다. 이 라이브러리를 설치하려면 다음 명령을 실행하십시오.

pip install PyMuPDF Pillow

Python의 PDF 파일에서 이미지 추출

이제 PDF 파일에서 이미지를 추출하려면 단계별 절차가 있습니다.

  • 먼저 필요한 모든 라이브러리를 가져옵니다.
import fitz
import io
from PIL import Image
  • 그런 다음 이미지를 추출해야하는 파일의 경로를 정의합니다. fitz모듈에서open()함수를 사용하여 파일을 엽니 다.
file_path = "randomfile.pdf"
open_file = fitz.open(file_path)
  • 그 후 PDF 파일의 모든 페이지가 반복되고 각 페이지에 사용 가능한 이미지가 있는지 확인합니다.
for page_number in range(len(open_file)):
    page = pdf_file[page_number]
    list_image = page.getImageList()

    if list_image:
        print(f"{len(list_image)} images found on page {page_number}")
    else:
        print("No images found on page", page_number)

이 단계에서getImageList()함수는 튜플 목록으로 이미지 객체의 형태로 모든 이미지를 추출하는 데 사용됩니다.

  • 그런 다음extractImage()함수를 사용하여 이미지 크기 및 이미지 확장과 같은 이미지에 대한 모든 추가 정보를 반환합니다. 이 단계는 첫 번째 반복 자체 내에서 반복으로 수행됩니다.
for image_number, img in enumerate(page.getImageList(), start=1):

    xref = img[0]

    image_base = pdf_file.extractImage(xref)
    bytes_image = image_base["image"]

    ext_image = base_image["ext"]

이 모든 단계를 하나의 프로그램으로 결합한 후 PDF 파일에서 모든 이미지를 쉽게 추출 할 수 있습니다.

이제randomfile.pdf파일에 5 페이지가 있다고 가정합니다. 이 5 페이지에는 마지막에 이미지가 1 개만 있습니다 (예 : 5 페이지). 따라서 출력은 다음과 같습니다.

0 images found on page 0
0 images found on page 1
0 images found on page 2
0 images found on page 3
0 images found on page 4
1 images found on page 5
Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn

관련 문장 - Python PDF