문서·PDF·Excel 추출과 대사
관련 기초 개념
개요
원문 위치와 합계를 보존하여 추출값을 검증한다.
먼저 JSON·CSV·SQL·표의 의미, 환각과 불확실성의 핵심 개념을 확인하세요.
핵심 개요
문서 추출은 글자를 읽는 단계와 표·필드의 의미를 복원하는 단계가 다릅니다. PDF의 시각적 행이 실제 데이터 행과 일치하지 않을 수 있고, Excel에는 표시값·수식·원본 값이 함께 존재할 수 있습니다.
추출 후에는 원문 페이지·셀 위치를 보존하고 건수·소계·총계를 대사합니다. 숫자 형식이 맞아도 행 누락이나 열 이동이 있으면 결과는 틀립니다.
필요한 용어
- 대사: 서로 다른 표현의 값·건수·합계를 맞춰 확인하는 작업
- 좌표 근거: 값을 확인할 원문 페이지·영역·셀 주소
작동 과정
- 문서 형식과 텍스트·이미지·수식의 존재를 확인합니다.
- 필드와 원문 위치를 함께 추출합니다.
- 행 수·합계·단위·누락을 원문과 대조합니다.
풀이 예제
아래 입력과 기록은 직접 만든 교육용 가상 자료입니다.
입력·조건
송장 추출 결과 품목 합은 27,000원인데 원문 총액은 30,000원이며 배송비 행 3,000원이 있습니다.
판단·결과
추출 합계와 원문 총액의 차이는 배송비 포함 여부로 설명됩니다. 품목 합계에 배송비를 조용히 섞지 않습니다.
이렇게 판단한 이유
대사 차이는 OCR 오류뿐 아니라 합계 범위의 차이에서도 생깁니다. 원문 필드 의미를 먼저 확인합니다.
로컬 실행 예제
Python 3.12. python extraction_reconcile.py
python extraction_reconcile.py"""Synthetic source rows with coordinates and an extraction with offsetting errors."""
source = [{'id': f'R{i:02}', 'cell': f'B{i+1}', 'amount': 100*i, 'unit': 'KRW'} for i in range(1,13)]
extracted = [dict(row) for row in source if row['id'] != 'R07']
extracted[0]['amount'] = 800 # R01 should be 100: +700 offsets missing R07.
assert sum(r['amount'] for r in source) == sum(r['amount'] for r in extracted) == 7800
by_id = {r['id']: r for r in extracted}
missing = [r['id'] for r in source if r['id'] not in by_id]
mismatch = [r['id'] for r in source if r['id'] in by_id and r['amount'] != by_id[r['id']]['amount']]
assert missing == ['R07'] and mismatch == ['R01']
print('PASS: total 7800 is equal; missing R07/B8; wrong amount R01/B2')기대 결과: 합계 7800, 누락 R07/B8, 오류 R01/B2
2026-10-21 로컬 환경에서 실행했습니다. 가상 자료·소형 CPU 예제의 동작 검사이며 실제 업무 모델의 품질·클라우드·GPU·Office 제품 연동 검증은 아닙니다.
흔한 실패와 복구
수식이 있는 셀을 표시값만으로 덮어쓰지 않습니다. 수식 보존·재계산·외부 참조를 구분해 다룹니다.
확인 문제
문서 추출에서 총액 일치만으로 충분하지 않은 이유는?
- 누락과 중복이 서로 상쇄될 수 있어서
- 숫자는 항상 OCR로 읽을 수 없어서
- 문서에는 행이라는 개념이 없어서
풀이 기록 기능을 불러오는 중…
해설 보기
정답: A. 누락과 중복이 서로 상쇄될 수 있어서
누락과 중복이 서로 상쇄될 수 있어서 수식이 있는 셀을 표시값만으로 덮어쓰지 않습니다. 수식 보존·재계산·외부 참조를 구분해 다룹니다.
참고 자료
- Microsoft: Document Intelligence overview — OCR·레이아웃·구조화 문서 분석.
- pandas: Introductory tutorials — 표 읽기·선택·집계·조인.
- Microsoft: Excel JavaScript application-specific APIs — 셀·범위·배치 실행의 공개 제품 사례.
자료 확인: 2026-10-21. 사례·문항·실습은 자체 제작했습니다. 외부 서비스 호출과 실제 모델 품질 측정은 학습자가 별도 환경에서 수행합니다.
직접 적용하기
교육용 가상 상황
원문은 R01~R12, 금액은 순서대로 100·200·300·400·500·600·700·800·900·1000·1100·1200원이며 금액 셀은 B2~B13입니다. 추출 표에는 R07이 없고 R01 금액은 800원, 나머지 값은 원문과 같습니다. 합계와 누락·오류 위치를 구하고 완료 여부를 판단하세요.
원문 위치와 합계를 보존하여 추출값을 검증한다. 판단 근거와 검증할 결과를 적으세요.
답안 저장 기능을 불러오는 중…
검증 기준과 해설 보기
- 행 누락을 합계 일치와 별도로 판단한다
- 누락 위치를 원문에서 찾는다
- 중복·상쇄 오류까지 검사한다
원문 합계는 7,800원입니다. 추출은 R07/B8의 700원을 누락했지만 R01/B2를 100원 대신 800원으로 읽어 700원이 더해져 합계가 같습니다. 두 오류를 수정하고 12개 고유 식별자·행별 금액·단위·위치를 대조하기 전에는 완료하지 않습니다.
복습하기
- OCR과 필드 추출은 같은가요?
- 원문 위치는 왜 저장하나요?
- Excel에서 구분할 값은 무엇인가요?
답변 확인 기준
- OCR과 필드 추출은 같은가요?
글자 인식과 의미 있는 구조 복원은 다른 단계입니다.
- 원문 위치는 왜 저장하나요?
오류를 확인하고 수정 근거를 추적하기 위해서입니다.
- Excel에서 구분할 값은 무엇인가요?
표시값·수식·저장 값과 재계산 결과입니다.