article · 2026-08-04

Docling으로 문서를 열면, 글의 구조가 보인다

문장, 문단, 논증, 그리고 온톨로지. 문서 구조화는 텍스트를 관계 있는 정보로 바꾸는 일이다.

Docling으로 보고서 PDF 하나를 변환해 보면 텍스트보다 먼저 문서의 뼈대가 눈에 들어온다. 제목과 본문이 갈리고, 표와 그림이 따로 잡히며, 페이지 위 어디에 있었는지도 남는다. 복사해서 붙여 넣었을 때 한 덩어리였던 문서가 다룰 수 있는 요소들의 묶음처럼 보인다.

그런데 결과를 조금 더 오래 들여다보면 질문이 남는다. 제목을 제목으로 알아낸 것만으로 그 절이 무엇을 말하는지 알 수 있을까. 표의 숫자와 캡션을 함께 보존했다고 해서 그 수치가 본문의 어느 주장에 답하는지도 알게 될까. 구조를 복원했다는 말은 어디까지를 뜻하는가.

이 질문은 문서를 텍스트의 집합이라고 부를 때 빠지는 것을 드러낸다. 우리는 문장을 하나씩 해독만 하지 않는다. 앞 문장이 던진 질문을 다음 문장에서 받고, 몇 문장을 묶어 하나의 생각으로 이해한다. 서론에서는 왜 이 이야기를 지금 해야 하는지 가늠하고, 본론에서는 주장이 어떻게 전개되는지 따라간다. 결론에 가서야 처음의 질문을 다른 눈으로 다시 본다.

문서 구조는 정보가 놓인 모양이 아니다. 정보를 이해할 만한 순서와 덩어리로 만드는 일이다. PDF를 Markdown으로 바꾸거나 문서를 청킹할 때 문제가 생기는 이유도 이쪽에 있다. 문자는 남아도 문장이 어느 질문에 답하는지, 문단이 왜 여기서 끝나는지, 이 표가 본문에서 어떤 역할을 하는지는 빠질 수 있다. 텍스트는 남았는데 글은 사라지는 순간이다.


문장은 정보를 담는 그릇이 아니라 판단의 단위다

문장은 단어를 나란히 붙인 결과가 아니다. 최소한 하나의 판단을 세운다. 무엇이 어떻다, 무엇이 일어났다, 무엇이 원인이다, 이것을 비교하자는 판단이다. 문장을 읽는다는 것은 단어를 아는 일과 조금 다르다. 누가 무엇에 대해 어떤 말을 했는지, 그 말이 앞 문장과 이어지는지 확인하는 일이다.

그래서 문장은 앞뒤에 놓일 때 더 또렷해진다. “비용이 늘었다”는 문장은 사실을 말한다. “비용이 늘었다. 다만 신규 채용을 제외하면 증가 폭은 작다”가 되면 첫 문장의 범위가 조정된다. “비용이 늘었다. 그래서 신규 채용을 멈춰야 한다”가 되면 사실에서 판단으로 넘어간다. 같은 단어가 들어가도 문장 사이의 연결이 정보의 성격을 바꾼다.

문서 구조가 텍스트 추출보다 넓은 이유가 여기 있다. 문장을 잘라내려면 글자 수만 볼 것이 아니라, 그 문장이 어떤 주장인지, 앞 문장을 보완하는지 뒤 문장의 근거가 되는지 살펴야 한다. 모든 문장을 같은 크기의 상자로 보면 정보가 움직이는 방향이 보이지 않는다.


문단은 줄바꿈이 아니라 생각의 호흡이다

문장은 하나의 판단을 만들고, 문단은 그 판단이 독자에게 납득될 만큼 움직일 시간을 만든다.

좋은 문단에는 작은 전개가 있다. 첫 문장이 화제를 꺼내고, 다음 문장이 중요성을 설명한다. 사례나 수치가 주장을 붙들고, 마지막 문장이 다음 생각으로 넘겨준다. 모든 문단이 이 순서를 따를 필요는 없다. 다만 문단이 바뀌었다면 독자는 무엇인가가 달라졌다고 느껴야 한다. 대상이나 관점이 바뀌었거나, 근거가 더해졌거나, 예외가 등장했을 때다.

