파이썬으로 PDF 페이지 추출, 병합하기 (PyPDF2)

예전에는 Adobe Acrobat (유료) 제품을 사용하지 않으면 PDF 파일을 편집할 길이 없었는데, 이제는 파이썬으로 페이지 추출이나 병합 정도는 가볍게 해결할 수가 있더라.

파이썬으로 해결하는 코드 예제 간략히 남겨본다. (마지막에 텍스트 추출도 포함해봤다.)

라이브러리 설치

PyPDF2라는 라이브러리를 사용한다. 오래전에 개발된 라이브러리임에도 너무 쉽고 강력해서 아직도 사람들이 가장 많이 쓴다.

설치는 이렇게.

pip install PyPDF2

PDF 파일 페이지 추출(분할)하기

코드 예시.

from PyPDF2 import PdfFileReader, PdfFileWriter

원본 = PdfFileReader(open("./files/예시.pdf", 'rb'))

# writer라는 이름의 pdf작성기를 준비
writer = PdfFileWriter()

# 원본 pdf파일에서 원하는 페이지를 추출해서 writer에 추가
writer.addPage(원본.getPage(0))
writer.addPage(원본.getPage(1))
writer.addPage(원본.getPage(4))

# writer가 새 pdf파일로 저장
writer.write(open("./files/output.pdf", 'wb'))

PdfFileReader로 원본을 읽고, 여기서 필요한 페이지를 인덱싱 해서 PdfFileWriter에 추가한 후, 이를 새 pdf파일로 저장하는 방식이다. 매우 쉬움.

여러개의 PDF 파일 병합하기

코드 예제.

from PyPDF2 import PdfFileReader, PdfFileMerger

# merger라는 이름의 pdf병합기를 준비
merger = PdfFileMerger()

# 준비한 파일들을 하나씩 읽은 후, merger에 추가
merger.append(PdfFileReader(open("./files/1.pdf", 'rb')))
merger.append(PdfFileReader(open("./files/2.pdf", 'rb')))
merger.append(PdfFileReader(open("./files/3.pdf", 'rb')))
merger.append(PdfFileReader(open("./files/4.pdf", 'rb')))
merger.append(PdfFileReader(open("./files/5.pdf", 'rb')))

# merger가 새 pdf파일로 저장
merger.write("./files/output.pdf")

PdfFileReader로 파일을 읽어서, PdfFileMerger에 추가(append)한 후, 이를 새 pdf파일로 저장하는 방식. 이것도 매우 쉬움.

PDF 파일에서 텍스트 추출하기

여러 라이브러리가 있지만 그 중에서 tika가 한국어에서도 비교적 성능이 좋고 사용법이 간편하다.

일단 설치를 하고.

pip install tika
from tika import parser

data = parser.from_file("./files/예시.pdf")
content = data["content"].strip()

with open("./output.txt", 'w', encoding='utf-8') as txt:
    print(content, file=txt)

PDF 파일에서 텍스트를 추출할 때는 줄바꿈(개행) 이슈가 존재한다. 이건 정말 어쩔 수가 없다.


아무튼 파이썬으로 PDF 파일 다루기. 끝.

댓글 남기기

추천 글