1. PDF 분석
왜 PDF를 CSV나 Excel로 변환하나요?
이 문제를 이해하기 전에, 왜 이런 변환을 해야 하는지 이야기해보자. PDF 문서는 그 정적 특성과 인쇄의 편리함 때문에 정보 전달에 많이 사용돼.
하지만 데이터를 분석할 때, PDF는 분석가의 최고의 친구는 아니야. 바로 여기서 CSV와 Excel 파일이 등장하지. 이 형식들은 분석하기 편리하고, Excel에서 쉽게 열리거나 어떤 분석 도구로도 간단히 가져올 수 있어. 데이터를 읽고, 필터링하고, 정렬하고, 시각화하는 것이 이 형식에서는 아주 쉬워. 누가 이런 편리함을 거부하겠어?
도구와 라이브러리
이 작업을 수행하기 위해 우리는 Python의 몇 가지 라이브러리를 사용할 거야. 이 라이브러리들은 PDF라는 "마법"을 풀어주고 그것을 멋진 CSV(또는 당신이 선호한다면 Excel) 파일로 바꿔줄 거야. 바로 PyPDF2, PDFPlumber, 그리고 pandas야. PyPDF2는 PDF에서 텍스트를 추출하는 데 도움을 줄 거고, PDFPlumber는 이 작업을 전문적인 수준으로 해주지. pandas는 데이터를 테이블처럼 다룰 수 있게 해줘.
아직 이 라이브러리들을 설치하지 않았다면, 지금 바로 설치해보자. 터미널에 다음 명령어를 입력해:
pip install PyPDF2 PDFPlumber pandas
설치 끝, 이제 작업을 시작해보자!
2. PDF 문서에서 텍스트 추출하기
PyPDF2로 텍스트 추출하기
첫 번째 작업은 PDF에서 소중한 텍스트를 추출하는 거야. 이를 위해 우리는 PyPDF2 라이브러리를 사용할 거야. PDF 파일을 열고 문서의 각 페이지에서 텍스트를 추출하는 간단한 스크립트를 작성해보자.
import PyPDF2
# 파일 열기
with open('sample.pdf', 'rb') as file:
reader = PyPDF2.PdfReader(file)
text = ""
# 모든 페이지를 순회하면서 텍스트 추출
for page in reader.pages:
text += page.extract_text()
print(text) # 추출한 텍스트 출력
정말 간단하지? 파일을 읽고 텍스트를 추출했어. 하지만 텍스트 종류에 따라 추가 처리가 필요할 때가 있어. 불필요한 문자를 제거하거나 줄 분할을 할 수도 있지.
PDFPlumber로 텍스트 추출하기
PDFPlumber는 표와 복잡한 구조를 가진 PDF를 더 정확하게 처리할 수 있어. 이 라이브러리를 사용하면 텍스트를 추출할 뿐만 아니라 표와도 작업할 수 있어.
import pdfplumber
# PDF 파일 열기
with pdfplumber.open("sample_with_table.pdf") as pdf:
text = ""
for page in pdf.pages:
text += page.extract_text() + "\n"
print(text)
이 코드는 모든 페이지에서 텍스트를 추출해주는 점에서 PyPDF2와 유사하지만, PDFPlumber는 태그 및 표와 같은 구성 요소들을 더 잘 처리해.
PDFPlumber로 PDF에서 표 추출하기
PDF에 표가 포함된 경우, PDFPlumber를 사용해서 표를 리스트로 추출할 수 있어. 이것은 CSV나 Excel로 변환하는 과정을 더 쉽게 만들어줘.
import pdfplumber
import pandas as pd
# PDF 열기 및 표 추출
with pdfplumber.open("sample_with_table.pdf") as pdf:
all_tables = []
for page in pdf.pages:
table = page.extract_table()
if table:
all_tables.extend(table)
# 데이터를 DataFrame으로 변환
df = pd.DataFrame(all_tables[1:], columns=all_tables[0]) # 첫 번째 줄은 헤더
print(df)
이 코드는 PDF 데이터에서 표를 만들어 DataFrame
에 저장하고, 이 표를 CSV나 Excel로 쉽게 저장할 수 있도록 해줘.
3. 데이터 저장하기
텍스트를 DataFrame
으로 변환하기
텍스트가 준비되었으니 이제 각 줄을 우리 테이블의 한 줄로 포장했다고 상상해보자. 우리의 목표는 pandas를 사용해서 이것을 DataFrame
으로 변환한 다음 CSV 파일로 저장하는 거야.
import pandas as pd
# 각 텍스트 줄이 데이터의 한 줄이라고 가정
data = text.split('\n')
data = [row.split(',') for row in data if row.strip() != ''] # 줄을 ','로 분리
# DataFrame 생성
df = pd.DataFrame(data[1:], columns=data[0]) # 첫 번째 줄을 헤더로 사용
# DataFrame을 CSV로 저장
df.to_csv('output.csv', index=False)
여기서는 전체 텍스트를 줄로 나누고, 그다음에 각각의 요소로 나누어 DataFrame
을 생성했어. 첫 번째 줄은 열의 헤더로 지정했지. 이후에는 이것을 CSV 파일로 저장했어. 유후! 예전에는 펜과 계산기로 해야 했던 작업을 우리가 해낸 거야.
데이터를 CSV로 변환하기
PDF에서 텍스트나 표를 추출한 후 Pandas 라이브러리를 사용해서 데이터를 CSV로 저장할 수 있어.
CSV로 데이터 저장하기
# 데이터를 CSV로 저장하기
df.to_csv("output.csv", index=False)
print("데이터가 output.csv에 성공적으로 저장되었습니다.")
이 코드는 PDF에서 가져온 데이터를 DataFrame
에 저장하고, 이것을 output.csv 파일로 저장해. 이 파일은 어떤 스프레드시트 편집기에서도 열 수 있고, 분석 플랫폼에 업로드할 수도 있어.
Excel로 변환하기
그런데 Excel 파일이 필요하다면? 문제없어! pandas는 이걸 하는 데 필요한 모든 걸 제공해. 이전 예제의 마지막 줄을 다음과 같이 교체하기만 하면 돼:
df.to_excel('output.xlsx', index=False)
이렇게 하면 DataFrame
이 Excel 파일로 저장되고, 자유롭게 스크롤하거나 필터를 추가하거나 피벗 테이블을 사용할 수 있어. Excel에서의 모든 것이 너를 연말 파티의 데이터 분석왕으로 만들어줄 거야.
특징과 도전 과제
항상 그렇듯, 우리의 길에는 도전 과제가 있어. PDF 문서에서 텍스트를 추출하는 것은 가끔 클라우드 스토리지의 개념을 할머니께 설명하는 것만큼이나 혼란스러울 수 있어. 일부 PDF 문서는 표, 그래프, 이미지와 같은 복잡한 구조를 가지고 있어서 이것을 텍스트, 특히 구조화된 텍스트로 변환하는 것이 쉽지 않을 수 있어. 이런 경우에는 추가 텍스트 처리, 정규식을 사용하는 것이 필요할 수도 있어. 또는 PDF 내부 이미지에서 데이터를 추출하기 위해 OCR 라이브러리를 사용할 수도 있지.
또한, 모든 PDF 문서가 자동화를 위한 친화적인 것은 아니야. 일부는 암호화되거나 비밀번호로 보호되어 있어. PyPDF2는 비밀번호 처리가 가능하지만, 암호화는 더 까다로워.
GO TO FULL VERSION