송장 라인 항목 추출 후수학이 틀린 이유

송장 추출기가 공급업체명, 송장 번호, 총액은 정확히 가져왔습니다. 하지만 라인 항목을 점검해보니 뭔가 이상합니다. 3행에 수량 4, 단가 $150.00, 라인 합계 $300.00 — $300이 부족합니다. 그런데 각 필드는 깔끔해 보입니다. AI가 잘못 읽은 것이 아니라, 무언가를 잘못 짝지은 것입니다.

수작업 입력은 그만 — AI가 대신 읽어드립니다
이미지나 PDF를 업로드하세요 — 10초 만에 정형 데이터로
지금 체험하기
회원가입 불필요 · 카드 불필요 · 10초 내 결과
송장 처리 과제를 나타내는 책상 위의 서류 더미

핵심 요약

  1. AI 송장 추출기가 필드 신뢰도 99%를 보고해도 수량 × 단가 계산이 여전히 틀릴 수 있습니다. 필드별 신뢰도 점수는 가독성을 측정할 뿐, 단가가 2행에 속하는지 3행에 속하는지는 알려주지 않기 때문입니다.
  2. 수량 × 단가 불일치는 단 네 가지 패턴으로 나타납니다. 오차의 크기와 방향을 보면 AI가 행을 교차 짝지었는지, 측정 단위 승수를 놓쳤는지, 할인 전 금액과 할인 후 금액을 혼동했는지 알 수 있습니다.
  3. 하나의 수식 열 — =ROUND(수량×단가,2) — 이 네 가지 패턴을 모두 잡아냅니다. 이 수식을 추가하는 데 5분이면 충분하며, 어떤 신뢰도 점수보다 추출 품질에 대해 더 많은 것을 알려줍니다.

AI 송장 추출에서 가장 눈에 띄지 않는 오류 유형입니다. AI는 개별 필드에서 98% 이상의 정확도를 달성합니다. 즉, 수량, 단가, 라인 합계를 각각의 값으로 올바르게 읽습니다. 그러나 필드 간 일관성은 근본적으로 다른 문제입니다. 페이지에서 "$150.00"을 높은 신뢰도로 읽어낼 수 있는 비전 모델은 그 $150.00이 2행의 단가, 3행의 라인 합계, 또는 섹션 소계 중 어디에 속하는지 자동으로 알 수 없습니다. 이러한 관계가 깨지면 라인 항목 계산이 맞지 않게 되며, 이 오류는 필드별 신뢰도 점수로는 감지할 수 없습니다.

2025년 Docling 및 LlamaExtractor에 대한 연구에서 그 차이가 확인되었습니다. 일관성 검사(라인 항목 + 세금 = 합계)는 송장의 20%에서 실패했으며, 대부분 복잡한 다중 세금 시나리오나 비표준 형식의 송장이었습니다(arXiv 2510.15727v1). 출력에서 수량 × 가격 불일치가 발생한다면, 송장은 다음 네 가지 패턴 중 하나에 해당할 가능성이 높습니다.

원인 1: AI가 1행의 수량과 2행의 가격을 연결함

조밀한 라인 항목 테이블은 행 간 연결 오류의 가장 흔한 원인입니다. 송장에 15개 이상의 라인 항목이 있고 눈에 띄는 행 구분선 없이 텍스트 행만 쌓여 있는 경우, AI의 공간 추론은 한 행이 끝나고 다음 행이 시작되는 정확한 위치를 결정해야 합니다. 몇 픽셀만 차이가 나도 모델이 N행의 수량을 N+1행의 단가와 연결할 수 있습니다.

증상: 개별 라인 항목의 계산이 틀리지만, 모든 수량 × 가격 계산의 합계는 송장 소계와 일치합니다. 이는 모든 값이 정확하지만 잘못된 이웃 값과 연결되었음을 의미합니다.

행 간 읽기 오류는 다음 세 가지 시나리오에서 가장 자주 발생합니다.

  • 눈에 보이는 행 테두리 없음: 공백만으로 행을 구분하는 송장입니다. AI는 경계가 어디인지 추측하다가 때때로 틀립니다.
  • 여러 줄 설명: 제품 설명이 두 줄로 나누어지면 이후 행이 아래로 밀립니다. AI는 계속되는 텍스트를 새 행으로 매핑하여 이후 모든 쌍을 이동시킬 수 있습니다.
  • 테이블 헤더의 셀 병합: 병합된 열 레이블이 있는 헤더 행은 AI의 열 개수 감지를 혼란스럽게 하여 처음부터 전체 테이블 구조를 잘못 정렬하게 할 수 있습니다. 자세한 내용은 병합된 셀이 테이블 추출을 깨뜨리는 방식을 참조하세요.

