여는 글
포스팅 글이 늦어졌는데, 너무 오랜 시간 다양한 도전을 하다가 글을 쓸 타이밍을 놓쳐버렸다.
이 글에서 간단하게 17~20일 동안 마루에그 프로젝트의 필수 사항인 데이터 전처리 과정을 어떻게
시도했는지 풀어보려고 한다.
수 많은 라이브러리로 표 데이터 추출 도전
=> 노션에 보이는 토글 하나하나가 모두 도전했던 방법들이고, 하나한 모두 짧으면 30분 길면 2시간의 시간이 걸렸다..
일단 모든 방법들을 다 시도해봤고 사용한 내부, 외부 라이브러리들은 아래와 같다.
pdftotree, tabula, poppler, pdfplumber, PyMuPDF
=> 이 라이브러리들의 사용방법들로 기본 진행을 하고, 응용을 하고, 다른 라이브러리들을 추가하면서 또 진행을 해보았으나..
pdf & html에서 온전한 테이블 데이터를 뽑아내기엔 쉽지 않았다.
어려운 이유
=> 표의 데이터가 다음과 같기 때문에... 기본적인 테이블의 경우 열과 행의 규칙이 일정하기 때문에 이를 테이블의 형태로
뽑아내어 텍스트로 가공해서 llm모델이 이해하기는 정말 쉬우나.
입학관리팀 챗봇에서 다뤄야할 데이터들은 모두 모집요강, 기출문제, 입시결과 데이터이고 이 데이터들은 위와 같은
테이블의 형태로 이뤄져있다.
다음과 같이 열과 행에서 또다시 열과 행으로 쪼개지고 이 형태가 반복되는 구조는 온전한 테이블의 형태로 뽑아내는 것이 쉽지 않다.
다른 하위 라이브러리는 사실.. 볼 것도 없고, 그나마 표데이터 추출로 유명했던, 그리고 다른 글에서도 다들 추천했던 tabula정도가 그나마
아래 사진과 같이 어느정도 테이블의 형태를 뽑아내는 정도였다.
=> 그럼에도 불구하고 행에 열로 쪼개지는 형태가 존재할 때 하나의 행으로 묶어 처리해버리는 매커니즘은 다 동일했기에 한계점이 보였다.
일단 채택한 라이브러리는 "camelot"
그나마 일단 적용해볼 수 있을 정도로 퀄리티가 나오는 것은 camelot라이브러리였고 결과는 아래와 같다.
=> 보기에는 이상한 "," 기호와 그 기호의 반복이 이뤄지면서 이상한 텍스트가 만들어지지만 이건 csv기반 형식이고 이걸 챗봇이 기반으로 읽는다면?
=> 다음과 같이 cvs형식으로 챗봇이 잘 인식하여 표를 기반으로 이해할 수 있다.
앞으로 해결해나가야 할 점
입시 상담 챗봇이기 때문에, 주어진 데이터를 기반으로 정확히 답변하는 것이 무조건 적으로 중요하다.
그러기 위해선 데이터의 가장 큰 지분을 차지하고 있는 표 기반 데이터를 정확히 파싱해야한다.
현재로써는 부족한 부분이 많으나 향후 문제를 해결해서 최대한 표의 형태의 데이터를 잘 끌어내어
전처리를 진행하려고 한다.
수많은 라이브러리로 도전하면서, 또 주어진 task중 가장 시간이 오래걸리고 힘들었다..
그래도 pdf형식, html형식에 대해 배웠고 그 라이브러리들의 처리 과정을 이해할 수 있었기에
파일 데이터에 관련해서 식견이 깊어졌다고 생각한다.
완벽히 해결이 되지 않은 문제이기에.. 신경쓰이고 답답한 기분이다..
프로젝트 완료 전까지 문제를 잘 해결하길 바라며 다시 또 도전해보아야겠다.
'Project > 명지대학교-입학관리팀챗봇-MARU_EGG' 카테고리의 다른 글
maru-egg 프로젝트 개발일지 - APIs 개선 & crontab으로 ec2에서 파일 파싱 자동화 스크립트 작성 & 스왑진행 & 도메인, https적용 & swagger오류 해결 (0) | 2024.08.11 |
---|---|
DJango에서 pdf렌더링 처리 + ask_question_api 함수 고도화 작업 (0) | 2024.07.24 |
입학관리팀챗봇 개발일지 - 모델 버전으로 llm api개발, 프론트와의 cors오류 해결, delete & retrieve APIs 개발 (1) | 2024.07.18 |
DJango에서 Swagger로 파일 업로드 진행하는 방법 + api 2차 완성 (0) | 2024.07.12 |
DJango + Swagger 연동 진행 방법 (0) | 2024.07.11 |