표 인식이란 무엇인가: 표 안의 숫자를 업무 데이터로 바꾸는 방법 완전 정리
표 인식(Table Recognition)이란, 문서에 그려진 표에서 행과 열의 경계와 병합된 셀의 범위를 판별하고 각 값이 어느 항목에 속하는지까지 복원해 기계가 그대로 사용할 수 있는 구조 데이터로 바꾸는 처리입니다.
표 인식이 필요한 이유
글자는 다 읽혔는데 숫자가 맞지 않습니다.
문서에서 텍스트를 뽑아내는 기술은 오래전부터 있었습니다. 인쇄된 문서라면 문자 단위 정확도가 99%를 넘는 것도 어렵지 않고, 실제로 텍스트 유사도 기준 98.80%를 기록한 공공문서 평가 사례도 있습니다. 그런데 같은 평가에서 표 구조 유사도는 79.18%에 머물렀습니다. 글자는 거의 다 읽혔는데 그 글자들이 어느 칸에 있었는지를 되살리는 데서 스무 지점 넘게 벌어진 것입니다.
이 격차가 업무에서 어떤 결과를 만드는지가 문제입니다. 부가가치세 신고서에는 대분류와 중분류, 구분, 항목번호, 금액, 세율, 세액이 한 표에 들어갑니다. 여기서 5,000,000이라는 숫자 하나를 정확히 읽어도 그 값이 세금계산서 발급분의 세액인지 매입자발행 세금계산서의 세액인지 연결되지 않으면 업무에는 쓸 수 없습니다. 오히려 담당자가 원본을 다시 열어 확인해야 하므로 일이 하나 늘어납니다. 표 인식은 값을 읽는 문제가 아니라 값의 자리를 되살리는 문제입니다.
표 인식의 정확한 정의: OCR과 무엇이 다른가
OCR과 표 인식, 세 가지 축의 차이
첫째, 대상이 다릅니다. OCR은 이미지 위의 문자를 대상으로 삼습니다. 표 인식은 문자에 더해 셀의 경계선과 병합 범위, 헤더와 데이터 영역의 구분, 그리고 각 값이 놓인 좌표 관계까지를 함께 대상으로 삼습니다. 표에 선이 그려져 있지 않은 경우도 많기 때문에, 눈에 보이는 괘선만이 아니라 여백과 정렬로 암시된 경계까지 판별해야 합니다.
둘째, 목표가 다릅니다. OCR의 목표는 적힌 글자를 빠짐없이 옮기는 것입니다. 표 인식의 목표는 원본 표와 같은 구조를 가진 데이터를 만들어 내는 것입니다. 같은 표를 처리해도 OCR은 셀 안의 문자열을 순서대로 나열하고, 표 인식은 행과 열의 좌표를 가진 격자를 복원한 뒤 그 안에 값을 채워 넣습니다.
셋째, 성과지표가 다릅니다. OCR은 문자 단위 정확도나 유사도 기반 정확도로 측정합니다. 표 인식은 표 구조 유사도(TEDS)로 측정합니다. 이 지표는 추출한 표를 트리 구조로 바꾼 뒤 원본 표의 트리와 얼마나 일치하는지를 재기 때문에, 셀 값이 모두 맞아도 병합 범위가 틀리면 점수가 내려갑니다. 텍스트 정확도만 보고 도입을 결정하면 표 중심 문서에서 예상과 다른 결과를 얻게 되는 이유가 여기에 있습니다.
두 기술은 대체 관계가 아닙니다. OCR이 읽지 못한 글자는 표 인식으로도 채울 수 없고, 표 인식이 실패하면 정확하게 읽은 글자도 쓸 자리를 잃습니다. 문자 인식 위에 구조 복원을 올리는 순서가 맞습니다.
표 인식을 업무에 투입하려면 무엇이 필요한가
실제 운영에 들어가는 표 인식의 6가지 조건
첫째, 병합된 셀의 범위를 정확히 판별해야 합니다. 행 방향과 열 방향으로 동시에 병합된 셀은 한 값이 여러 행을 대표하는 구조를 만듭니다. 지방자치단체의 지출금 반납 절차 문서를 예로 들면, 구분 열의 직접이라는 값 하나가 아래 세 개 행을 모두 포괄하고, 국비와 도비 아래에 잔액과 이자가 다시 나뉘며, 그 아래에 세입과목과 세출과목이 또 갈립니다. 병합 범위를 잘못 잡으면 위탁사업의 반환 계정이 도 직접 사업의 계정으로 옮겨 붙습니다.
둘째, 다층 헤더에서 값이 속한 항목 경로를 복원해야 합니다. 관공서 서식과 세무 신고서는 헤더가 두 단이나 세 단으로 쌓이는 경우가 흔합니다. 값 하나를 꺼낼 때 필요한 것은 열 이름 하나가 아니라 상위 헤더부터 이어지는 경로 전체입니다. 종합소득세 신고서에서 39,460,000이라는 값은 결정세액 아래 종합과세 아래 종합소득세라는 세 단계 경로를 거쳐야 의미가 확정됩니다.
셋째, 표를 가리는 요소를 처리해야 합니다. 실제 접수 문서에는 표 위에 도장이 찍히고 취소선이 그어지며 워터마크가 겹칩니다. 사람은 도장 아래 숫자를 자연스럽게 읽어 내지만, 구조를 판별하는 모델에게 도장은 셀 경계를 지우는 방해 요소입니다. 도장 하나 때문에 표 전체의 행 구분이 어긋나면 그 아래 모든 값의 항목 연결이 밀립니다.
넷째, 표 바깥의 정보와 연결되어야 합니다. 금액 단위가 표 제목에 천원으로 적혀 있거나, 각주 기호로 예외 조건이 달려 있거나, 합계 검증식이 표 아래에 문장으로 서술된 경우가 많습니다. 표만 잘라 내면 이 정보가 사라져 값의 자릿수가 천 배 어긋나는 일이 생깁니다.
다섯째, 구조 지표로 성능을 측정해야 합니다. 도입 검토 단계에서 받아 보는 숫자가 문자 정확도 하나뿐이라면 표 성능은 확인되지 않은 상태입니다. 표 구조 유사도를 별도로 요구하고, 자사 문서로 측정한 값을 받아야 합니다. 공공문서 평가에서 표 구조 복원이 86%로 나온 사례와 79.18%로 나온 사례가 함께 존재한다는 사실은, 이 지표가 문서 종류에 따라 크게 흔들린다는 뜻입니다.
여섯째, 각 값의 원문 위치를 함께 돌려주어야 합니다. 표에서 뽑은 값이 원본의 어느 좌표에서 나왔는지 확인할 수 없으면, 검수자는 의심스러운 값 하나를 확인하려고 표 전체를 다시 읽게 됩니다. 위치 정보가 함께 오면 화면에서 해당 셀만 짚어 확인할 수 있습니다.
표 인식의 실제 적용 방법
출력 형식을 먼저 정합니다
프로젝트의 첫 결정은 모델 선택이 아니라 출력 형식입니다. 표를 HTML로 받을지, Markdown으로 받을지, JSON 스키마로 받을지에 따라 이후 공정이 전부 달라지기 때문입니다.
병합 셀이 있는 표는 HTML로 받는 편이 안전합니다. 행 병합과 열 병합을 속성으로 표현할 수 있어 구조 손실이 거의 없습니다. Markdown은 사람이 읽기 좋고 언어 모델에 그대로 넣기에 편하지만 병합을 표현할 방법이 없어서, 병합 셀을 값 반복으로 펼치거나 구조를 포기해야 합니다. 검색과 생성에 쓸 문서라면 두 형식을 함께 생성해 두는 방식이 실용적입니다. 업무 시스템에 값을 입력하는 것이 목적이라면 처음부터 항목 경로를 키로 갖는 JSON으로 받는 편이 낫습니다.
문자 인식이 아니라 레이아웃 분석 위에 올립니다
표 인식은 독립된 기능이 아니라 레이아웃 분석의 결과 위에서 동작합니다. 페이지에서 표 영역을 먼저 검출하고, 그 안에서 행과 열의 구조를 판별한 뒤, 각 셀의 문자를 인식하는 순서입니다. 그래서 앞 단계인 요소 검출의 정확도가 표 성능의 상한을 정합니다. 평가 요소 302개를 모두 검출하고 위치 정확도가 100%로 나온 사례에서도 표 구조 유사도는 79.18%였다는 점은, 표 영역을 찾는 것과 표 내부를 복원하는 것이 서로 다른 난이도의 문제임을 보여 줍니다.
기술 방식으로 보면, 좌표를 규칙으로 지정하는 방식은 서식이 고정된 표에서만 통합니다. 문서의 배치와 맥락을 함께 해석하는 모델은 괘선이 없는 표나 병합이 복잡한 표에서 차이를 냅니다. 국제 문서 파싱 벤치마크에서 표 항목 점수가 상위권 모델 사이에서도 크게 벌어지는 이유가 여기에 있습니다.
검수 화면에서 구조를 확인합니다
표 인식은 결과를 눈으로 보지 않으면 품질을 가늠하기 어려운 처리입니다. 셀 값 목록만 나열된 화면에서는 병합이 제대로 잡혔는지 헤더 경로가 맞는지 알 수 없기 때문입니다.
그래서 검수 환경에는 원본 이미지와 복원된 표를 나란히 두고, 값을 선택하면 원본의 해당 셀이 표시되는 구성이 필요합니다. 여기에 헤더 경로를 함께 보여 주면 값 하나가 어떤 항목에 속하는지 한눈에 확인됩니다. 검수자가 표 전체를 다시 읽지 않고 의심스러운 셀만 짚어 볼 수 있게 되면, 표가 많은 문서에서도 예외 중심 운영이 가능해집니다.
운영 단계에서는 검수자가 고친 내역을 모아 두는 편이 좋습니다. 같은 서식에서 같은 위치의 셀이 반복해서 수정된다면 그 서식에 맞는 처리 규칙을 추가할 근거가 됩니다.
국내 환경에서의 표 인식
국내 문서에는 해외 솔루션이 준비하지 않은 조건이 몇 가지 있습니다.
먼저 문서 형식입니다. 공공기관과 상당수 기업이 한글 워드프로세서 문서를 사용하고, 이 형식의 표는 셀 속성과 여백 처리가 다른 형식과 다르게 동작합니다. 형식 변환 과정에서 병합 정보가 손실되면 그 뒤 단계는 손쓸 방법이 없으므로, 문서 변환 단계부터 이 형식을 지원하는지 확인해야 합니다.
다음은 서식 자체의 구조입니다. 관공서 서식과 세무 신고서는 한 표 안에 항목번호와 원문자 기호, 계산식 안내 문장이 함께 들어갑니다. 표의 한 칸이 데이터가 아니라 작성 방법 안내인 경우도 흔합니다. 이런 칸을 값으로 추출하면 업무 데이터가 오염되므로, 안내 문구와 입력값을 구분하는 판단이 함께 필요합니다.
마지막은 문서의 상태입니다. 팩스로 접수된 저화질 스캔본, 바닥에 놓고 촬영해 구김과 그림자가 생긴 이미지, 여러 차례 재전송되며 헤더가 겹쳐 쌓인 문서가 실제 접수함에 들어옵니다. 이런 조건에서 괘선은 끊기거나 번지므로, 선을 따라가는 방식만으로는 표를 복원할 수 없습니다.
여기에 더해 금융과 공공 조직은 망분리 규정을 적용받는 경우가 많아 외부 API 호출이 제한됩니다. 표 인식을 포함한 문서 처리 전체를 내부망에서 수행할 수 있는지가 기술 검토의 첫 관문이 됩니다.
자주 묻는 질문
아닙니다. 같은 평가에서 텍스트 유사도가 98.80%였는데 표 구조 유사도는 79.18%였던 사례가 있습니다. 두 지표는 서로 다른 것을 측정하므로 표 성능은 별도로 확인해야 합니다.
문서에 따라 다릅니다. 구조가 단순한 공공문서에서 86%가 나온 사례가 있고, 병합과 다층 헤더가 겹친 문서에서 79.18%가 나온 사례가 있으며, 신고 서식에서는 99% 이상이 확인된 사례도 있습니다. 자사 문서로 측정한 값을 기준으로 삼는 편이 정확합니다.
가능합니다. 다만 출력 형식을 함께 정해야 합니다. 병합 정보를 표현할 수 있는 형식으로 받지 않으면 모델이 구조를 정확히 판별해도 그 정보가 결과물에서 사라집니다.
처리할 수 있습니다. 도장은 셀 경계를 가리는 요소이므로 문자 인식보다 구조 판별에서 더 큰 영향을 줍니다. 실제 접수 문서로 검증할 때 이런 사례를 반드시 포함시키는 편이 좋습니다.
가능합니다. 이 형식은 표 속성 처리 방식이 달라 변환 단계에서 구조가 손실되기 쉬우므로, 도입 검토 시 원본 형식 그대로 처리 가능한지 확인하시기 바랍니다.
가능합니다. 눈에 보이는 선이 없어도 여백과 정렬로 암시된 경계를 판별합니다. 다만 이런 표는 난이도가 높으므로 검증 문서에 반드시 포함시키시기 바랍니다.
가능합니다. 고객사 내부 서버에 설치해 운영하는 구축형 방식이면 외부 통신 없이 동작합니다.