잡는 방법: 아래 프레임워크 섹션에 설명된 행 수준 검증 공식을 실행합니다. 행 간 읽기 오류는 독특한 패턴을 생성합니다. 일부 행은 합계를 과대계산하고 일부는 과소계산하며, 오류는 소계 수준에서 상쇄됩니다.

원인 2: 단위 혼동 — "12"가 항상 12개는 아님

송장 라인에 "12"라는 수량이 적혀 있어도 단위가 없으면 모호합니다. 12개인가요? 12다스(144개)인가요? 12kg인가요? 피트당 $3.75인 12선형 피트인가요? 숫자 자체는 명확하지만, AI는 "12"가 무엇을 의미하는지 알지 못하면 단가를 곱할 수 없습니다.

측정 단위(UOM) 혼동은 두 가지 뚜렷한 오류 패턴을 만듭니다:

  • 별도 열의 UOM: 일부 송장은 수량과 단가 필드 사이에 "UOM" 열(EA, DZN, KG, FT)이 있습니다. AI가 이 열을 읽거나 연결하지 못하면 "12 DZN"(144개 × 가격)을 "12 EA"(12개 × 가격)로 처리하여 라인 합계가 실제보다 1/12로 줄어듭니다.
  • 설명에 포함된 UOM: 많은 송장이 설명 필드에 "12 × CASE" 또는 "12 @ CASE PRICE"라고 씁니다. AI는 "12"를 수량 열로 읽지만, 이 "12"가 "각 6개짜리 케이스 12개"를 의미한다는 것을 이해할 메커니즘이 없습니다. 결과적으로 Qty × Price 합계는 케이스 배수만큼 차이가 납니다.

이 오류는 숫자가 내부적으로 일관되어 보이기 때문에 속기 쉽습니다. 수량 = 12, 단가 = $45.00, 라인 합계 = $540.00 — 계산은 맞습니다. 하지만 송장에 실제로 "12다스, 다스당 $45.00"라고 적혀 있고 AI가 12개로 읽었다면 합계는 12배 차이가 납니다. AI는 우연히 비즈니스 현실 검증에 실패하는 그럴듯한 숫자를 추출한 것입니다.

단위 관련 추출 문제는 원본 문서에 소수점 누락이나 모호한 통화 기호가 있을 때 더 악화됩니다. 단가의 소수점 누락은 UOM 불일치를 증폭시킵니다.

잡는 방법: 동일 품목의 가격표나 과거 평균과 라인 합계를 교차 확인하세요. 역사적으로 단위당 $7.50인 품목의 단가가 $45.00라면 위험 신호입니다. AI가 UOM을 "EA"로 읽었지만 실제로는 "BOX(6 EA)"였을 수 있습니다. 과거 데이터가 없는 송장의 경우, Qty × Unit Price가 예상 가격 범위에서 벗어난 반올림 숫자를 생성하는 라인에 플래그를 지정하세요.

원인 3: 할인 전/후 라인 금액 혼동

송장은 라인 항목 합계를 표시하는 여러 방식을 사용합니다. 일부는 라인에 총액(할인 전)을 표시하고 할인은 송장 하단에 적용합니다. 다른 방식은 라인에 순액(할인 후)을 직접 계산하고 "총 할인" 금액을 별도로 요약합니다. AI 추출 모델은 특히 열 제목이 단순히 "금액"으로 되어 있을 때 특정 송장이 어떤 방식을 사용하는지 구분하지 못하는 경우가 많습니다.

예시: 라인 항목에 "수량 10, 단가 $50.00, 금액 $475.00"이라고 표시됩니다. 계산상 10 × $47.50이 맞지만 단가는 $50.00로 표시됩니다. 무슨 일일까요? 송장은 5% 라인 수준 할인(단위당 $2.50)을 적용하고, 총 단가를 표시하면서 라인에는 순액을 보여줍니다. AI는 두 값을 모두 올바르게 추출했습니다. 단지 할인 계산의 서로 다른 단계에 속할 뿐입니다.

