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

Lakshay Kapoor 2023년10월10일 Python Python PDF
  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
튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
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