PDF 파싱의 악몽: 다단 레이아웃과 표 추출은 왜 이렇게 어려울까?
수많은 개발자와 데이터 엔지니어들이 RAG 구축이나 데이터 분석을 위해 PDF 파싱을 시도하다 좌절을 맛보곤 합니다. 특히 다단(Multi-column) 레이아웃으로 작성된 논문이나, 복잡한 **표(Table)**가 포함된 PDF 문서를 다룰 때면 그야말로 악몽이 시작됩니다.
왜 PDF 표 추출과 다단 레이아웃 파싱은 이토록 어려운 것일까요?
PDF 포맷의 태생적 한계: "구조는 없고 좌표만 있다"
HTML이나 마크다운(Markdown), 심지어 HWP와 같은 워드프로세서 포맷들은 내부에 "이것은 표입니다", "이것은 제목입니다", "이것은 새로운 단락입니다"라는 구조적(Semantic) 정보를 담고 있습니다.
하지만 PDF(Portable Document Format)의 애초 목적은 '어떤 기기에서든 동일하게 인쇄되도록 화면을 그리는 것'이었습니다. 따라서 PDF 내부에는 문맥이나 구조에 대한 정보가 전혀 없고, 오직 **"X 좌표 10, Y 좌표 20 위치에 '가'라는 글자를 그려라"**라는 렌더링 명령어만 존재합니다.
PyPDF2 등 기존 라이브러리의 한계
이러한 구조적 한계 때문에, PyPDF2나 pdfplumber 같은 전통적인 텍스트 추출 라이브러리들은 화면에 그려진 좌표 순서대로 글자를 단순하게 긁어모읍니다.
이로 인해 두 가지 치명적인 문제가 발생합니다.
- 다단 레이아웃의 지퍼 현상: 논문처럼 좌우 2단으로 나뉜 문서를 읽을 때, 왼쪽 단락의 첫 줄과 오른쪽 단락의 첫 줄을 그대로 이어 붙여버립니다. 결과적으로 양쪽 문장이 지퍼처럼 섞여 전혀 읽을 수 없는 외계어가 탄생합니다.
- 표(Table) 구조의 붕괴: 표의 테두리 선(Line)과 내부 텍스트(Text)는 PDF 내부에서 완전히 별개의 객체로 취급됩니다. 단순 텍스트만 추출하면 행(Row)과 열(Column)의 구분이 사라지고 숫자들이 무작위로 섞여버립니다.
해결을 위한 새로운 접근: 비전(Vision) 기술과의 결합
단순 텍스트 파싱만으로는 이 난제를 해결할 수 없습니다. 컴퓨터 비전(CV) 기술을 활용하여 화면에 그려진 선을 인식해 표의 격자를 재구성하고, 글자들의 시각적 군집화를 통해 단락의 흐름(Reading Order)을 유추하는 고도화된 휴리스틱 알고리즘이 필요합니다.
현재 MDChange 팀은 이러한 기술적 한계를 극복하고, 어떠한 복잡한 2단 논문이나 표라도 시각적 구조를 완벽하게 유지한 채 마크다운으로 추출할 수 있는 차세대 PDF 파싱 엔진을 한창 개발 중입니다.
이 난제를 극복할 MDChange의 PDF 지원이 곧 출시됩니다! 지금 바로 아래 링크에서 웨이팅리스트에 등록하고 가장 먼저 소식을 받아보세요.