Python을 사용하여 리샘플링 없이 PDF에서 이미지 추출
리샘플링 없이 기본 해상도와 형식을 유지하면서 PDF 문서에서 모든 이미지를 효율적으로 추출하려면 , PyMuPDF 모듈을 활용할 수 있습니다. 이 모듈은 이미지 추출을 위한 효과적인 솔루션을 제공하고 이미지를 PNG 파일로 출력합니다.
PyMuPDF 사용:
<code class="python">import fitz # Open the PDF document doc = fitz.open("file.pdf") # Iterate through the pages for i in range(len(doc)): # Extract images from the current page for img in doc.getPageImageList(i): # Retrieve the image's XREF and create a Pixmap xref = img[0] pix = fitz.Pixmap(doc, xref) # Check if the image is grayscale or RGB if pix.n < 5: # Save the image in PNG format pix.writePNG("p%s-%s.png" % (i, xref)) # If the image is CMYK, convert it to RGB and save else: pix1 = fitz.Pixmap(fitz.csRGB, pix) pix1.writePNG("p%s-%s.png" % (i, xref)) pix1 = None # Release the Pixmaps pix = None</code>
개선 사항:
fitz 1.19.6을 지원하는 스크립트의 업데이트된 버전:
<code class="python">import os import fitz from tqdm import tqdm # Specify the work directory workdir = "your_folder" # Iterate through the PDFs in the directory for each_path in os.listdir(workdir): if ".pdf" in each_path: # Open the PDF document doc = fitz.Document(os.path.join(workdir, each_path)) for i in tqdm(range(len(doc)), desc="pages"): for img in tqdm(doc.get_page_images(i), desc="page_images"): # Extract the image and save as PNG xref = img[0] image = doc.extract_image(xref) pix = fitz.Pixmap(doc, xref) pix.save(os.path.join(workdir, "%s_p%s-%s.png" % (each_path[:-4], i, xref)))</code>
이 향상된 스크립트는 가시성을 높이기 위해 진행률 표시줄을 제공하고 추출된 이미지를 일관된 파일 명명 규칙에 따라 저장합니다.
위 내용은 원래 해상도를 유지하면서 Python을 사용하여 PDF에서 이미지를 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!