세 가지 할인 방식이 일반적으로 추출 혼동을 일으킬 만큼 자주 사용됩니다:

  • 라인 수준 할인, 라인에 총액 표시: 라인에 수량 × 정가를 표시합니다. 할인은 송장 하단에 적용됩니다. AI는 라인 합계를 그대로 추출하며, 수량 × 가격이 일치합니다. 여기서 불일치는 없지만 할인 금액은 라인 수준에서 보이지 않습니다.
  • 라인 수준 할인, 라인에 순액 표시: 라인에 수량 × (정가 − 할인)을 표시합니다. 단가 열에는 여전히 $50.00가 표시되지만 라인 금액은 할인된 값을 반영합니다. 수량 × $50.00 ≠ 라인 합계이며, 모든 필드가 올바르게 읽히더라도 마찬가지입니다.
  • 동일 송장 내 혼합 방식: 일부 라인 항목에는 할인이 있고 일부에는 없습니다. AI는 모든 행에 동일한 해석을 적용하여 일부는 일치하고 일부는 실패하게 만듭니다.

잡는 방법: 이 오류의 특징은 여러 라인에서 수량 × 단가가 라인 합계를 일정 비율만큼 일관되게 초과한다는 점입니다. 할인된 라인에서 "금액 = 수량 × 가격 × 0.95" 패턴이 나타나고 할인되지 않은 라인은 일치한다면, 송장이 순액 표시 방식을 사용하는 것입니다. 이러한 경우 추출 오류로 가정하지 말고 플래그를 지정하여 공급업체의 할인 조건을 확인하십시오.

원인 4: 세금 포함 금액과 미포함 금액이 한 장의 인보이스에 혼재된 경우

VAT/GST 적용 국가의 인보이스는 동일 문서에 세금 포함 가격과 미포함 가격이 혼합되어 있는 경우가 많습니다. 일부 라인 항목은 표시 금액에 세금이 포함되어 표시되고(소비재 또는 B2C 판매에 일반적), 다른 항목은 세금 미포함 금액으로 표시된 후 하단에 VAT가 계산됩니다(B2B 표준). 모든 라인 항목에 단일 해석을 적용하는 AI 모델은 혼합 유형의 행에서 불일치를 발생시킵니다.

많은 인보이스가 개별 라인에 "VAT 포함" 또는 "VAT 미포함"이라고 표시하지 않습니다. 그 구분은 고객 유형, 제품 카테고리 또는 관할권에 따라 암시되며, Xero나 AutoEntry와 같은 회계 소프트웨어조차도 이 미묘한 차이를 처리하기 위해 전용 토글 스위치를 사용할 정도로 간단하지 않습니다.

이 오류를 유발하는 세 가지 실제 시나리오는 다음과 같습니다:

  • 혼합 공급 인보이스: 예를 들어 호텔의 단일 인보이스에는 객실 요금(표준 VAT 적용), 서비스 수수료(VAT 면제), 주차 요금(할인 세율)이 함께 나열됩니다. 각 라인은 공급업체의 회계 시스템에 따라 포함 또는 미포함으로 표시되어 일관되지 않은 추출 대상이 됩니다.
  • 국제 인보이스: 미국 공급업체가 영국 고객에게 청구합니다. 인보이스에는 USD 금액(VAT 없음)이 표시되지만 하단에는 역청구 VAT 메모가 적용됩니다. 주로 국내 인보이스 패턴으로 학습된 AI는 세금이 없는 라인 금액을 다르게 해석할 수 있습니다.
  • 크레딧 노트 및 조정: 원래 포함/미포함 금액을 참조하는 수정 라인은 AI가 모든 행에 일관된 세금 해석을 적용할 때 불일치를 만듭니다.

arXiv 인보이스 추출 연구에 따르면 일관성 실패는 "복잡한 다중 세금 시나리오가 있는 인보이스에 집중"되었습니다. 이는 정확히 개별 필드가 잘못되지 않았음에도 수량 × 단가 ≠ 라인 합계가 발생하는 혼합 포함/미포함 문서입니다.

