Document AI 테이블 추출: 모범 사례¶
|document-ai|를 사용하면 엔터티에서 단일 값 또는 값 목록 형태로 정보를 추출하거나, 지정된 열 목록을 기반으로 테이블에서 정보를 추출할 수 있습니다. |document-ai| 인터페이스에서의 테이블 추출 작업에 대한 정보는 Document AI 모델 빌드에 대한 값 정의 섹션을 참조하세요.
이 항목에서는 |document-ai|에서 테이블 추출 작업을 수행할 때의 모범 사례를 제공합니다.
엔터티 추출과 테이블 추출 모두에 하나의 모델 빌드 사용¶
모델 빌드를 생성할 때 엔터티 및 테이블 값을 모두 추출하려면 :ref:`테이블 추출 처리 유형<label-document_ai_define_values>`을 사용하세요. 모든 테이블에 대한 값을 정의한 후, 모든 엔터티를 그룹화하기 위한 추가 테이블을 추가하세요. 열 이름에는 추출된 엔터티의 이름을 사용하세요. 결과를 개선하기 위해 훈련이 필요할 수 있음을 유의하세요.
특정 유형의 문서에 하나의 모델 빌드 사용¶
각 모델 빌드에는 동일한 유형의 문서가 포함되어야 하며, 추출하려는 데이터는 대부분의 테이블에서 유사해야 합니다. 소스 문서의 열 수가 문서마다 다르더라도, 모든 문서에 추출 대상인 정의된 하위 집합의 열이 포함되어 있고 공통 열의 이름과 위치가 동일하거나 유사하다면, 해당 공통 열을 추출할 수 있습니다.
예를 들어, 청구서에는 다양한 데이터를 포함하는 서로 다른 열 수가 있을 수 있지만, 모든 테이블의 첫 세 열(Item Description
, Quantity
, Price
)이 동일하다면 해당 데이터를 추출할 수 있습니다.
자연어로 열 이름 정의¶
문서에서 열 이름을 복사하여 정확히 동일하게 만들 수 있습니다. 예를 들어, 열 이름을 product_code
또는 REPORT_DATE``로 지정하지 말고, 대신 ``Product Code
또는 ``Report Date``로 지정하세요.
검토 시 빈 행을 정확히 지정¶
모델이 제공한 답변을 검토할 때, 빈 행의 경우 각 셀에 None
대신 ``-``를 사용하세요. 각 셀에 ``None``이 포함된 행은 모델 훈련 중에 무시됩니다.
문서에 나타나는 순서대로 열 정의¶
정확도를 높이려면 문서에 표시되는 순서와 동일한 순서로 열을 정의하세요. 일반적으로 :ref:`전치된 테이블<label-document_ai_table_extraction_best_practices_transpose_tables>`의 경우 왼쪽에서 오른쪽 또는 위에서 아래로입니다. 순서를 다르게 정의하기로 선택할 경우, 훈련이 필요할 수 있습니다.
그러나 여러 행을 그룹화하는 열(예: Invoice Number
및 Invoice Date
)의 경우 해당 열을 맨 앞에 추가하세요. 예:
Invoice Number
Invoice Date
Item Code
Item Name
Quantity
문서의 대소문자를 사용하여 값 정의¶
가능한 경우 문서에서 대소문자를 사용하여 값을 정의하세요. 문서 내 대소문자가 다양할 경우 첫 글자만 대문자로 작성하세요.
필요한 경우에만 로케이터 필드 사용¶
:ref:`로케이터 필드<label-document_ai_define_values>`는 선택 사항입니다. 대부분의 경우 입력할 필요가 없습니다. 그러나 문서 내에 유사한 테이블이 여러 개 존재할 경우, 모델이 부정확하게 답변할 수 있습니다. 답변이 예상과 다른 소스 테이블에서 오는 경우, 로케이터 필드를 사용해 보세요. 모델이 올바른 테이블을 식별하는 데 도움이 되는 정보(예: 테이블 제목 또는 번호)를 추가하세요.
테이블 레이아웃을 설명하는 섹션 열 추가¶
테이블이 여러 개의 명명된 섹션으로 나뉘어 있다면, 섹션 열을 추가하세요. 이는 모델이 레이아웃을 더 잘 이해하고 정확도를 향상시키는 데 도움이 됩니다. 예를 들어, 열 이름을 Section
, Item section
또는 Item category
등으로 지정할 수 있습니다. 섹션에 중첩된 두 번째 수준이 있는 경우, 두 개의 열, 즉 Section
및 ``Subsection``을 추가할 수 있습니다.
값을 그룹화하려면 추가 열 생성¶
:ref:`label-document_ai_table_extraction_best_practices_one_model_build`에 설명된 대로, 모든 엔터티를 포함하는 추가 테이블을 추가할 수 있습니다. 그러나 별도의 테이블을 생성하는 대신, 기존 테이블에 열을 추가할 수도 있습니다. 이렇게 하면 전체 문서 세트의 결과를 단일 테이블로 결합할 수 있습니다. 예를 들면 다음과 같습니다.
청구서 번호 |
항목 상세 정보 |
항목 가격 |
수량 |
---|---|---|---|
A |
항목 A1 |
10.00 |
1 |
A |
항목 A2 |
20.00 |
1 |
A |
항목 A3 |
30.00 |
1 |
B |
항목 B1 |
15.00 |
1 |
B |
항목 B2 |
25.00 |
1 |
B |
항목 B3 |
35.00 |
1 |
첫 번째 열의 값은 해당 항목들에 대해 반복된다는 점에 유의하세요.
추가 열을 추가하거나 테이블이 큰 경우, Snowflake는 비용을 최적화하기 위해 단일 행으로 구성된 추가 테이블을 생성할 것을 권장합니다(엔터티 추출과 테이블 추출 모두에 하나의 모델 빌드 사용 섹션에서 설명된 대로).
문서 간 열 이름을 구분 가능하게 만들기¶
열을 의미 체계적으로 구분해 보세요. col1
, val1
, ``item1``과 같은 이름을 사용하지 마세요.
경우에 따라 전치가 더 효과적일 수 있는데, 특히 행 이름이 문서 간에 다르지 않거나, 약간만 다르고 닫힌 값 세트 내에 속하는 경우에 그러합니다.
지정된 열 세트로 훈련하면 결과가 개선될 수 있습니다.
계층적 헤더 작업을 할 때 상위 항목 이름을 접두사로 사용¶
계층적 헤더가 있는 테이블에서 정보를 추출하려면, 각 상위 항목 이름을 접두사로 사용하여 헤더 경로를 연결하세요. 예를 들어, 다음 테이블의 경우 열을 다음과 같이 정의하세요.
Category A Type X Column 1
Category A Type Y Column 2
Category A Type Y Column 3
Category B Column 4
Category B Column 5

