본문 바로가기
python

[데이터 분석] pdf 크롤링 파일 csv로 파싱하기 (+ pdf -> pdf 비추와 이유)

by 포 키 2023. 8. 14.
728x90

 

 

오늘은 약간의 푸념? 을 먼저 늘여놓고 포스팅을 시작하려한다.

요즘 세미프로젝트를 위해 각자 크롤링하고 그 파일을 분석하도록 시간을 최소 1~2시간 씩 주신다.

아직 조가 확정된 것은 아니지만, 내가 정한 주제는 확정되었기에 틈틈히 하는 것이 좋으나

나는 주말엔 다른 일정들이 많았고, 딱 하루 없는 날엔 체력 비축을 위해 그냥 놀고 쉬었다.

뭐,,, 사실 핑계거리다. ㅋㅋㅋㅋㅋㅋ 😂😂

그렇다고 내가 코드를 잘 아는 것도 아니고 실력이 뛰어나서 금방 구글링하는 것도 아니어서 수업시간에 주는 시간엔 얻은 결과값이 딱히 없다..

이렇게 있다간 같은 조로 편성될 조원들에게 피해를 입힐까 두려워 일단 이 때까지 최대한 긁어모았던 pdf 파일들을 csv 파일로 변환해야겠단 생각이 들었다!

 

그래서 오늘의 포스팅은!!

주피터 노트북 환경에서 pdf 파일에서 표 데이터를 파싱해서 csv 파일로 변환하는 것을 작성해보려한다.

 

 

0. pdf 파일 찾기

인트로로 우리가 필요한 데이터가 각자가 다를테니! 원하는 pdf 파일을 찾고 그 안에서 원하는 데이터의 형식을 알아주자

나의 경우 세미프로젝트를 위한 데이터를 크롤링하고 있던 중이었다.

내가 선택한 주제는 국민 여행조사 데이터를 활용한 여행 유형 분류 였고 이를 위해 올해는 아직 분기별로 잠정치 데이터만이 존재하기에, 2022년 데이터를 얻기 위해 한참을 찾았다.

아무리 주제에 확실하게 국민여행조사 데이터 활용 이라고 적혀있어도, 크롤링은 역시나 였다...

2022년의 데이터를 수집하려니 2021년의 데이터들만 csv 파일로 잘 정리되어 있었고, 찾는 것이 조금 어려웠다.

그래서 최종적으론 KOSIS 에서 꼭 필요해보이는 부분만 다운을 받았다.

 

 

1. pdf 데이터 파싱하기

이제 원하는 pdf 파일을 찾았으니, 우리가 원하는 데이터를 파싱하는 것 만이 남았다!

참고로, 나의 결과를 먼저 말하자면 썩 좋진 않았다.. ㅎㅎ

일단 우리가 원하는 데이터를 파싱하는 방법을 나는 gpt를 통해 도움을 받았다.

데이터 분석에 대한 부분이라 따로 파이썬에서 실행할 수 있도록 해달라고 하지 않고 조건만 작성했더니 자바를 활용하는 방법을 가르쳐 주기에 당황했다. ㅋㅋㅋㅋㅋ

그치만 우리의 gpt 파이썬으로 만드는 방법을 가르쳐 달라고 하니 너무 친절히 잘가르쳐 줬다.

 

!pip install pdfplumber

 

먼저 우리가 사용할 라이브러리를 다운받아줘야한다.

 

import pdfplumber
import pandas as pd

# PDF 파일 경로 설정
pdf_file_path = "./2022년_국민여행조사_보고서_분석편.pdf"

# PDF 파일 열기
with pdfplumber.open(pdf_file_path) as pdf:
    # 추출한 표 데이터를 저장할 리스트
    table_data = []

    # 페이지 수 만큼 반복
    for page in pdf.pages:
        # 표 추출
        table = page.extract_table()

        # table이 None이 아닌 경우에만 리스트에 추가
        if table:
            table_data.extend(table)

# 추출한 표 데이터를 DataFrame으로 변환
df = pd.DataFrame(table_data)

# DataFrame을 CSV 파일로 저장
csv_output_path = "./2022_국민여행조사.csv"
df.to_csv(csv_output_path, index=False)

print(f"표 데이터를 {csv_output_path}로 저장 완료")

이 코드에서 파일 경로는 미리 확인해두는 것이 좋은데 아래 코드를 작성해 두겠다.

그 코드를 이용해서 현재 경로를 파악해두고, 같은 파일에 할 것이면 굳이 작성하지 않고, 나처럼 ./ 을 붙여주는 것이 가장 좋다!

 

 

2. 결과 파일 확인하기

위의 코드를 사용했다면, 결과 파일이 만들어졌을 것이다.

나의 경우 파일이 만들어지는 데까지 걸린 시간이 5분가량 소요되었다.

데이터 양도 있었기에 5분이라는 시간이 너무 길다고 느끼진 않았지만....

결과물은 pdf 파일에서 데이터 파싱이 완벽히 되진 않았다.

 

이렇게 월별, 연도별 등등 칼럼 값들이 제대로 입력되지 못한 부분들이 많았다.

 

그래서 내가 생각한 방법은 pdf에서 pdf로 다시 파싱하기!!

그치만.... 미리 말하자면 절대 절대 하지 말자..^^

나는 pdf에서 제대로 인식을 못했다고 생각하지 않고, csv 파일로 옮길때 문제가 생겼다고 생각했다.

그래서 pdf 추출 같은 느낌으로 했었는데...

결과는 아래와 같이 너무 처참하게 무슨 불법 다운로드 파일을 받은 것 마냥 되어있다..ㅎ

 

모든 부분들이 다 저렇게 되어있다...ㅋㅋㅋㅋㅋ

그래서 인코딩을 다시해봤지만,, 그냥  csv 파일은 우리가 입력을 다시 고칠 수라도 있지,

pdf 파일은 고치지도 못하고 그냥 필요없는 쓰레기가 되어버린다.

제목에서 비추천 한다고 한 이유였다..ㅋㅋㅋㅋ

728x90