사소한 Tip . 오류 해결법/python

[python/pdf2image] pdf 에서 페이지별 image 추출하기

Js.Y 2022. 11. 23. 12:27
728x90
반응형

pdf2image라는 패키지를 사용해서 PDF 내 각 페이지를 이미지로 저장해보자.

아래 커맨드로 pdf2image를 설치해준다.

pip install pdf2image

 

아래는 내가 짠 샘플 코드로, 각 pdf 별 세부 하위폴더를 만든 후 페이지 별 이미지를 저장하게끔 하였다.

코드는 단순하고, 주석도 넣어놨기 때문에 부가적인 설명은 제외한다.

추가적으로 glob, tqdm 정도만 pip로 설치해줘도 될 것 같다.

 

import os
import glob
from pdf2image import convert_from_path
from tqdm import tqdm

if __name__ == "__main__":
    # target_path : pdf 문서가 있는 경로
    target_path = "./pdf_data/*.pdf" 
    
    # 파일 list 가져오기
    file_list = glob.glob(target_path)
    for file in tqdm(file_list):
        # PDF 문서에서 Image 추출하기
        filenm = file.split("/")[-1]
        subdir = file.split("/")[1]
        new_path = "./images/%s/"%subdir
        os.makedirs(new_path, exist_ok=True)
        
        try:
            images = convert_from_path(file, 300)# 300 -> dpi / fmt='jpg', output_folder=new_path
        except Exception as e:#간혹 empty stream Document가 있을 경우 대비
            print("%s:%s"%(file, e))
            continue
            
        for idx, image in enumerate(images, start=1):
            f_nm = os.path.splitext(filenm)[0]
            ext = os.path.splitext(filenm)[1]
            #print("Saved Image:%s"%f_nm+"_"+str(idx)+ext)
            image.save(new_path+f'{f_nm}-{idx}.jpg', 'JPEG')

 

혹시 pdf2image에서 에러가 발생한다면 아래 포스팅을 참고

 

pdf2image 오류 / layout Parser 오류

Traceback (most recent call last): File "/opt/conda/lib/python3.8/site-packages/pdf2image/pdf2image.py", line 441, in pdfinfo_from_path proc = Popen(command, env=env, stdout=PIPE, stderr=PIPE) File "/opt/conda/lib/python3.8/subprocess.py", line 854, in __i

yjs-program.tistory.com

 

728x90
반응형