본문으로 건너뛰기

실무 팁 ·

공문·제안서 PDF, 매번 손으로 합치고 나누고 계신가요 (파이썬 자동화)

매달 반복되는 PDF 작업, 얼마나 시간을 쓰고 계신가요

관공서나 중소기업 실무 부서에서는 공문, 제안서, 보고서, 계약서 등 PDF 문서를 다루는 일이 생각보다 많습니다. 여러 부서에서 보내온 PDF를 하나로 합쳐 제출해야 하거나, 수십 페이지짜리 문서에서 특정 페이지만 뽑아 첨부해야 하는 경우가 대표적입니다. 또 특정 키워드가 포함된 문서를 찾기 위해 PDF를 하나씩 열어보는 경우도 흔합니다.

문제는 이런 작업이 한두 번으로 끝나지 않는다는 점입니다. 월말 결산 보고서, 분기별 제안서 취합, 연간 계약서 정리처럼 주기적으로 반복되는 경우가 많고, PDF 편집 프로그램을 열고 파일을 하나씩 드래그해서 순서를 맞추는 작업은 파일이 10개, 20개로 늘어날수록 시간이 기하급수적으로 늘어납니다. 이번 글에서는 파이썬의 pypdf 라이브러리를 활용해 PDF 병합, 분할, 텍스트 검색을 자동화하는 방법을 정리해보겠습니다.

이미 엑셀 반복 업무를 자동화해보신 분이라면 비슷한 흐름으로 접근하시면 됩니다. 실제로 엑셀 반복 업무, 파이썬으로 10분 만에 끝내기에서 다룬 pandas 자동화와 원리가 크게 다르지 않습니다. 파일을 읽고, 원하는 형태로 가공하고, 저장하는 3단계 흐름을 PDF에 그대로 적용하면 됩니다.

사전 준비: 라이브러리 설치

파이썬이 설치되어 있다면 다음 명령으로 필요한 라이브러리를 설치합니다.

pip install pypdf

PDF 안의 텍스트를 검색하거나 추출할 때도 pypdf 하나로 대부분 처리할 수 있습니다. 스캔본처럼 이미지로 되어 있는 PDF는 텍스트 추출이 되지 않는데, 이 경우는 별도의 OCR 처리가 필요하므로 이번 글에서는 텍스트 기반 PDF를 기준으로 설명합니다.

1. 여러 PDF 파일을 하나로 합치기

가장 많이 요청받는 작업입니다. 폴더 안에 있는 PDF 파일들을 파일명 순서대로 병합하는 코드입니다.

import os
from pypdf import PdfWriter

folder = "./제출문서"
output_path = "./병합본.pdf"

# 파일명 순으로 정렬 (01_, 02_ 처럼 번호를 붙여두면 순서 제어가 쉽습니다)
pdf_files = sorted(
    [f for f in os.listdir(folder) if f.lower().endswith(".pdf")]
)

merger = PdfWriter()

for filename in pdf_files:
    file_path = os.path.join(folder, filename)
    merger.append(file_path)
    print(f"추가됨: {filename}")

merger.write(output_path)
merger.close()

print(f"병합 완료: {output_path}")

파일명 앞에 01_, 02_처럼 순번을 붙여두는 습관만 들이면, 병합 순서를 별도로 지정하지 않아도 원하는 순서대로 합쳐집니다. 매달 같은 폴더 구조를 사용한다면 이 스크립트를 저장해두고 더블클릭으로 실행할 수 있게 배치 파일로 감싸두는 것도 방법입니다. 이 부분은 관공서·중소기업 PC, 매일 반복되는 파일 정리 자동화하기에서 다룬 배치 스크립트와 연결하면 파일 정리부터 병합까지 한 번에 처리할 수 있습니다.

2. 특정 페이지만 뽑아내기

수십 페이지짜리 제안서에서 특정 부분만 발췌해 별도 파일로 만들어야 하는 경우도 자주 있습니다.

from pypdf import PdfReader, PdfWriter

reader = PdfReader("./제안서_전체.pdf")
writer = PdfWriter()

# 5페이지부터 10페이지까지 추출 (0부터 시작하므로 -1)
start_page = 5 - 1
end_page = 10

for i in range(start_page, end_page):
    writer.add_page(reader.pages[i])

with open("./제안서_발췌본.pdf", "wb") as f:
    writer.write(f)

