블로그 목록으로
텍스트 편집
2026년 5월 16일

PDF에서 텍스트 추출 후 정리하는 단계별 방법

검색 가능한 PDF와 스캔 PDF의 차이를 이해하고, Python pdfplumber·pypdf·Adobe 등 도구별 텍스트 추출 방법과 정리 과정을 단계별로 설명합니다.

Q.PDF에서 텍스트를 추출하는 가장 좋은 방법은 무엇인가요?

PDF 유형에 따라 방법이 달라집니다. 검색 가능한 PDF(텍스트 레이어가 있는 경우)는 Python pdfplumber 라이브러리로 정확하게 추출할 수 있습니다. 스캔된 이미지 PDF는 먼저 OCR 처리가 필요하며, Tesseract OCR 또는 네이버 클로바 OCR API를 사용합니다. 추출 후에는 TRIM·CLEAN 함수나 정규식으로 공백과 줄바꿈 오류를 정리합니다.

PDF 텍스트 추출PDF 텍스트 변환파이썬 PDF 파싱

법무팀에서 계약서 100부를 Word로 변환해달라는 요청이 왔다. 파일을 열어보니 절반은 스캔된 이미지 PDF였다. 텍스트 레이어가 없는 이미지 PDF는 일반 복사·붙여넣기가 불가능하다. 유형 판별부터 시작해야 한다.

PDF 유형 판별

텍스트 레이어 있음 (검색 가능 PDF)

  • PDF 뷰어에서 텍스트 드래그 선택이 가능
  • 파일 크기가 상대적으로 작음 (이미지 없을 때 100KB 미만)
  • 직접 텍스트 추출 가능

이미지 PDF (스캔 PDF)

  • 텍스트 드래그 선택 불가
  • 파일 크기가 큼 (페이지당 300-500KB 이상)
  • OCR 처리가 선행 필요

검색 가능 PDF 추출 (pdfplumber)

python
import pdfplumber

results = []
with pdfplumber.open("document.pdf") as pdf:
    for i, page in enumerate(pdf.pages):
        text = page.extract_text(
            x_tolerance=2,   # 수평 글자 간격 허용오차
            y_tolerance=3,   # 수직 줄 간격 허용오차
        )
        if text:
            results.append(f"--- 페이지 {i+1} ---
{text}")

full_text = "

".join(results)

pdfplumber는 표(table) 추출도 지원한다. page.extract_table()로 PDF 내 표를 2차원 리스트로 변환할 수 있다.

이미지 PDF → OCR → 텍스트

python
import pytesseract
from pdf2image import convert_from_path

# PDF → 이미지 변환 (DPI 300 권장)
pages = convert_from_path("scanned.pdf", dpi=300)

texts = []
for page in pages:
    text = pytesseract.image_to_string(page, lang='kor+eng')
    texts.append(text)

한국어 인식을 위해 tessdata-best/kor.traineddata를 설치해야 한다.

추출 후 정리 체크리스트

  1. 연속 공백 → 단일 공백 (re.sub(r' +', ' ', text))
  2. 불필요한 줄바꿈 제거 (re.sub(r'

{3,}', '

', text))

  1. 머리글·바닥글 패턴 제거 (반복 등장하는 페이지 번호, 문서 제목)
  2. 특수문자 정규화 (따옴표 통일, 대시 종류 통일)

---

이 글은 AI가 공개 자료를 기반으로 작성했습니다. OCR 정확도는 스캔 품질에 따라 크게 달라집니다.

추출된 텍스트 정리하기

바로 가기 →

관련 글

추가 참고 자료

다른 글 보기