Search

KR-20260062061-A - Automatic Verification System and Method for Language Model Table Analysis Results

KR20260062061AKR 20260062061 AKR20260062061 AKR 20260062061AKR-20260062061-A

Abstract

본 실시예에 따른 자동 검증 시스템은 표 형태 데이터의 소스 코드를 입력받아 각 셀의 위치 정보 및 내용을 포함하는 제1 구조화 데이터를 생성하는 파싱 모듈을 포함한다. 시스템은 제1 구조화 데이터와 소스 코드로부터 변환된 제2 구조화 데이터를 입력받아 셀 단위 검증을 수행하여 검증 데이터를 생성하는 검증 모듈을 포함한다. 시스템은 검증 데이터를 기반으로 검증 리포트를 생성하는 리포트 생성 모듈을 포함한다. 검증 모듈은 제1 구조화 데이터와 제2 구조화 데이터 간의 대응 관계를 식별하기 위한 고유 식별자를 이용하여 검증을 수행한다.

Inventors

  • 정한얼
  • 고현우

Assignees

  • 주식회사 원라인에이아이

Dates

Publication Date
20260506
Application Date
20251024
Priority Date
20241028

Claims (10)

  1. 표 형태 데이터의 소스 코드를 입력받아 각 셀의 위치 정보 및 내용을 포함하는 제1 구조화 데이터를 생성하는 파싱 모듈; 상기 제1 구조화 데이터와, 상기 소스 코드로부터 변환된 제2 구조화 데이터를 입력받아, 셀 단위 검증을 수행하여 검증 데이터를 생성하는 검증 모듈; 및 상기 검증 데이터를 기반으로 검증 리포트를 생성하는 리포트 생성 모듈; 을 포함하고, 상기 검증 모듈은 상기 제1 구조화 데이터와 상기 제2 구조화 데이터 간의 대응 관계를 식별하기 위한 고유 식별자를 이용하여 검증을 수행하는, 자동 검증 시스템.
  2. 제1항에 있어서, 상기 소스 코드는 HTML(HyperText Markup Language) 형식이고, 상기 제2 구조화 데이터는 JSON(JavaScript Object Notation) 형식인, 자동 검증 시스템.
  3. 제1항에 있어서, 상기 고유 식별자는 헤더 정보와 행 정보의 조합으로 구성되는, 자동 검증 시스템.
  4. 제1항에 있어서, 상기 파싱 모듈은 상기 소스 코드로부터 각 셀의 행 정보, 열 정보, 병합 정보 및 텍스트 값 중 적어도 하나를 추출하는, 자동 검증 시스템.
  5. 제1항에 있어서, 상기 제2 구조화 데이터는 언어 모델에 의해 생성되는, 자동 검증 시스템.
  6. 제1항에 있어서, 상기 검증 모듈은, 상기 고유 식별자의 존재 여부를 확인하는 존재성 검증; 및 대응하는 값들의 일치 여부를 확인하는 값 일치성 검증; 중 적어도 하나를 수행하는, 자동 검증 시스템.
  7. 제6항에 있어서, 상기 값 일치성 검증은 비교 대상 값들에 대한 정규화 처리 후 수행되는, 자동 검증 시스템.
  8. 제1항에 있어서, 상기 파싱 모듈은 BeautifulSoup 파서를 포함하는, 자동 검증 시스템.
  9. 표 형태 데이터의 소스 코드로부터 각 셀의 위치 정보 및 내용을 포함하는 제1 구조화 데이터를 생성하는 단계; 상기 제1 구조화 데이터와, 상기 소스 코드로부터 변환된 제2 구조화 데이터를 고유 식별자를 이용하여 셀 단위로 비교 검증하는 단계; 및 검증 결과를 기반으로 검증 리포트를 생성하는 단계;를 포함하는, 자동 검증 방법.
  10. 제9항에 있어서, 상기 비교 검증하는 단계는, 상기 제2 구조화 데이터로부터 추출한 식별 정보가 상기 제1 구조화 데이터에 존재하는지 확인하는 단계; 및 대응하는 값들을 비교하는 단계;를 포함하는, 자동 검증 방법.

