1. 텍스트 추출
PDF 문서에서 필요한 정보를 얻어야 하는 상황, 예를 들어 회계 보고서, 연구 자료 또는 좋아하는 전자책을 분석해야 할 때가 있잖아? 하지만 데이터를 수동으로 추출하지 않고 자동으로 작업을 처리하고 싶다면? 여기서 Python과 PyPDF2 라이브러리가 등장하지.
텍스트 추출의 주요 단계
PDF에서 텍스트를 성공적으로 추출하려면 몇 가지 간단한 단계를 따라야 해:
- PDF 파일 읽기.
- PDF 내용 파싱.
- 후속 분석을 위한 텍스트 추출.
2. PDF 파일 읽기 및 파싱
이제 Python으로 PDF 문서를 열고 읽는 방법을 살펴보자. 우선 PyPDF2를 가져와야 해:
import PyPDF2
이제 PDF 문서를 열어보자. 예를 들어 우리가 분석하려는 파일이 sample.pdf
라고 하자. 이를 로드하고 페이지 수를 확인해보자.
PDF 파일 로드
# PDF 파일 열기
with open("sample.pdf", "rb") as pdf_file:
# PDF Reader 객체 생성
pdf_reader = PyPDF2.PdfReader(pdf_file)
# 총 페이지 수 얻기
num_pages = len(pdf_reader.pages)
print(f"문서의 총 페이지 수: {num_pages}")
텍스트 추출
이제 PDF 문서를 열었으니, 텍스트를 추출해보자. 이를 위해 필요한 작업은 다음과 같아:
PdfReader
는 읽기 위한 PDF 파일을 열어.for
루프를 사용하여 모든 페이지를 반복하고,extract_text()
를 호출하여 텍스트를 추출해.- 추출된 텍스트는
text
변수에 저장되어 출력하거나 처리할 수 있어.
다음은 예제 코드야:
import PyPDF2
# PDF 파일 열기
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
text = ""
# 각 페이지에서 텍스트 추출
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
text += page.extract_text() + "\n"
print(text)
특정 페이지에서 텍스트 추출
특정 페이지에서 텍스트가 필요하다면 어떻게 할까? 예를 들어, 세 번째 페이지의 텍스트만 추출하고 싶다면 이렇게 하면 돼:
import PyPDF2
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
page = pdf_reader.pages[2] # 세 번째 페이지의 텍스트 추출 (인덱스 2)
text = page.extract_text()
print(text)
이 예제는 세 번째 페이지의 텍스트만 추출할 수 있어. 이는 문서에 페이지가 많을 경우, 처리 범위를 제한하는 데 유용해. 참고로 PyPDF2는 0부터 페이지 번호를 매겨.
3. PDF 텍스트 처리 자동화
PDF에서 텍스트를 추출한 후, 이를 분석하고 더 심층적인 데이터 분석을 위해 처리할 수 있어. PyPDF2는 이 과정을 자동화할 수 있게 도와줘. 이는 특히 많은 문서를 처리할 때 유용해.
추출된 텍스트를 별도의 파일로 저장하기
추출된 텍스트를 텍스트 파일로 저장하면 후속 분석이 훨씬 쉬워질 거야.
import PyPDF2
# PDF 파일 열기
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
text = ""
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
text += page.extract_text() + "\n"
# 추출된 텍스트를 파일에 저장
with open("extracted_text.txt", "w", encoding="utf-8") as text_file:
text_file.write(text)
추출된 텍스트 처리 및 분석
텍스트를 추출한 후, Python을 사용해 이를 분석할 수 있어. 보통 re
(정규 표현식), nltk
(Natural Language Toolkit), pandas
같은 라이브러리를 사용해.
단어 수 세기와 키워드 검색
예를 들어, 텍스트 파일 extracted_text.txt
가 있고, 문서에서 특정 단어나 문구의 수를 세고 싶다고 하자.
import re
# 추출된 텍스트 열기
with open("extracted_text.txt", "r", encoding="utf-8") as text_file:
text = text_file.read()
# 키워드 검색 및 카운트
keywords = ["보고서", "데이터", "분석"]
keyword_counts = {keyword: len(re.findall(keyword, text, re.IGNORECASE)) for keyword in keywords}
print("키워드 빈도:", keyword_counts)
여기서:
- 저장된 텍스트를 열어.
- 정규 표현식을 사용하여 키워드의 빈도를 검사해 (대소문자 무시).
- 각 키워드의 언급 횟수를 얻어.
4. PyPDF2의 장점과 한계
장점:
- 기본적인 텍스트 추출 및 페이지 처리에 있어 사용이 쉬워.
- 주요 작업 지원: 텍스트 읽기, 문서 병합 및 분할.
- 다른 Python 라이브러리와 통합이 용이해.
한계:
- PyPDF2는 복잡한 PDF (다단 포맷, 표 및 이미지 포함)에서 항상 텍스트를 정확히 추출하지 못해.
- 이미지 및 표의 직접 추출 지원이 없어.
- 암호화되거나 비밀번호로 보호된 파일 처리가 지원되지 않아 (다만 비밀번호를 알고 있다면 보호를 제거할 수 있어).
GO TO FULL VERSION