필요할 경우 테이블 전치¶
문서 내 테이블의 첫 번째 열 값을 출력 테이블의 열 이름으로 사용하여 전치된 테이블에서 정보를 추출할 수 있습니다.
예를 들어, 다음 테이블의 경우 열 이름을 다음과 같이 지정하세요.
Type A: Item 1
Type A: Item 2
Type B: Item 3
Type B: Item 4

이 예제에는 :ref:`계층적 헤더<label-document_ai_table_extraction_best_practices_hierarchical>`가 포함되어 있음을 참고하세요.
큰 테이블의 경우 문서 분할¶
테이블 추출 모델은 최대 2048개 토큰 길이의 답변을 반환합니다. 즉, 모델은 해당 한계에 도달하면 추출을 중단합니다. 다음과 같은 방법으로 접근할 수 있습니다.
테이블이 여러 페이지에 걸쳐 있는 경우, 문서를 여러 개의 한 페이지 문서로 분할한 다음, 후처리 단계에서 결과를 결합하세요.
테이블이 너무 조밀해서 단일 페이지에서도 데이터를 추출할 수 없다면, 테이블을 열 단위로 분할하세요.
예를 들어, 테이블에 10개의 열이 포함되어 있다면, 별도의 두 값을 정의해 보세요. 하나는 테이블의 왼쪽 절반에서 5개의 열을, 다른 하나는 테이블의 오른쪽 절반에서 5개의 열을 포함하도록 합니다. 최상의 결과를 얻으려면 열 선택을 실험해 볼 필요가 있을 수 있습니다.
문서에서 이름이 지정되지 않은 열에 대해 이름 생성¶
문서의 첫 번째 열에 이름이 없는 경우, 값을 정의할 때 해당 이름을 직접 생성해야 합니다. 다음과 같은 방법으로 접근할 수 있습니다.
테이블 제목 또는 제목의 중요한 부분을 사용하세요.
열의 데이터를 나타내는 설명적인 이름을 생성하세요. 예를 들면
description
,type of asset
,year
,category
등입니다.
두 개의 서로 다른 시기의 데이터 비교¶
연간 보고서와 같은 재무 문서에서 2023년과 2024년처럼 서로 다른 기간의 데이터를 비교하려면, 해당 열 앞에 “현재”와 “이전”을 접두사로 붙일 수 있습니다. 결과를 개선하기 위해 훈련이 필요할 수 있음을 유의하세요.