AI를 위한 문서 파싱: PDF, 표, 그리고 지저분한 나머지
모델이 문서를 추론하기 전에, 무언가가 그것을 깨끗한 텍스트로 바꿔야 합니다. 그 화려하지 않은 단계가 조용히 모든 하류를 결정합니다.
문서를 다루는 대부분의 AI 프로젝트는 조용한 실패 지점을 공유하며, 그것은 거의 결코 모델이 아닙니다. 모델 이전의 단계입니다. PDF, 스캔된 양식, 스프레드시트를 모델이 실제로 읽을 수 있는 깨끗한 텍스트로 바꾸는 일이죠. 이것이 문서 파싱이며, 전체 파이프라인에서 가장 화려하지 않으면서 가장 과소평가되는 부분입니다. AI 시스템이 문서에 대해 이상한 답을 줄 때, 원인은 혼란스러운 모델보다 뒤죽박죽된 입력인 경우가 훨씬 많습니다. 이 해설은 그 단계가 왜 어려운지, 어디서 깨지는지, 그리고 그것을 잘 해내는 것을 어떻게 생각해야 하는지에 관한 것입니다.
문서는 텍스트가 아니다
어려움의 뿌리는 사람들이 좀처럼 알아차리지 못하는 불일치입니다. 모델은 선형적인 텍스트 흐름을 읽습니다 — 한 가지 다음에 한 가지, 순서대로. 문서는, 특히 PDF는, 그렇게 저장되지 않습니다. PDF는 페이지의 어디에 표시가 놓이는지를 기술합니다. 이 위치에 이 글리프, 저 위치에 저 선. 그 표시들이 한 문단을 이룬다는 것, 이 블록이 제목이라는 것, 이 정렬된 숫자들이 표라는 것을 반드시 기록하지는 않습니다. 시각적 의미는 여러분의 눈에는 명백하고 순진한 텍스트 추출기에는 보이지 않습니다.
그래서 파싱은 사실 재구성입니다. 파서는 위치 지정된 표시들을 보고, 사람이 즉각 보는 논리적 구조 — 읽기 순서, 문단, 단, 제목, 목록, 표 — 를 복원해야 합니다. 그 재구성이 잘되면 모델은 깨끗하고 순서 잡힌 텍스트를 받고 분별 있게 행동합니다. 그것이 잘못되면 모델은 뒤섞인 엉망을 받고 뒤섞인 답을 내놓습니다 — 그리고 그 실패는 한 단계 상류의 파싱 문제인데도 모델 문제처럼 보입니다.
쉬움에서 잔혹함까지의 스펙트럼
모든 문서가 똑같이 어렵지는 않으며, 여러분의 문서가 어디에 떨어지는지 아는 것이 현실적인 기대를 세웁니다.
쉬운 끝은 태생적으로 디지털인, 텍스트 기반 문서입니다 — 워드 프로세서에서 내보낸 PDF, HTML 페이지, 일반 텍스트 파일. 텍스트가 진짜로 존재하고 합리적으로 순서 잡혀 있어, 추출이 대체로 믿을 만합니다. 여기서도 다단이나 사이드바 같은 레이아웃 특성은 순진한 추출기가 분리되어야 할 텍스트를 뒤섞게 만들 수 있습니다.
어려운 끝은 스캔된 문서와 텍스트 이미지입니다 — 사진 찍은 계약서, 팩스로 받은 양식, 오래된 보고서의 스캔본. 여기에는 텍스트가 전혀 없고 픽셀만 있어, 이미지에서 문자를 복원하려면 광학 문자 인식(OCR)이 필요합니다. OCR은 엄청나게 향상되었지만, 품질이 나쁜 스캔, 흔치 않은 글꼴, 손글씨, 낮은 대비에서는 여전히 불완전하며, 그 오류는 소리 없이 모든 하류로 전파됩니다.
잔혹한 중간에는 간단해 보이지만 그렇지 않은 문서들이 자리합니다. 복잡한 다단 레이아웃의 PDF, 구조가 의미를 지니는 양식, 그리고 무엇보다 표가 있는 모든 것이죠. 대부분의 실제 문서 모음은 이 셋의 혼합이며, 그래서 여러분의 테스트 파일을 멋지게 처리하는 파서도 전체 집합에서는 여전히 고전할 수 있습니다.
표는 파이프라인이 죽으러 가는 곳이다
표는 다른 무엇보다 더 많은 문서 파이프라인을 망가뜨리기 때문에 별도의 절을 받을 만합니다. 표의 의미는 전적으로 그 2차원 구조에 — 한 셀과 그 행, 그 열 헤더 사이의 관계에 — 깃들어 있습니다. 그것을 선형적인 텍스트 흐름으로 평평하게 만들면 의미가 증발합니다. "매출"과 "412"와 "2019"는, 412가 2019년의 매출이라는 것을 무언가 보존하지 않는 한, 쓸모없는 파편입니다.
순진한 추출기는 표를 표시가 저장된 순서대로 읽어, 흔히 숫자가 헤더에서 떨어져 나간 뒤죽박죽을 만듭니다. 그러면 모델은 연결이 끊긴 값들을 보고 관계를 추측하거나 발명하는데 — 이것이 바로 전체 시스템의 신뢰를 갉아먹는, 자신만만하지만 틀린 답 류입니다. 표를 잘 처리한다는 것은 어떤 영역이 표라는 것을 감지하고, 그 행과 열을 복원하고, 셀을 헤더에 묶어 두는 형태로 표현하는 것을 뜻합니다. 이것은 진짜로 어렵고, 범용 파서가 가장 자주 부족한 지점이며, 여러분의 문서가 표 중심이라면 막연한 기대가 아니라 전용 주의를 받을 만합니다.
접근법들, 그리고 각각이 잘하는 것
단 하나의 올바른 도구는 없습니다. 합리적인 접근법들은 사다리를 이루며, 여러분의 문서가 요구하는 만큼만 올라가면 됩니다.
- 직접 텍스트 추출. 태생적으로 디지털인, 텍스트 기반 파일이라면 내장된 텍스트를 직접 꺼내십시오. 문서가 협조할 때 빠르고, 저렴하고, 정확합니다. 항상 이것을 먼저 시도하십시오. 필요 없는 문서에 더 무거운 기계를 들이대지 마십시오.
- OCR. 텍스트가 픽셀에 갇혀 있을 때 — 스캔본과 이미지 — OCR은 피할 수 없습니다. 좋지만 흠 없지는 않은 결과를 예상하고, 품질이 원본 이미지의 품질을 바짝 따라간다고 예상하십시오.
- 레이아웃 인식 파싱. 복잡한 레이아웃과 표의 경우, 문자뿐 아니라 문서의 구조를 모델링하는 도구가 읽기 순서와 표 관계를 보존하는 데 뚜렷이 더 낫습니다. 이것이 과소평가된 파이프라인들이 가장 많이 빠뜨리는 단입니다.
- 비전 가능 모델. 어떤 모델은 페이지 이미지를 직접 받아 레이아웃까지 포함해 그 내용을 해석할 수 있습니다. 전통적인 파서를 무너뜨리는 지저분한 문서에서 빛을 낼 수 있지만, 더 높은 비용이 들고, 어떤 모델 출력에든 적용하는 것과 같은 주의가 필요합니다 — 잘못 읽을 수 있으니 검증하십시오.
실용적인 수는 한 도구로 모든 것을 처리하려 하기보다 접근법을 문서에 맞추는 것입니다. 깨끗한 디지털 보고서 모음과 스캔된 양식 더미는 서로 다른 처리를 원하며, 둘 다를 한 경로로 밀어 넣으면 둘 중 하나가 고통받는 것이 보장됩니다.
청킹: 파싱이 결정하는, 파싱 다음 단계
파싱이 여정을 끝내는 경우는 드뭅니다. 대부분의 AI 문서 시스템에서 텍스트는 그다음 검색을 위해 청크로 쪼개지며, 그 쪼개기의 품질은 전적으로 파싱이 구조를 보존했는지에 달려 있습니다. 파서가 문단, 섹션, 표를 복원했다면 의미 있는 경계를 따라 청킹하고 관련된 내용을 함께 묶어 둘 수 있습니다. 구분 없는 텍스트 벽을 만들어 냈다면, 표를 반으로 자르고, 제목을 그 섹션에서 떼어 내고, 문장을 고아로 만들며 맹목적으로 쪼개는 일만 남습니다. 이것이, 모델이 원시 파싱 결과를 결코 보지 않더라도 파싱 품질이 중요한 이유입니다. 깨끗한 파싱은 깨끗한 청킹을 가능하게 하고, 깨끗한 청킹이 검색으로 하여금 올바른 맥락을 떠오르게 합니다. 파싱 단계의 쓰레기는 그 안에 머물지 않습니다. 이후 모든 단계에서 복리로 불어납니다.
검증하라, 실패가 소리 없으므로
문서 파싱의 가장 위험한 속성은 그 실패가 조용하다는 것입니다. 잘못 행동하는 모델은 명백합니다. 한 열을 떨어뜨리고, 표를 뒤섞고, 한 섹션을 소리 없이 건너뛰는 파서는 멀쩡해 보이는 출력을 만듭니다 — 누군가 손상된 입력으로 만들어진 답을 토대로 행동하기 전까지는요. 방어책은 파서를 다른 신뢰할 수 없는 구성 요소처럼 다루는 것입니다. 특히 표와 복잡한 레이아웃에서 그 출력을 원본 문서와 대조해 점검하고, 추출된 값이 그럴듯한 범위에 떨어지는지 온전성 검사를 하고, 합이 맞지 않는 숫자나 사라진 섹션처럼 나쁜 파싱의 분명한 징후를 지켜보십시오. 파싱 오류의 비용은 파싱 오류가 아닙니다. 자신만만하게 들렸기에 아무도 의심하지 않은 틀린 답입니다.
정리
문서 파싱은 어떤 문서-AI 시스템이 얼마나 잘 작동하는지를 조용히 좌우하는, 화려하지 않은 단계입니다. 문서는 텍스트가 아닙니다. 재구성되어야 하는 구조이며, 그 재구성은 깨끗한 디지털 파일에는 쉽고, 스캔본에는 어렵고, 표에는 잔혹합니다. 한 도구를 모든 것에 강요하는 대신 접근법을 문서에 맞추십시오 — 직접 추출, OCR, 레이아웃 인식 파싱, 또는 비전 모델로요. 파싱 품질이 전파된다는 것을 기억하십시오. 깨끗한 파싱은 깨끗한 청킹과 좋은 검색을 가능하게 하고, 나쁜 파싱은 모든 하류를 손상시킵니다. 그리고 출력을 검증하십시오. 파싱은 소리 없이 실패하고, 자신만만한 틀린 답은 가장 비싼 종류이니까요. 이 단계를 제대로 하면 모델에게 진짜 기회가 생깁니다. 잘못하면 어떤 모델도 여러분을 구할 수 없습니다.