print("발췌 완료")

전체 페이지 수를 미리 확인하고 싶다면 len(reader.pages)로 확인할 수 있습니다. 여러 구간을 한 번에 나누고 싶을 때는 페이지 범위를 리스트로 관리하면 편리합니다.

ranges = {
    "표지_및_개요": (1, 3),
    "사업내용": (4, 15),
    "예산계획": (16, 20),
}

reader = PdfReader("./제안서_전체.pdf")

for name, (start, end) in ranges.items():
    writer = PdfWriter()
    for i in range(start - 1, end):
        writer.add_page(reader.pages[i])
    with open(f"./{name}.pdf", "wb") as f:
        writer.write(f)
    print(f"{name}.pdf 생성 완료")

이렇게 해두면 하나의 제안서를 부서별, 항목별로 자동 분할해 배포할 수 있습니다.

PDF 반복 업무 자동화 핵심 정리

3. 여러 PDF에서 특정 키워드 찾기

계약서나 공문이 여러 개 쌓여 있을 때, 특정 단어가 들어간 파일만 골라내야 하는 상황도 있습니다. 이럴 때는 각 PDF의 텍스트를 추출해 검색하면 됩니다.

import os
from pypdf import PdfReader

folder = "./계약서_보관함"
keyword = "위약금"

for filename in os.listdir(folder):
    if not filename.lower().endswith(".pdf"):
        continue

    file_path = os.path.join(folder, filename)
    reader = PdfReader(file_path)

    found_pages = []
    for i, page in enumerate(reader.pages):
        text = page.extract_text() or ""
        if keyword in text:
            found_pages.append(i + 1)

    if found_pages:
        print(f"{filename} - {keyword} 발견 (페이지: {found_pages})")

이 스크립트를 활용하면 수십 개의 계약서 중 특정 조항이 포함된 문서만 빠르게 골라낼 수 있습니다. 사람이 눈으로 훑어보는 것보다 훨씬 빠르고, 누락 없이 확인할 수 있다는 점이 장점입니다.

4. 자동화 스크립트를 실무에 정착시키는 방법

코드를 한 번 작성했다고 끝이 아닙니다. 실무에서 꾸준히 쓰려면 몇 가지를 신경 써야 합니다.

첫째, 폴더 구조를 고정해두는 것이 중요합니다. 매번 파일 경로를 코드에서 수정하기보다는, 항상 같은 폴더명과 파일명 규칙을 사용하도록 팀 내에서 약속해두면 스크립트를 그대로 재사용할 수 있습니다.

둘째, 결과 파일명에 날짜를 자동으로 붙이면 관리가 편해집니다.

from datetime import datetime

today = datetime.now().strftime("%Y%m%d")
output_path = f"./병합본_{today}.pdf"

셋째, 처음 도입할 때는 원본 파일을 건드리지 않고 별도 폴더에 결과물을 저장하도록 만드는 것이 안전합니다. 자동화 스크립트가 실수로 원본을 덮어쓰는 상황은 반드시 피해야 합니다.

이런 자동화는 비개발자 실무자도 하루 이틀 정도 투자하면 충분히 익힐 수 있는 수준입니다. 코드를 처음부터 짜기보다는 이번 글의 예시 코드를 자신의 폴더 구조에 맞게 조금씩 수정해보는 것으로 시작하시는 것을 권합니다. 코딩을 어디서부터 시작해야 할지 막막하신 분들은 비전공 사무직을 위한 코딩 입문 로드맵을 참고하시면 학습 순서를 잡는 데 도움이 될 것입니다.

마무리

PDF 병합, 분할, 검색은 특별한 기술이 아니라 몇 줄의 파이썬 코드로 해결할 수 있는 반복 업무입니다. 처음 스크립트를 만드는 데는 시간이 걸리지만, 한 번 만들어두면 이후로는 실행 파일을 클릭하는 것만으로 몇 초 만에 끝나는 일이 됩니다. 픽셀앤코드에서는 이런 반복 업무 자동화뿐 아니라 제안서 디자인, 데이터 가공, 맞춤형 소프트웨어 개발까지 중소기업과 관공서 실무 환경에 맞춘 IT 지원을 제공하고 있으니, 사내에서 반복되는 문서 작업으로 어려움을 겪고 계시다면 편하게 문의해주시기 바랍니다.