쉬운 일상 언어로 좋은 추출 스키마를 작성하는 법
스키마란 문서에서 무엇을 뽑아내고 싶은지를 적은 설명일 뿐입니다. 스키마를 작성하려고 따로 문법을 배울 필요는 없습니다. 다만 몇 가지 습관만 들이면, 일일이 손볼 필요 없이 그대로 믿고 쓸 수 있는 결과가 나옵니다. 원하는 것을 어떻게 설명해야 엔진이 처음부터 제대로 알아듣는지 알려드립니다.
- tutorial
- schema design
대부분의 사람이 Ztract에서 가장 먼저 하는 일은 프로젝트 만들기입니다. 그다음 단계, 즉 결과의 품질을 좌우하는 단계는 그 문서에서 무엇을 뽑아낼지를 저희에게 알려주는 것입니다. 그 설명이 바로 여러분의 스키마입니다.
여기서 많은 분이 의외라고 느끼는 점이 있습니다. 스키마는 코드로 쓰는 게 아닙니다. 배워야 할 문법도 없고, 항목 유형을 선언할 필요도 없으며, 화면에 양식을 그릴 일도 없습니다. 새로 온 동료에게 설명하듯 원하는 것을 그냥 말로 적으면 됩니다. “송장마다 거래처명, 총액, 그리고 모든 품목 내역을 뽑아 주세요.” 나머지는 엔진이 알아서 처리합니다.
이 자유로움이야말로 핵심입니다. 하지만 그만큼 결과물의 품질은 설명의 품질을 그대로 따라갑니다. 두루뭉술하게 요청하면 두루뭉술한 결과가 나옵니다. 정확하게 요청하면 첫 시도부터 믿고 쓸 수 있는 깔끔한 데이터가 나옵니다. 이 글에서는 어떤 종류의 문서를 다루든, 일상 언어로 쓴 스키마를 정확하게 만들어 주는 몇 가지 습관을 다룹니다.
좋은 스키마는 어떻게 생겼나
규칙으로 들어가기 전에, 잘 작동하는 설명이 어떤 모양인지 먼저 보겠습니다. 송장을 추출한다고 해 봅시다.
“송장마다 송장 번호, 발행일, 거래처명, 그리고 지급해야 할 총액을 추출해 주세요. 또한 각 품목 내역을 설명, 수량, 단가, 품목 합계와 함께 추출해 주세요. 문서에 없는 항목은 추측하지 말고 빈칸으로 두세요.”
이 설명이 무엇을 하는지 보세요. “중요한 것들”이라고 뭉뚱그리지 않고 구체적인 항목을 하나하나 지정합니다. 문서당 하나만 있는 것(송장 번호, 총액)과 여러 개 있는 것(품목 내역)을 구분합니다. 그리고 무언가가 빠져 있을 때 어떻게 할지를 명시합니다. 이 중 무엇도 기술적인 내용이 아닙니다. 그저 정확할 뿐입니다. 아래 다섯 가지 습관이 그 정확함에 이르는 길입니다.
스키마를 정확하게 만드는 다섯 가지 습관
1. 어떤 값을 말하는지 구체적으로 짚으세요
문서에는 비슷하게 생긴 숫자와 날짜가 가득합니다. 송장에서 “금액”이라고 하면 소계일 수도, 세금일 수도, 할인 전 합계일 수도, 최종 지급액일 수도 있습니다. “금액을 추출하라” 고만 쓰면 어느 것을 가져올지 운에 맡기는 셈입니다.
정확히 어느 것인지 짚어 주세요.
- ❌ “날짜” → ✅ “송장 발행일 (지급 기한 아님)”
- ❌ “금액” → ✅ “세금과 할인을 모두 반영한 지급해야 할 총액”
- ❌ “이름” → ✅ “거래처 회사명 (담당자 이름 아님)”
비슷하게 생긴 항목이 많은 문서일수록 이 점이 더 중요해집니다.
2. 어떤 형식으로 받고 싶은지 말하세요
엔진은 문서에 적힌 그대로를 읽지만, 많은 경우 여러분은 일관된 형태로 정리된 값을 원합니다. 특히 날짜, 숫자, 통화가 그렇습니다. 형식이 중요하다면 그대로 요청하세요.
- “모든 날짜를 YYYY-MM-DD 형식으로 맞춰 주세요.”
- “금액은 통화 기호나 천 단위 구분 기호 없이 순수한 숫자로만 표기해 주세요.”
- “출금은 음수로 표기해 주세요.”
- “통화 코드(USD, EUR 등)는 별도 항목으로 담아 주세요.”
이렇게 하지 않으면 문서에 적힌 그대로($1,250.00, 1.250,00,
(1,250.00))가 나오고, 결국 나중에 스프레드시트에서 손수 정리하게
됩니다. 처음에 한 문장만 적어 두면 그 수고를 덜 수 있습니다.
3. “문서당 하나”와 “행마다 하나”를 구분하세요
이것이 사람들이 가장 많이 헷갈려 하는 단 하나의 지점이라, 천천히 짚고 넘어갈 가치가 있습니다. 어떤 항목은 문서당 한 번만 등장합니다. 송장 번호, 은행 거래 명세서의 명세 기간, 계좌 명의자 같은 것이죠. 반면 어떤 항목은 반복됩니다. 모든 품목 내역, 모든 거래, 항공권의 모든 탑승객처럼요.
이 둘을 구분하지 않으면, 목록을 원했는데 값 하나만 나오거나, 구조를 원했는데 한데 뭉개진 결과가 나올 수 있습니다. 해결책은 소리 내어 말하는 것입니다.
“명세서 단위 항목은 한 번씩만 추출해 주세요. 계좌 명의자, 계좌 번호, 기초 잔액, 기말 잔액. 그런 다음 각 거래를 날짜, 설명, 금액과 함께 한 행씩 추출해 주세요.”
“각각의”, “~마다” 라는 말이 여러분의 든든한 친구입니다. “각 품목 내역마다…”, “각 거래마다…” 같은 표현은 엔진에게 목록을 기대하라고 알려 주고, 뒤죽박죽 대신 깔끔하게 반복되는 행을 돌려줍니다.
4. 헷갈리기 쉬운 항목에는 구분하는 한마디를 더하세요
어떤 항목은 정말로 모호해서, 문서를 아무리 들여다봐도 답이 나오지 않습니다. 오직 여러분의 의도만이 답을 정합니다. 한 장의 통관 서류에 송장 번호와 발주 번호가 함께 적혀 있을 수 있고, 배송지 주소와 청구지 주소가 함께 있을 수 있으며, 총중량과 순중량이 함께 있을 수 있습니다.
두 항목이 헷갈릴 수 있다면, 짧은 설명을 덧붙이세요.
- “송장 번호 (판매자가 ‘INV’로 표기한 번호 — PO 번호 아님)”
- “배송지 주소 (물품이 배달되는 곳, 청구지 주소 아님)”
실제로 어느 것이 필요한지는 여러분이 알고 있습니다. 그 점을 적어 주면 추측의 여지가 사라집니다.
5. 항목이 빠져 있을 때 어떻게 할지 정하세요
실제 문서는 들쭉날쭉합니다. 어떤 송장에는 PO 번호가 있고 다음 송장에는 없습니다. 어떻게 할지 말해 두지 않으면 그 처리를 열린 채로 남겨 두는 셈인데, 추출 작업에서 거의 항상 안전한 기본값은 아무것도 지어내지 않는 것 입니다.
“문서에 없는 항목은 빈칸으로 두세요. 절대 추측하거나 임시 값을 채워 넣지 마세요.”
이 한 줄은 특히 금융, 법률, 의료 문서에서 그만한 값어치를 합니다. 이런 문서에서는 눈에 보여서 확인할 수 있는 빈칸보다, 자신만만하게 틀린 값이 훨씬 더 위험하기 때문입니다.
스키마를 만드는 세 가지 방법 — 그리고 각각 언제 쓰는지
Ztract는 세 가지 출발점을 제공합니다. 위의 습관은 셋 모두에 똑같이 적용되며, 관건은 단지 어디서 시작하느냐입니다.
- 준비된 스키마에서 시작하기. 흔한 문서 — 송장, 영수증, 은행 거래 명세서, 신분증, 이력서, 계약서, 화험 보고서, 통관 서류 — 에는 일반적인 항목을 이미 알고 있는 템플릿이 마련되어 있습니다. 문서가 표준 유형이고 빠르게 시작한 뒤 다듬고 싶을 때 가장 좋습니다.
- 항목을 직접 설명하기. 일상 언어로 된 설명을 처음부터 작성합니다. 문서가 특이하거나, 다른 건 빼고 딱 이 항목들만 원할 때 가장 좋습니다. 바로 여기서 앞서 본 다섯 가지 습관이 진가를 발휘합니다.
- 샘플로 추론하기. 대표적인 문서 하나를 넣으면 엔진이 그 안에서 본 것을 바탕으로 스키마를 제안합니다. 한 장을 직접 보기 전에는 문서에 어떤 항목이 들어 있는지 잘 모를 때 가장 좋습니다. 제안을 받은 뒤 일상 언어로 다듬으면 됩니다.
대부분은 이 방법들을 섞어 씁니다. 템플릿이나 샘플에서 시작한 뒤, 위의 습관을 활용해 설명을 손수 더 날카롭게 다듬는 식이죠.
더 자세한 내용은 스키마 설계하기 문서 페이지를 확인해 보세요.
빠르게 보는 문제 해결 표
결과가 기대와 다를 때, 원인은 대개 설명에 있습니다. 흔한 사례는 다음과 같습니다.
| 나타나는 현상 | 가능한 원인 | 해결 방법 |
|---|---|---|
| ”금액”에 엉뚱한 숫자가 나옴 | 항목이 구체적이지 않음 | 정확한 값을 짚으세요: “세금 반영 후 지급할 총액” |
| 날짜 형식이 제각각임 | 형식을 요청하지 않음 | ”모든 날짜를 YYYY-MM-DD 형식으로” 추가 |
| 목록을 원했는데 값 하나만 나옴 | 반복 항목을 표시하지 않음 | ”각 … 마다 … 를 추출” 사용 |
| 목록이 한 칸에 뭉개짐 | 위와 동일 | 동일 — 행별 항목을 명시적으로 짚으세요 |
| 난데없이 없던 항목이 생김 | 누락 항목 규칙이 없음 | ”없으면 빈칸으로, 절대 추측 금지” 추가 |
| 비슷한 두 항목이 서로 바뀜 | 구분하는 설명이 없음 | 구분 문구 추가: “PO 번호이지 송장 번호가 아님” |
스키마는 전체 과정의 절반일 뿐
잘 쓴 스키마라도 한 번 더 살펴보면 더 좋아지며, Ztract는 바로 그 점을 중심으로 설계되었습니다. 추출된 모든 값은 원본 문서에서의 위치에 연결되어 있습니다. 값을 클릭하면 그것이 어디에서 왔는지 정확히 보입니다. 이상해 보이는 값을 눈으로 훑어 찾아 한 번의 클릭으로 고치면 끝입니다. 수정에는 비용이 들지 않습니다. 페이지로 차감되는 것은 추출뿐이고, 그 뒤의 편집은 차감되지 않습니다.
그러니 좋은 스키마의 목표는 첫 시도에서의 완벽함이 아닙니다. 검토 단계가 다시 작업하는 일이 아니라 가볍게 훑는 일이 될 만큼 충분히 근접하는 것이 목표입니다. 위의 다섯 가지 습관이 바로 그곳에 이르게 해 줍니다.
실제 문서로 직접 해 보세요
이 감을 가장 빠르게 익히는 방법은, 여러분이 실제로 다루는 문서에 대한 설명을 직접 써 보고 무엇이 돌아오는지 확인하는 것입니다. 새 계정에는 무료 30페이지가 제공되며 신용카드도 필요 없습니다. 스키마 초안을 잡고, 다듬고, 그러는 동안 결과가 점점 정확해지는 모습을 지켜보기에 충분한 양입니다.
그리고 어떤 문서 유형이나 설명하려던 스키마 때문에 막혔다면, 원하는 결과를 얻을 말을 찾지 못했다면, 그것이야말로 저희가 가장 듣고 싶은 피드백입니다. 알려주세요. 엔지니어가 아닌 분들에게도 스키마 설계가 당연하고 쉽게 느껴지도록 만드는 일이야말로, 저희가 제대로 해내고 싶어 가장 마음 쓰는 부분입니다.