PDF 파일을 이미지 파일로 변환

소개



PDF에서 화상 파일로의 변환에 대해 조사했으므로, 그 비망록으로서 기재합니다.

참고



파이썬에서 PDF를 이미지 파일 (JPEG, PNG)로 변환하는 방법

Install 방법
【Python】PDF와 이미지의 상호 변환
pdf2image github

환경과 환경 구축



시도한 환경
Win10 Pro 64bit
아나콘다
Python3.7

IDE로 VScode를 이용하고 있습니다.

모듈 설치



pdf2image와 poppler를 설치해야합니다.
conda를 사용하는 경우 가능한 한 conda로 설치하는 것이 좋습니다.
Anaconda 가상 환경을 만드는 방법(conda-forge, Jupyter notebook)

Conda로 설치하면
conda install -c conda-forge pdf2image
conda install -c conda-forge poppler

conda-forge에서 설치할 수 있습니다.
(conda-forge에서 설치가 설정된 경우 -c conda-forge가 필요하지 않습니다.)

pip로 설치하면
pip install pdf2image
pip install poppler

사용법



파이썬에서 PDF를 이미지 파일 (JPEG, PNG)로 변환하는 방법 를 참고로 사용법을 설명합니다.
이 소재는 위의 HP 예제에서 후생 노동성의 매월 근로 통계 조사(2018년 9월분 결과 속보 등)의 개요 PDF를 사용합니다.

홀더 구성

data 홀더 (이 안에 PDF 파일을 넣습니다)
image 홀더 (이미지로 변환된 것이 이 홀더에 들어갑니다.)
test.py(코드가 작성된 파일)


pdf2image의 함수를 직접 사용하는 방법

test.py의 내용
from pathlib import Path
from pdf2image import convert_from_path

# PDFファイルのパス
pdf_path = Path("./data/pdf3009p.pdf")
#outputのファイルパス
img_path=Path("./image")

#この1文で変換されたjpegファイルが、imageホルダー内に作られます。
convert_from_path(pdf_path, output_folder=img_path,fmt='jpeg',output_file=pdf_path.stem)

convert_from_path 인수
pdf2image’s documentation
convert_from_path(pdf_path, dpi=200, output_folder=None, first_page=None, last_page=None, fmt='ppm', jpegopt=None, thread_count=1, userpw=None, use_cropbox=False, strict=False, transparent=False, single_file=False, output_file=str(uuid.uuid4()), poppler_path=None, grayscale=False, size=None, paths_only=False)
pdf_path는 문자열, pathlib.Path 중 하나 일 수 있습니다.
이번 예제에서는 pathlib.Path 로 하고 있습니다.
output_file은 파일 이름을 지정합니다. 기본적으로 난수(uuid.uuid4())로 파일 이름이 생성됩니다.
[Python] UUID 생성 uuid.uuid4()는 어떻게 UUID를 생성하는가?

실행 결과
image 홀더 안에 pdf3009p0001-01.jpg 파일 등을 할 수 있습니다.
pdf_path.stem 에서 "./data/pdf3009p.pdf"pdf3009p 를 가져옵니다.
여기에 0001-01.jpg가 추가되었습니다.

출력 파일의 이름을 자유롭게 설정

Output 파일의 이름을 자유롭게 설정하려면 , 아래의 프로그램중의 코멘트 「이미지 파일을 1 페이지씩 저장」과 같이 쓰면, 임의의 이름을 붙일 수 있습니다.
test2.py의 내용
from pathlib import Path
from pdf2image import convert_from_path

def pdf_image(pdf_file,img_path, fmt='jpeg', dpi=200):

    #pdf_file、img_pathをPathにする
    pdf_path = Path(pdf_file)
    image_dir = Path(img_path)

    # PDFをImage に変換(pdf2imageの関数)
    pages = convert_from_path(pdf_path, dpi)

    # 画像ファイルを1ページずつ保存
    for i, page in enumerate(pages):
        file_name = "{}_{:02d}.{}".format(pdf_path.stem,i+1,fmt)
        image_path = image_dir / file_name
        page.save(image_path, fmt)

if __name__ == "__main__":
    # PDFファイルのパス
    pdf_path = Path("./data/pdf3009p.pdf")
    img_path=Path("./image")

    pdf_image(pdf_file=pdf_path,img_path=img_path, fmt='jpeg', dpi=200)


실행 결과

직접 설정한대로 이름으로 저장할 수 있습니다.

좋은 웹페이지 즐겨찾기