잡는 방법: 동일 인보이스 내에서 불일치율이 특정 세금 코드 또는 제품 카테고리와 상관관계가 있는지 확인하십시오. VAT 코드 "S"(표준 세율)가 있는 라인이 모두 일치하지만 코드 "Z"(영세율)가 있는 라인이 VAT 비율만큼 일관된 편차를 보인다면, AI가 영세율 항목에 잘못된 포함 가정을 적용하고 있는 것입니다.

해결책: 라인 항목 일관성을 위한 3계층 검증 프레임워크

위 네 가지 원인은 각각 추출된 데이터에서 서로 다른 패턴을 보입니다. 체계적인 검증 프레임워크는 이 모든 것을 포착하며, 필드별 신뢰도 점수로는 알 수 없는 부분을 명확히 드러냅니다.

계층 1: 행 수준 검증 수식

가장 빠른 포괄 검증 방법은 수식 열을 추가하는 것입니다:

=ROUND(수량*단가,2)

추출된 라인 합계와 비교합니다. 차이가 $0.01을 초과하는 행을 조건부 서식을 사용하여 표시합니다:

=ABS(ROUND(A2*B2,2)-C2)>0.01

오차의 방향과 크기는 어떤 원인인지 알려줍니다:

  • 행 간 오차 상쇄 → 원인 1 (행 간 읽기 오류). 모든 값은 존재하지만 잘못 짝지어졌습니다.
  • 일정한 배수 오차 (예: 항상 0.5, 6, 12만큼 차이) → 원인 2 (단위 혼동). 오차 배수가 단위 변환 계수입니다.
  • 일정한 비율 오차 → 원인 3 (할인 혼동). 오차 비율이 할인율과 일치합니다.
  • 특정 세금 코드와 연관된 오차 → 원인 4 (세금 포함 여부 혼동). 오차 비율이 해당 부가가치세율과 일치합니다.

계층 2: AI를 위한 필드 관계 힌트

추출을 구성할 때, 어떤 값들이 서로 연관되어 있는지 명확히 지정하여 AI가 필드 관계를 이해하도록 도우십시오. ImageToTable.ai의 사용자 정의 열 추출은 의미론적으로 작동합니다. 원하는 열을 지정하면 AI가 각 값의 의미를 이해하여 위치를 찾습니다. 필드 간 짝짓기 정확도를 높이려면:

  • 설명적인 열 이름 사용: "단가 (개당)" 및 "라인 합계 (수량 × 단가)"는 AI가 개당 값과 라인별 값을 구분하는 데 도움이 됩니다.
  • 교차 검증용 계산 열 정의: 라인 합계 검증 (수량 × 단가) 열을 만드십시오. AI가 값을 추출하고 계산을 수행하여, 내보내기 후가 아닌 추출 중에 불일치를 발견합니다.
  • 숫자 필드에 형식 규칙 설정: 소수점이 없는 한 수량은 정수이고, 단가는 항상 소수점 둘째 자리까지 표시되도록 지정하십시오. 이는 모호한 해석을 제한합니다.

3단계: 표적 점검 샘플링

수식 검증만으로는 일부 오류가 누락됩니다. 특히 수량 × 단가가 우연히 틀린 합계와 일치하는 경우가 그렇습니다. 표적 점검 샘플링이 이 간극을 메웁니다. 배치별로 다음을 수동 확인하세요: 1단계에서 플래그된 모든 행, 통과한 행의 10%(우연히 일치하는 합계 포착), 공급업체당 1개 송장(체계적인 서식 문제). 이를 통해 데이터의 15% 미만만 수동 검토하면서 수학적 불일치의 95% 이상을 잡아냅니다.

에스컬레이션 기준: 5% 임계값

검증 프레임워크가 배치 전체 라인 항목의 5% 이상을 플래그한다면, 문제는 체계적일 가능성이 높습니다. 이는 라인 항목 수준에서 검증 수식을 아무리 조정해도 해결되지 않는 일관된 교차 필드 불일치 패턴입니다.

에스컬레이션이 필요한 세 가지 시나리오:

  • 단일 공급업체 집중: 플래그된 행의 70% 이상이 한 공급업체에서 발생. 해당 공급업체의 레이아웃이 현재 접근 방식과 호환되지 않습니다. 이 송장들을 전처리하거나 다른 파이프라인으로 라우팅하세요.
  • 다중 세율 복잡성: 3개 이상의 세율 또는 포함/별도 금액이 혼합된 송장. 최고의 모델도 이 경우 20% 실패율을 보입니다(arXiv 연구 기준). 추출을 수정하려 하지 말고 세금 전문 AP 담당자가 수동 검토하도록 플래그하세요.
  • 저품질 원본 문서: 네 가지 패턴 모두에서 동시에 플래그가 발생하면, 관계 혼동이 아닌 OCR 품질 저하가 근본 원인입니다. 먼저 원본 품질을 개선하세요 — 소수점 및 통화 추출 수정 참조.