Description

언어 모델 표 분석 결과 자동 검증 시스템 및 방법 {Automatic Verification System and Method for Language Model Table Analysis Results} 본 실시예에 따른 기술은 표 형태 데이터의 변환 결과를 자동으로 검증하는 시스템 및 방법에 관한 것으로, 더욱 상세하게는 HTML 형식의 표 데이터를 구조화된 데이터로 변환한 결과를 규칙 기반으로 검증하는 기술에 관한 것일 수 있다. 기업 공시 및 금융 보고서 등에서 활용되는 표형 데이터는 단순한 2차원 구조를 넘어, 행·열 병합, 다단 헤더, 중첩 테이블, 비정형 셀 등 복잡하고 불규칙한 형태로 작성되고 있을 수 있다. 이러한 표 데이터를 효율적으로 데이터베이스화하기 위해, 언어 모델을 이용하여 HTML 기반 테이블을 JSON 형태의 구조적 데이터로 변환하는 시도가 이루어지고 있다. 그러나 이 과정에서 LLM은 사용자의 의도나 파싱 목적에 따라 원본 테이블을 추출하기 때문에, 원본 HTML 테이블과 LLM 출력 간의 구조적·내용적 불일치가 빈번히 발생한다. 특히, 병합 셀이나 다층 헤더처럼 구조적 의존성이 높은 셀은 모델이 비정형적으로 해석하여 잘못된 계층이나 누락된 데이터를 생성하기 쉽다. 종래의 표 추출 결과 검증 기술들은 다음과 같은 문제점을 가지고 있다: 첫째, HySem 프레임워크는 LLM을 HTML 표 추출 목적으로 학습하여 값 일치 평가와 표 이해 질의응답 평가를 수행한다. 그러나 이는 생성된 JSON 결과 파일을 참고하여 임의의 질문을 던지는 방식으로, 정확한 셀 단위 검증이 어렵고 구조적 오류를 정확히 파악하기 어렵다는 한계가 있다. 둘째, LLM-as-a-Judge 방식은 표 기반 질의응답 결과를 LLM이 스스로 평가하도록 하는 방식이다. 이 방식은 범용성은 있으나, 수치적 정확성이 중요한 금융 문서에 대해 100%에 수렴하는 검증 정확도를 보이지 못한다. 또한 언어 모델의 확률적 특성으로 인해 동일 입력에 대해서도 검증 결과가 변동될 수 있다는 근본적 문제가 있다. 셋째, TEDS(Tree-Edit-Distance Similarity)와 GRITS(Grid Table Similarity) 같은 구조 기반 평가 지표는 추출1 결과와 원본 테이블 간의 일치도를 수치화된 점수로 제공한다. 그러나 이들은 단순 점수만 제공할 뿐, 구체적인 오류 위치나 유형을 식별하기 어렵고, 검증 결과의 재현성과 감사 추적성을 확보하기 어렵다. 이러한 문제점들로 인해 표 추출 결과를 신뢰성 있게 검증하고, 오류를 정확히 식별하여 시스템 개선에 활용할 수 있는 새로운 검증 프레임워크의 필요성이 대두되고 있다. 도 1은 본 실시예에 따른 자동 검증 시스템의 전체 구성을 나타내는 블록도이다. 도 2는 본 실시예에 따른 파싱 모듈의 동작 과정을 나타내는 흐름도이다. 도 3은 본 실시예에 따른 검증 모듈의 동작 과정을 나타내는 흐름도이다. 도 4는 본 실시예에 따른 HTML 테이블 구조와 JSON 데이터 구조의 매핑 관계를 나타내는 개념도이다. 도 5a 및 도 5b는 본 실시예에 따른 검증 리포트의 구조를 나타내는 예시도이다. 도 6a 및 도 6b은 본 실시예에 따른 JSON 스키마 구조 및 검증 규칙을 나타내는 예시도이다. 본 명세서에서 사용되는 테이블 구조의 위치 표현은 행(row)과 열(column)을 기준으로 정의될 수 있다. 행은 수평 방향으로 배열된 데이터의 집합을 의미하며, 일반적으로 위에서 아래로 증가하는 인덱스를 가질 수 있다. 열은 수직 방향으로 배열된 데이터의 집합을 의미하며, 일반적으로 왼쪽에서 오른쪽으로 증가하는 인덱스를 가질 수 있다. 병합 셀의 경우 rowspan과 colspan 속성으로 그 범위가 정의될 수 있다. 이러한 방향 및 위치 표현은 이해를 돕기 위한 것으로 권리범위를 한정하지 않는다. 본 실시예에 따른 자동 검증 시스템(10)은 복잡한 형태의 HTML 테이블(300)을 사용자의 쿼리에 따라 언어 모델 또는 기타 파서에 의해 JSON 데이터(310) 형태로 추출된 결과에 대해, 추출 결과가 원본 테이블과 비교하여 정확한지 검증하는 프레임워크일 수 있다. 도 1을 참고하면, 자동 검증 시스템(10)은 파싱 모듈(110), 검증 모듈(120), 및 리포트 생성 모듈(130)을 포함할 수 있다. 더욱이 시스템(10)은 외부 모델에 의존하지 않고 HTML 원본 코드와 파싱된 JSON 결과를 직접 비교하여 모든 셀 단위의 정합성을 검증하고, 오류가 발생한 위치 및 정보를 리포트 형태로 반환하는 자동화된 검증 시스템을 제공할 수 있다. 일 실시예에서, 자동 검증 시스템(10)은 추가적으로 전처리 모듈(140)을 포함할 수 있다. 전처리 모듈(140)은 HTML 테이블(300)이 파싱 모듈(110)에 입력되기 전에 HTML 코드를 정제하고 표준화하는 기능을 수행할 수 있다. 예를 들어, 전처리 모듈(140)은 비표준 HTML 태그를 표준 태그로 변환하거나, 인코딩 문제를 해결하거나, 깨진 태그를 복구하는 작업을 수행할 수 있다. 구체적으로 전처리 모듈(140)은 UTF-8, EUC-KR, ISO-8859-1 등 다양한 인코딩 형식을 자동으로 감지하여 UTF-8로 통일할 수 있다. 또한 전처리 모듈(140)은 태그의 대소문자를 통일하고, 속성값의 따옴표 누락을 보정하며, 닫히지 않은 태그를 자동으로 닫는 기능을 수행할 수 있다. 본 실시예에 따른 파싱 모듈(110)은 HTML 테이블(300)의 소스 코드를 입력으로 받아 각 셀의 위치 정보 및 내용을 포함하는 제1 구조화 데이터(210)를 생성할 수 있다. 구체적으로 파싱 모듈(110)은 HTML 소스를 해석하여 각 셀의 행 정보(330), 열 정보, 헤더 계층 깊이(depth), 병합 정보인 rowspan과 colspan, 그리고 셀 텍스트 값을 추출할 수 있다. 또한 이러한 정보들을 기반으로 하여 전체 표 구조를 정의하고 저장할 수 있다. 특히 파싱 모듈(110)은 Python BeautifulSoup의 html parser(100)를 활용하여 구현될 수 있다. 도 2를 참고하면, 파싱 모듈(110)의 동작 과정은 먼저 HTML 소스 코드(300)를 입력받는 단계로 시작할 수 있다. 이어서 HTML 파서(100)를 이용하여 테이블 요소를 식별하고, 각 행과 셀을 순회하면서 셀의 위치 정보를 추출할 수 있다. 특히 병합 셀의 경우 rowspan과 colspan 속성을 확인하여 해당 셀이 차지하는 영역을 계산할 수 있다. 나아가 각 셀의 텍스트 내용을 추출하고, 헤더 셀과 데이터 셀을 구분하여 저장할 수 있다. 결과적으로 이렇게 추출된 정보들은 키-값(key-value) 기반 딕셔너리 구조로 단순화되어 제1 구조화 데이터(210)로 저장될 수 있다. 다른 실시예에서, 파싱 모듈(110)은 lxml 파서를 사용하여 구현될 수 있다. lxml 파서는 C 라이브러리 기반으로 작성되어 BeautifulSoup보다 빠른 처리 속도를 제공할 수 있다. 예를 들어, 10,000개 이상의 셀을 포함하는 대용량 테이블의 경우, lxml 파서는 BeautifulSoup 대비 약 50% 이상의 속도 향상을 제공할 수 있다. lxml 파서를 사용하는 경우, 파싱 모듈(110)은 XPath 표현식을 활용하여 특정 조건의 셀만 선택적으로 추출할 수 있다. 예를 들어, "//table[@class='financial']//td[@data-type='currency']"와 같은 XPath를 사용하여 금융 테이블의 통화 데이터만 추출할 수 있다. 또 다른 실시예에서, 파싱 모듈(110)은 정규표현식(Regular Expression) 기반 파서를 포함할 수 있다. 정규표현식 파서는 HTML 구조가 매우 단순하거나 특정 패턴이 반복되는 경우 효율적일 수 있다. 예를 들어, "<td>(.?)</td>" 패턴을 사용하여 모든 td 태그 내용을 빠르게 추출할 수 있다. 정규표현식 파서는 특히 실시간 처리가 필요한 경우나 메모리 제약이 있는 환경에서 유용할 수 있다. 파싱 모듈(110)은 복잡한 병합 셀 구조를 처리하기 위한 고급 알고리즘을 포함할 수 있다. 일 실시예에서, 파싱 모듈(110)은 가상 그리드(Virtual Grid) 방식을 사용할 수 있다. 가상 그리드는 테이블을 2차원 배열로 표현하고, 각 셀이 차지하는 영역을 좌표로 매핑할 수 있다. 예를 들어, rowspan=3, colspan=2인 셀은 가상 그리드에서 3x2 크기의 영역을 차지하며, 해당 영역의 모든 좌표에 동일한 셀 참조를 저장할 수 있다. 구체적으로, 가상 그리드 알고리즘은 다음과 같이 동작할 수 있다. 먼저 테이블의 최대 행과 열 크기를 계산하여 그리드를 초기화할 수 있다. 그 다음 각 행을 순회하면서 셀을 그리드에 배치할 수 있다. 이때 rowspan이나 colspan이 1보다 큰 셀을 만나면, 해당 셀이 차지하는 모든 그리드 좌표에 셀 정보를 복사할 수 있다. 예를 들어, (2, 3) 위치에 rowspan=2, colspan=3인 셀이 있다면, (2,3), (2,4), (2,5), (3,3), (3,4), (3,5)의 6개 좌표 모두에 해당 셀 정보를 저장할 수 있다. 다른 실시예에서, 파싱 모듈(110)은 스패닝 트리(Spanning Tree) 알고리즘을 사용하여 병합 셀의 계층 구조를 표현할 수 있다. 스패닝 트리는 병합된 셀을 부모 노드로, 병합에 의해 가려진 셀을 자식 노드로 표현할 수 있다. 이 방식은 특히 다층 헤더 구조에서 헤더 간의 계층 관계를 명확히 표현하는 데 유용할 수 있다. 예를 들어, "매출" 헤더 아래 "국내"와 "해외" 서브헤더가 있는 경우, "매출"을 부모 노드로, "국내"와 "해외"를 자식 노드로 하는 트리 구조를 생성할 수 있다. 본 실시예에 따른 검증 모듈(120)은 파싱 모듈(110)에서 생성된 제1 구조화 데이터(210)와 언어 모델 또는 기타 파서에 의해 생성된 제2 구조화 데이터(220)인 JSON 데이터(310)를 입력으로 받아 셀 단위 검증을 수행할 수 있다. 도 3을 참고하면, 검증 모듈(120)은 규칙 기반 로직에 따라 동작하며, 오류 유형에 따른 규칙 세트를 사전에 구성할 수 있다. 더욱이 검증 모듈(120)은 규칙 기반 V