이 감각이 사라지면 글은 정보 목록이 된다. 문장마다 맞는 말을 해도 독자는 왜 이 문장이 지금 여기에 있는지 알기 어렵다. 반대로 문단이 살아 있으면 독자는 한 번에 한 생각씩 붙든다. 읽는 속도가 빨라지는 이유는 문장이 짧아서가 아니라, 생각을 붙잡고 놓는 지점이 분명하기 때문이다.

청킹도 이 단위에서 다시 보게 된다. 문단 경계는 일정한 길이가 찼다는 표식이 아니라 문맥이 바뀌는 곳이다. 어디를 자를지 판단하려면 문장의 수보다 그 문단이 하고 있는 일을 먼저 물어야 한다.


서론과 결론은 본론의 포장이 아니다

서론·본론·결론은 학교 글쓰기의 형식으로만 남아 있는 말처럼 보인다. 실제로는 정보의 역할을 나누는 오래된 방식이다.

서론은 대개 답보다 질문을 먼저 준다. 이 글이 무엇을 다룰지, 무엇이 아직 설명되지 않았는지, 왜 여기까지 읽어야 하는지를 정한다. 독자는 서론을 읽고 본론에서 무엇을 찾아야 할지 안다.

본론은 정보를 늘어놓는 장소가 아니다. 처음에 세운 질문을 여러 번 좁히고 시험하는 공간이다. 주장 다음에는 근거가 오고, 근거 다음에는 해석이 오며, 필요하면 반례가 들어온다. 이 순서가 엉키면 근거는 인용으로 남아도 논증은 남지 않는다.

결론은 앞 문장을 짧게 반복하는 마지막 문단이 아니다. 본론을 거친 뒤 처음의 질문이 어디까지 바뀌었는지 보여 주는 자리다. 서론이 독자에게 문제를 건네는 문이라면, 결론은 그 문제를 다시 세상으로 돌려보내는 문이다. 좋은 결론은 요약보다 재배치에 가깝다. 무엇이 중심이고 무엇은 주변으로 밀려났는지 다시 정한다.

이 구조를 잃으면 문장은 남아도 정보의 방향이 흐려진다. 서론의 약속이 본론에서 회수되지 않고, 사례가 결론을 향해 가지 못하며, 결론이 앞의 근거와 연결되지 않는 식이다. 문서를 기계가 다루기 어려운 까닭은 길이만이 아니다. 이런 논증의 끈이 보이지 않는다는 점도 크다.


제목과 표, 각주는 생각을 보조하는 바깥 구조다

문장과 문단, 논증만으로 문서가 끝나는 것은 아니다. 제목은 지금 읽는 생각이 더 큰 글에서 어디에 있는지 알려 준다. 같은 문장도 가정 아래에 있으면 전제로 읽히고, 위험 요인 아래에 있으면 경고로 읽힌다. 제목은 큰 글자가 아니라 해석의 방향 표지판이다. W3C, Headings

표는 문장을 다른 방식으로 압축한다. 셀의 숫자는 열 제목, 행 제목, 단위, 각주와 함께 읽혀야 한다. 그림은 캡션과 본문이 있어야 무엇을 보여 주는지 알 수 있다. 각주는 본문에서 잠시 벗어나지만, 어떤 주장에 조건과 출처를 붙인다. 이런 요소는 장식이 아니라 본문의 뜻을 조정하는 보조 구조다. WHATWG HTML, Tables

페이지 위 배치도 중요하다. 다단 문서의 읽기 순서가 엉키면 문단의 논증 자체가 무너질 수 있다. 읽기 순서를 단일 번호가 아니라 요소 사이의 관계로 보려는 연구가 나온 이유다. Zhang et al., 2024

하지만 이 층은 출발점이 아니라 표현의 층이다. 레이아웃은 문장과 문단, 논증의 관계를 눈으로 읽히게 한다. 페이지의 구조를 잘 보존해도 정보의 구조를 잃으면 문서는 보기 좋은 조각으로만 남는다.


문서 구조는 네 겹으로 읽을 수 있다

문서 구조는 하나의 트리도, 하나의 레이아웃도 아니다. 적어도 네 겹이 포개져 있다.

층질문예시
문장이 문장은 어떤 판단을 하는가사실, 주장, 질문, 조건
문단이 생각은 어떻게 전개되는가설명, 근거, 반례, 전환
논증글 전체는 어디로 가는가서론의 질문, 본론의 전개, 결론의 재배치
표현이 관계를 어떻게 읽히게 하는가제목, 표, 캡션, 각주, 페이지 배치