이 임계값은 팀이 끝없는 튜닝 사이클에 빠지는 것을 방지합니다. 독립 필드에서 98% 이상, 교차 필드 일관성에서 95% 이상의 추출 정확도를 달성했다면 대부분의 AP 워크플로에 충분합니다. 나머지 5%는 완전히 제거하는 것보다 예외 라우팅으로 처리하는 것이 더 저렴합니다.

자주 묻는 질문

수량 × 단가 불일치가 항상 추출 오류를 의미하나요?

아닙니다. 일부 청구서는 라인 레벨에서 적용된 볼륨 할인, 프로모션 가격, 또는 라인의 단가가 평균값(개별 품목 가격이 아님)인 패키지 딜로 인해 라인 금액이 수량 × 단가와 일치하지 않는 경우가 실제로 있습니다. 불일치를 추출 오류로 간주하기 전에 항상 원본 청구서와 대조 확인하세요.

라인 항목에 수학적 불일치가 있는데 총합계를 신뢰할 수 있나요?

자동으로 신뢰할 수 없습니다. 원인 1(행 간 읽기)이 적용되는 경우 오류가 상쇄되어 총합계가 여전히 정확할 수 있습니다. 그러나 원인 2~4의 경우 기본 라인 금액이 소계 및 총계 계산에 사용되므로 총합계가 잘못되었을 가능성이 높습니다. 추출된 합계를 지불에 사용하기 전에 항상 라인 레벨 불일치를 해결하세요.

AI 도구가 잘못 짝지어진 필드에 대해 99% 신뢰도를 보고하는 이유는 무엇인가요?

신뢰도 점수는 개별 필드의 가독성을 측정할 뿐, 필드 간 논리적 일관성을 측정하지 않기 때문입니다. 비전 모델은 페이지의 특정 위치에 "$150.00"가 나타난다는 것을 99% 확신할 수 있습니다. 그리고 그 $150.00가 단가인지 라인 합계인지에 관계없이 그 확신은 변하지 않습니다. 필드 간 검증은 어떤 신뢰도 점수도 대체할 수 없는 별도의 단계입니다.

다른 공급업체 간의 UOM 혼동은 어떻게 처리하나요?

추출 템플릿에 별도의 "UOM" 열을 추가하여 추출 출력을 표준화하세요. 명확한 형식 지침을 포함하십시오: "동일한 행에서 측정 단위(EA, DZN, KG, FT, CASE, BOX)를 추출하여 별도의 열로 출력하십시오." 이렇게 하면 출력에서 UOM을 확인할 수 있으므로 AI가 자동으로 단위를 해석하는 데 의존하지 않고 스프레드시트에 변환 규칙을 구축할 수 있습니다.

AP에서 라인 항목이 진실의 단위입니다

헤더 레벨 추출(공급업체 이름, 청구서 번호, 총합계)은 상품화되어 정확도가 높아졌습니다. 품질이 여전히 유의미하게 차이나는 최전선은 라인 항목 레벨이며, 여기서는 필드 값만큼 필드 간 관계가 중요합니다. AI는 개별 숫자를 올바르게 읽지만, 올바른 열과 행에 대한 할당은 모델이 문서 의미론을 이해하는 데 달려 있습니다. 이러한 의미론적 이해는 빠르게 개선되고 있지만, 아직 필드 간 검증을 생략할 수 있는 수준은 아닙니다. 프레임워크(수식 열 + 관계 힌트 + 표적 샘플링)는 지불 또는 조정을 지원하는 모든 추출 워크플로우에 적합한 프로세스입니다.

다음 배치에 수식 열을 설정하십시오. =ROUND(수량*단가,2)와 조건부 서식을 추가하는 데 걸리는 5분은 어떤 신뢰도 점수보다 추출 품질에 대해 더 많은 것을 알려줄 것입니다.

📮 contact email: [email protected]