병합된 셀 표 추출이 깨지는 이유?
4가지 일반적인 원인과 해결 방법
당신만 그런 게 아닙니다. 이것은 가장 흔한 추출 문제입니다. 도구가 텍스트를 읽지만, 데이터가 있어야 할 곳에 빈 셀이 생기거나, 열 헤더가 엉뚱한 열에 흩어지거나, 행이 그냥 사라진 결과가 나옵니다. 원본 문서의 병합된 셀이 거의 항상 원인이며, 해결 방법은 어떤 종류의 병합된 셀 패턴이 문제를 일으키는지 이해하는 데 달려 있습니다.
핵심 요약
- 추출은 오류 없이 완료되었지만, 원본의 모든 병합된 셀이 도구를 조용한 추측으로 몰아넣어 전체 열이 비어서 돌아왔습니다.
- 그 빈 셀들은 무작위가 아닙니다. 네 가지 특정 병합 셀 패턴이 원인이며, 각각 30초 안에 진단할 수 있는 명명된 근본 원인이 있습니다.
- 추출 후 한 가지 확인(남은 셀 병합 해제, 값 채우기, 원본과 행 수 확인)만으로 모든 도구가 취약한 조용한 손상을 잡아낼 수 있습니다.
이런 모습, 익숙하지 않나요?
지금 보고 계신 상황과 다음 중 하나가 일치할 가능성이 높습니다:
- 데이터가 있어야 할 열이 비어 있습니다. 예: "Q1 매출"이라는 병합된 카테고리 레이블이 세 행에 걸쳐 있는데, 첫 행에만 텍스트가 있고 나머지 두 행은 비어 있습니다.
- 데이터가 잘못된 열로 밀려났습니다. "금액" 열에 속해야 할 값이 병합된 헤더 때문에 열 경계 인식이 흐트러져 "설명" 열에 들어갔습니다.
- 열 헤더가 누락되거나 뒤섞였습니다. "제품 상세"가 다섯 열에 걸쳐 있는 두 행짜리 헤더 블록에서, 추출 과정이 이를 단일 열로 축소했습니다.
- 행 수가 맞지 않습니다. 원본은 14개의 데이터 행인데 출력은 9개이거나 그 반대인 경우, 병합된 행 경계가 잘못 계산되었기 때문입니다.
각 증상은 서로 다른 근본 원인을 가리킵니다. 좋은 소식은, 어떤 패턴인지만 파악하면 해결 방법은 간단하다는 점입니다.
큰 그림: 병합된 셀이 추출을 망가뜨리는 이유
표는 격자(grid)입니다. 행과 열이 셀을 이루고, 각 셀은 하나의 값을 담습니다. 병합된 셀은 인접한 셀들을 하나의 시각적 단위로 결합합니다. 화면에서는 하나의 큰 셀로 보이지만, 내부 구조는 여전히 개별 셀로 취급되며 그중 하나만 실제 데이터를 가지고 있습니다.
시각적 모양과 구조적 현실 사이의 이 간극이 바로 추출 도구가 넘어지는 지점입니다. 기존 OCR을 사용하든 비전 AI 모델을 사용하든, 추출 엔진은 "이 시각적 범위를 어떻게 깔끔한 격자로 다시 매핑할까?"를 결정해야 합니다. 바로 그 결정에서 문제가 발생합니다.
병합된 셀은 추출 도구가 추측하도록 강제합니다. 추측이 틀리면 두 접근 방식 모두 실패합니다. 그리고 병합된 셀의 경우, 추측이 틀리는 경우가 빈번합니다.
근본 원인 1: 줄 단위 OCR은 2차원 구조를 처리할 수 없음
증상
텍스트는 모두 있지만, 행-열 매핑이 깨집니다. "Part A | $12.50 | 3 | $37.50"이어야 할 행이 "Part A | $12.50 | "로 출력되고 나머지 값은 다음 줄로 밀려납니다. 여러 행에 걸쳐 있는 병합 셀은 출력에서 빈 행을 만듭니다.
근본 원인: 좌표 단절
기존 OCR 엔진은 문서를 순차적으로 처리합니다. 즉, 위에서 아래로 줄 단위, 왼쪽에서 오른쪽으로 단어 단위입니다. 이는 문단에는 효과적이지만, 표의 경우 열을 정의하는 수직 정렬을 이해하지 못하고 각 텍스트 블록을 독립된 줄로 처리합니다.
구체적인 예를 들어보겠습니다. "Office Supplies"라는 병합 셀이 세 행에 걸쳐 있는 구매 주문서를 가정해 보겠습니다.
| 카테고리 (병합) | 품목 | 수량 | 단가 |
|---|---|---|---|
| Office Supplies | Notebooks | 10 | $3.50 |
| Pens (Box) | 5 | $8.00 | |
| Stapler | 2 | $12.00 |
줄 기반 OCR 엔진은 이를 다음과 같이 읽습니다.
Line 1: "Office Supplies" | "Notebooks" | "10" | "$3.50"
Line 2: "Pens (Box)" | "5" | "$8.00"
Line 3: "Stapler" | "2" | "$12.00"어떤 일이 발생했는지 주목하세요. "Office Supplies"가 같은 수직 위치에 있었기 때문에 OCR이 해당 행의 실제 데이터와 함께 1행에서 읽었습니다. 2행과 3행에서 OCR 엔진은 "Office Supplies"가 여전히 해당 행을 관할한다는 것을 알지 못합니다. 텍스트가 물리적으로 존재하지 않기 때문입니다. 그 결과 카테고리 열이 2행과 3행에서 비어 있는 추출 결과가 생성되어, 카테고리별로 그룹화하는 다운스트림 분석이 모두 깨집니다.
해결 방법
전처리: 추출 전에 병합된 셀 경계를 감지합니다. ImageToTable.ai를 포함한 일부 도구는 텍스트를 읽기 전에 먼저 문서 레이아웃을 분석하여 병합된 범위를 포함한 표 그리드를 식별합니다. 전체 2D 구조를 미리 파악함으로써 추출 엔진은 "Office Supplies"가 1~3행을 차지한다는 것을 알고 출력의 세 행 모두에 해당 값을 전파할 수 있습니다. 현재 사용 중인 도구가 이 기능을 제공하지 않는다면, OCR이나 텍스트 추출 전에 레이아웃 분석을 별도 단계로 수행하는 도구를 찾아보세요. 이것이 라인 기반 추출에서 업그레이드하는 가장 큰 개선점입니다.
근본 원인 2: 범위 모호성 — 모든 곳에 속하는 셀
증상
병합된 열 머리글로 인해 데이터가 잘못된 머리글 아래에 표시됩니다. 예를 들어, "제품 상세 | 1분기 | 2분기 | 3분기 | 4분기"라는 머리글이 있고 "제품 상세"가 두 개의 하위 열("품목" 및 "SKU")에 걸쳐 있는 경우, 추출된 출력에서 두 하위 열이 하나로 합쳐지거나 값이 중복됩니다.
근본 원인: 범위 모호성
병합된 셀이 여러 열에 걸쳐 있을 때, 추출 도구는 "이 셀이 열 1, 열 2, 아니면 모두에 속하는가?"라는 질문에 답해야 합니다. 사람의 눈에는 명확해 보이지만, 알고리즘에게는 모호합니다.
이는 특히 패치 기반 분석을 사용하는 비전 AI 모델에서 까다롭습니다. 이러한 모델은 이미지를 작은 타일로 나누고 각각을 독립적으로 분석합니다. 다섯 열에 걸친 병합된 셀은 여러 타일로 분할됩니다. 각 타일은 병합된 셀의 일부만 보게 되며, 모델은 이를 다시 연결해야 하는데, 이 과정에서 모든 이음새에서 오류가 발생합니다. 표 재구성의 실제 실패 사례를 분석한 Medium 기사에서도 이 문제를 정확히 지적했습니다. 이미지를 패치로 나누는 비전 모델은 "전역적 연속성에 의존하는 객체(표가 그중 하나)에 대해 성능이 좋지 않다"고 합니다.
해결 방법
예상 구조에 맞게 추출을 설계하세요. 원본 문서에 "제품 상세 (항목 | SKU)" 같은 헤더가 있다면, 도구가 계층을 추측하게 두지 말고 "항목"과 "SKU"로 열 이름을 직접 정의하세요. ImageToTable.ai와 같이 사용자 정의 열 추출을 지원하는 도구는 원하는 열을 정확히 지정할 수 있습니다. 그러면 AI가 각 필드의 의미를 이해하여 각 열을 문서의 올바른 하위 열에 매칭하며, 병합 범위를 추측하지 않습니다. 이렇게 하면 모호성 문제가 완전히 사라집니다. 도구에게 "이 병합 셀의 너비는 얼마인가?"라고 묻는 대신, "이 열들이 필요합니다. 문서에서 찾아주세요."라고 지시하는 것입니다.
근본 원인 3: 불규칙한 행 높이가 리듬을 깨뜨림
증상
추출된 테이블에 행이 너무 적거나 너무 많습니다. 테이블 전체 너비에 걸친 섹션 소계 행이 새 행으로 계산되어 그리드가 확장되거나, 완전히 건너뛰어 그리드가 축소됩니다. 추출된 테이블의 총 행 수가 원본과 일치하지 않습니다.
근본 원인: 행 높이 변동
대부분의 테이블 추출 알고리즘은 수평선이나 공백 간격을 감지하여 행 경계를 식별합니다. 여러 행에 걸쳐 병합된 셀은 시각적 높이 패턴을 변경합니다. 병합된 콘텐츠에 더 많은 공간이 필요하면 더 높아지고, 빈 병합 영역이면 더 낮아집니다. 어느 쪽이든 알고리즘의 행 경계 휴리스틱이 혼란을 겪습니다.
이는 특히 계단 패턴에서 흔히 발생합니다. 병합된 셀이 대각선 경계를 만들기 때문입니다. 알고리즘은 일관되지 않은 높이를 보고 전체 블록을 하나의 큰 행으로 처리할지, 분할할지 판단하지 못합니다.
해결 방법
후처리: 예상 구조와 행 수를 교차 확인하세요. 추출 후 간단한 온전성 검사를 실행하세요. 데이터 행 수가 예상과 일치합니까? 모든 인보이스에 3~12행의 라인 항목 섹션이 있다는 것을 알고 있다면, 해당 범위를 벗어나는 출력은 플래그를 지정하세요. Excel에서는 간단한 COUNTA 검사나 피벗 테이블을 사용하여 배치 간 행 수를 확인할 수 있습니다. 더 고급 도구는 추출된 구조를 예상 행 및 열 수와 자동으로 비교하고 불일치 사항을 강조 표시하여 수동 검토를 유도하는 내장 검증 기능을 제공합니다.
근본 원인 4: 후처리 검증 부재
증상
추출이 성공한 것처럼 보이지만 — 오류나 타임아웃 없이 — 데이터를 사용하려고 보면 값이 잘못된 행이나 열에 들어가 있습니다. 오류가 조용히 발생하기 때문에 추출 실패보다 더 위험합니다.
근본 원인: 후처리 붕괴
많은 추출 도구에는 감지된 텍스트 블록을 다시 그리드에 매핑하는 최종 조립 단계가 있습니다. 병합된 셀이 상위 단계에서 문제(좌표 분열, 범위 모호성, 행 높이 혼란)를 일으킨 경우, 후처리 단계는 종종 셀을 축소하거나 채워 직사각형 그리드에 맞추려고 합니다. 바로 여기서 조용한 데이터 손상이 발생합니다. 도구가 빈 셀을 이웃 값으로 채우거나, 전체 열을 왼쪽이나 오른쪽으로 이동시키거나, 결정한 그리드 모양에 맞지 않는 행을 삭제합니다.
구체적인 메커니즘: 후처리기는 감지된 셀 수에서 추론한 대상 그리드 모양(예: 4열 × 15행)을 가지고 있습니다. 병합된 셀이 이상 현상을 만들 때 — 예를 들어 4×16=64 그리드여야 할 곳에 63개의 셀이 감지된 경우 — 엔진은 그 공백을 처리해야 합니다. 일부 도구는 빈칸으로 채웁니다("빈 셀" 증상 생성). 다른 도구는 압축합니다: 63개의 셀을 64개 슬롯에 재분배하여 하나의 데이터 값을 잘못된 열로 밀어 넣습니다.
해결 방법
추출 후 검증을 강제하세요. 수동으로 하든 자동화하든, 병합된 셀이 있는 문서에서 추출한 모든 배치에는 교차 확인 단계가 포함되어야 합니다. 가장 실용적인 방법: 추출된 테이블을 내보내고, Excel이나 Google Sheets에서 기본 제공되는 "셀 병합 해제" 기능을 사용하여 남아 있는 병합된 셀을 모두 해제한 다음, "채우기"를 사용하여 값을 새로 빈 셀에 전파하세요. 이렇게 하면 원본 소스에 대해 검증할 수 있는 깔끔한 직사각형 그리드가 생성됩니다.
실제로 효과 있는 세 가지 해결책
위의 네 가지 근본 원인을 바탕으로, 가장 간단한 방법부터 가장 철저한 방법까지 실용적인 해결 경로를 제시합니다.
도구가 지원한다면, 전처리 단계로 레이아웃 분석이나 표 구조 감지를 활성화하세요. 이렇게 하면 텍스트를 읽기 전에 병합된 범위를 포함한 전체 그리드를 식별하도록 추출 엔진에 지시합니다. 이 기능이 없는 도구의 경우 문서를 미리 분할하는 것을 고려하세요. PDF의 경우 Adobe Acrobat의 "양식 준비"와 같은 도구가 경계를 수동으로 정의하는 데 도움이 될 수 있습니다. 이미지의 경우, 별도의 첫 단계로 표 감지를 수행하는 도구를 찾으세요.
도구가 열을 추측하도록 의존하지 마세요. 열을 명시적으로 지정하세요. ImageToTable.ai의 사용자 정의 열 추출을 사용하면 원하는 열 이름을 정의하고, AI는 위치가 아닌 의미론적 이해를 통해 각각을 문서의 올바른 데이터와 매칭합니다. 즉, 병합된 헤더가 레이아웃 감지를 혼란스럽게 하더라도, AI가 "SKU"가 무엇을 의미하는지(단순히 어디에 있는지가 아니라) 알기 때문에 열 매핑은 여전히 정확합니다.
추출 후 Excel이나 Google Sheets에서 간단한 검증을 실행하세요: 병합된 상태로 남아 있는 셀은 병합을 해제하고, 아래로 채우기를 사용하여 값을 전파한 후, 행 수가 원본 문서와 일치하는지 확인하세요. 일괄 처리의 경우 열당 COUNTA 수식을 설정하여 예상보다 항목이 적은 열을 표시하세요. 동일한 문서 유형을 정기적으로 처리하는 경우 이 검증을 템플릿으로 저장하세요. 실행하는 데 30초밖에 걸리지 않으며 거의 모든 조용한 데이터 손상을 잡아냅니다.
에스컬레이션 시점: 자동으로 수정할 수 없는 병합 셀
일부 병합 셀 패턴은 고급 AI조차 처리하기 까다롭습니다. 추출을 수정하려고 시도하기보다 원본 문서를 수동으로 전처리하는 것이 나은 경우는 다음과 같습니다:
- 중첩 병합(동일 셀에 rowspan + colspan): 3행과 2열을 동시에 병합하는 셀은 그리드에 구멍을 만들어 어떤 도구로도 완벽하게 채울 수 없습니다. 추출 전에 문서를 더 단순한 테이블로 미리 분할하면 더 나은 결과를 얻을 수 있습니다.
- 계단식 병합 패턴: 1행이 A-B열을 병합하고, 2행이 B-C열을, 3행이 C-D열을 병합하는 대각선 경계는 거의 모든 추출 엔진을 망가뜨립니다. 가장 효율적인 해결책은 추출 전에 소스 애플리케이션에서 문서를 플랫 테이블로 내보내는 것입니다.
- 페이지 나누기를 넘는 병합 셀이 있는 다중 페이지 테이블: 최고의 도구도 어려움을 겪습니다. 각 페이지를 독립적으로 처리하고 결과를 수동으로 결합하는 것을 고려하세요.
솔직한 답변: 문서에 복잡한 중첩 또는 계단식 병합이 있고 월 50개 이상의 문서를 처리한다면, 이러한 패턴을 기본적으로 처리하는 도구로 변경하는 ROI를 계산해 볼 가치가 있습니다. 간헐적인 문서의 경우, 잘못된 출력과 씨름하는 것보다 추출 전 수동 전처리가 더 저렴합니다.
자주 묻는 질문
AI 추출이 기존 OCR보다 병합 셀을 더 잘 처리하나요?
네 — 하지만 완벽하지는 않습니다. Vision AI 모델은 문서를 한 줄씩이 아닌 전체 레이아웃으로 분석하므로, 줄 기반 OCR보다 병합 셀 경계를 더 정확하게 식별합니다. 그러나 범위 모호성은 AI 모델에게 여전히 과제이며, 패치 기반 분석이 병합 셀을 타일 간에 조각낼 수 있기 때문입니다. ImageToTable.ai와 같이 레이아웃 분석과 의미론적 필드 매칭을 결합한 도구는 기존 OCR보다 병합 셀을 훨씬 잘 처리하지만, 특히 중첩 또는 계단식 패턴의 경우 100% 완벽하지는 않습니다.
재처리 없이 Excel에서 병합된 셀 추출 오류를 수정할 수 있나요?
네, 대부분의 행 병합 패턴에서 가능합니다. 열을 선택한 후 홈 → 병합하고 가운데 맞춤 → 셀 병합 해제로 이동한 다음, 빈 셀을 선택하고 Ctrl+D(아래로 채우기)를 눌러 값을 전파하세요. 열 병합 패턴의 경우 텍스트 나누기 또는 빠른 채우기를 사용하세요. 이는 임시방편으로 작동하지만, 일괄 처리의 경우 추출 상류에서 수정하세요.
PDF의 병합된 셀은 Excel의 병합된 셀과 동일한 문제인가요?
구조적으로는 그렇습니다. 하지만 PDF는 단순히 "병합 해제"할 수 없기 때문에 수정하기가 더 어렵습니다. PDF 병합 셀은 페이지 레이아웃에 고정되어 있으므로, 원본이 아닌 추출 시점에 수정이 이루어져야 합니다.
원본 문서에 병합된 셀처럼 보이지만 실제로는 그렇지 않은 테두리가 있으면 어떻게 하나요?
흔한 경우입니다. 희미하거나 끊어진 표 테두리는 특히 스캔본에서 별도의 셀이 병합된 것처럼 보이게 할 수 있습니다. 대비를 높이기 위해 이미지를 전처리해 보세요. 그러면 희미한 테두리를 감지할 수 있습니다. 구체적인 기법은 더 나은 감지를 위한 이미지 전처리 가이드를 참조하세요.
도구가 "테이블 추출 완료"라고 표시했는데 데이터가 잘못되었습니다. 무슨 일이 일어난 건가요?
이것이 근본 원인 4번입니다. 후처리기가 감지된 텍스트를 격자로 조립했지만, 병합된 셀로 인해 상류 오류가 발생했고 이에 플래그가 지정되지 않았습니다. "성공"은 직사각형 격자가 생성되었음을 의미했을 뿐, 격자가 정확하다는 의미는 아닙니다. 항상 샘플 출력을 검증하세요. 검증 워크플로우 구축에 대한 자세한 내용은 테이블 추출을 위한 포괄적인 문제 해결 가이드를 읽어보세요.
병합된 셀은 추출 오류의 가장 흔한 원인이지만, 어떤 패턴이 문제인지 이해하면 해결 방법은 대개 간단합니다.
먼저 레이아웃 분석을 처리하는 도구로 자신의 문서를 테스트해보세요. 추출 엔진이 한 글자도 읽기 전에 전체 그리드를 보면 많은 병합 셀 문제가 사라집니다.