이 표는 정답 스키마가 아니다. 문서를 설계하거나 변환할 때 빠뜨리기 쉬운 층을 구분하기 위한 작업 모델이다. 실제 문서는 이 층들이 서로 얽혀 있다. 문장 하나가 표의 근거를 가리키고, 표의 각주가 본론의 주장을 제한하며, 제목이 문단 전체의 해석 범위를 정한다.

그래서 문서를 구조화한다는 것은 요소에 이름표를 붙이는 일보다 크다. “이것은 제목이다”, “이것은 표다”라고 분류하는 데서 멈추지 않고, 이 문장이 무엇을 주장하며 어떤 문단에 속하는지, 이 문단이 전체 논증에서 무슨 일을 하는지, 이 표가 어느 주장에 근거를 더하는지까지 되짚는 일이다.


온톨로지는 구조화된 문서에 무엇을 더하는가

여기서 온톨로지가 등장한다. 온톨로지는 문서 안의 모든 문장을 어려운 개념으로 바꾸는 작업이 아니다. 어떤 것이 무엇인지, 무엇과 어떤 관계를 맺는지, 그 관계가 어느 근거에서 나왔는지를 명시하는 약속에 가깝다.

Docling이 표를 표로, 캡션을 캡션으로, 절 제목을 절 제목으로 남겨 두었다고 하자. 온톨로지의 질문은 한 단계 더 간다. 이 표는 어느 절에 속하는가. 이 수치는 어떤 지표를 나타내는가. 본문의 어느 문장이 이 표를 근거로 삼는가. 문서 안에서는 가까이 놓여 있던 것들이 온톨로지에서는 속한다, 설명한다, 근거가 된다, 제한한다 같은 관계로 드러난다.

관계를 마음대로 만들 수는 없다. “비용이 늘었다”라는 문장을 비용 증가라는 개념에 연결할 수는 있지만, 그 문장이 사실인지 예측인지 권고인지는 문맥을 확인해야 한다. 표의 셀 하나도 행·열 헤더와 단위, 각주를 빼고는 제대로 해석할 수 없다. 온톨로지의 노드에 원문 위치와 인용 가능한 문장 단위의 근거가 함께 남아야 하는 이유다.

문서 구조와 온톨로지는 같은 일을 하지 않는다. 전자는 읽을 수 있는 문서의 형태와 연결을 남기고, 후자는 그 연결 가운데 무엇을 지식으로 다룰지 규정한다. 문서 구조 없이 만든 온톨로지는 근거가 잘린 추상화가 되기 쉽고, 온톨로지 없이 쌓인 문서 구조는 검색 가능한 조각에 머물기 쉽다.


Docling은 여기서 어디까지 할 수 있을까

Docling 같은 도구는 이 네 층 가운데 주로 표현의 층과 문서 요소의 층을 읽어 낸다. 페이지의 영역을 나누고, 제목·본문·표·그림을 구별하며, 읽기 순서와 원문 위치를 보존하려 한다. 서로 다른 파일 형식을 공통 문서 모델로 옮길 때 꼭 필요한 일이다.

다만 도구가 문서의 논증을 자동으로 완전히 이해한다고 생각하면 너무 멀리 간다. 어떤 문단이 실제로 반례인지, 결론이 앞의 주장을 어떻게 바꾸는지, 한 문장이 사실인지 권고인지 구분하는 일에는 주제와 독자, 글 전체의 맥락이 필요하다. 문서 모델은 그 판단을 대신하기보다 판단할 수 있는 자리를 남겨 준다.

그래서 좋은 문서 처리는 글자를 많이 뽑아내는 데서 끝나지 않는다. 문장을 문장으로, 문단을 문단으로, 논증을 논증으로 다시 읽을 수 있어야 한다. 그 위에서 온톨로지는 문서의 요소와 주장, 근거 사이에 어떤 관계를 정본으로 남길지 선택한다. 그래야 검색 결과도 단순한 문장 조각이 아니라 “이 결론을 뒷받침한 근거”, “이 가정 아래의 설명”처럼 돌아올 수 있다.

문서는 정보의 저장소가 아니다. 정보가 생각이 되고, 생각이 글이 되고, 관계를 가진 지식으로 이어지는 순서다.