흩어진 엑셀의 칸 이름을 우리 표준 용어로 맞춥니다
‘업체명’, ‘거래처’, ‘CUST_NAME’처럼 파일마다 다른 칸 이름을 표준 사전의 한 용어로 묶습니다. 엔진이 맞는 용어를 제안하고 사람이 승인합니다. 승인한 것은 사전에 남아 다음 파일에서 자동으로 맞춰집니다. 개인정보를 가려서 넘겨야 하는 파일도 같은 순서로 점검합니다.
파일은 이 브라우저 안에서만 읽습니다. 서버에는 원본 값 없이 칸 이름 · 값 형식 · 건수 · 이웃 칸 이름과 파일 이름(숨길 수 있습니다)만 갑니다. 로그인 없이 샘플로 먼저 해 볼 수 있습니다.
회사 표준 사전 파일이 따로 있으면 표준 사전부터 시작
처음이라면 이 순서대로 하면 됩니다
화면은 한 번에 한 가지만 묻습니다. 위쪽 단계 줄을 보면 지금 어디쯤인지 알 수 있습니다.
- 1
로그인
메일로 받은 링크를 누르면 됩니다. 비밀번호는 만들지 않습니다.
처음 한 번은 약관과 개인정보 동의를 받습니다
- 2
파일 고르기
엑셀이나 CSV를 고릅니다. 파일은 올라가지 않고, 이 브라우저가 값을 뺀 칸 이름 · 값 형식 · 건수 · 이웃 칸 이름과 파일 이름만 뽑아 보냅니다. 파일 대신 공공데이터 API에서 표를 받아 시작할 수도 있습니다.
보내기 전에 무엇이 가는지 화면에 먼저 보입니다
- 3
목적 고르기
다른 파일과 합칠지, 품질평가에 낼지, 개인정보를 가려 넘길지 고릅니다. 목적에 필요한 단계만 남습니다.
표준 사전이 필요한 목적이면 사전도 고릅니다
- 4
검토하고 내보내기
확신이 높은 칸은 알아서 확정되고, 애매한 칸만 하나씩 승인합니다. 끝나면 결과 파일과 매핑표를 받고, 내보낼 표를 칸마다 그림으로 먼저 볼 수 있습니다.
결과 파일과 그림도 이 브라우저에서 만들어집니다
서버로 가는 것은 이것뿐입니다
원본 값은 내 컴퓨터를 떠나지 않습니다. 서버는 칸 이름과 값이 어떤 모양인지로 매핑을 제안합니다.
내 브라우저
원본 파일이 그대로 있는 곳
| BIZ_NO | 업체명 | 연락처 |
|---|---|---|
| 123-45-67890 | 한빛상사 | 010-2481-7730 |
| 214-86-11207 | 동해물산 | 010-9302-1184 |
| 305-12-55871 | 새벽유통 | 02-771-0456 |
PivoxMap 서버
제안을 만드는 데 쓰는 것
- 칸 이름BIZ_NO
- 값의 형식사업자번호형(3-2-5)
- 건수3
- 이웃 칸업체명, 연락처
- 파일 이름거래처.csv · 숨기면 ‘파일-…’
- 원본 값0
요청 본문에 원본 값이 섞여 있지 않은지 자동 시험이 코드를 바꿀 때마다 확인합니다. 칸 이름 자리에 값처럼 보이는 글자가 오면 서버가 받지 않습니다. 작업마다 무엇이 서버로 갔는지는 결과 화면 위에 표시됩니다. 내 파일이 아니라 공개 통계를 가져올 때, 한국은행 · 통계청 · 서울시 · 금감원 · 한국거래소 · 미 SEC · ISMS-P 인증 현황 자료만은 브라우저가 직접 받을 수 없어 서버가 받아 넘깁니다(저장하지 않음).
확신도에 따라 세 갈래로 나눕니다
사람이 볼 것만 남깁니다. 기준은 결과 화면에서 직접 올리거나 내릴 수 있습니다.
확신도 0.80 이상
기준(처음 0.80) 이상이면 사람이 보지 않고 확정합니다. 용어명 · 약어 · 동의어가 정확히 맞는 칸이 여기에 듭니다.
애매한 칸
확신도가 기준보다 낮은 칸입니다. 1위와 2위 후보의 차이가 작으면 확신도가 깎여 여기로 옵니다.
사전에 없는 칸
맞는 용어가 없으면 그대로 두거나, 새 용어로 사전에 추가합니다.
이 기준을 어떻게 재나요
자동 확정된 칸은 사람이 보지 않습니다. 그래서 가장 중요하게 세는 숫자는 ‘자동 확정했는데 틀린 칸’입니다. 실제 공공데이터 파일로 그 수를 셉니다.
재는 순서
- 1공공데이터포털에서 받은 실제 파일과, 행정안전부 공통표준용어 13,159개를 사전으로 씁니다.
- 2칸마다 맞는 표준용어(또는 ‘표준 없음’)를 적은 정답표를 미리 만듭니다.
- 3AI를 끈 채 이 서비스와 같은 경로로 매핑하고, 기준 0.80으로 세 갈래를 나눕니다.
- 4정답표와 비교해 ‘맞춘 칸’과 ‘자동 확정했는데 틀린 칸’을 셉니다.
측정 결과 · 2026-10-18 · AI 꺼짐
| 묶음 | 칸 | 맞춤 | 자동 확정했는데 틀림 |
|---|---|---|---|
| 서로 다른 주제 17개 파일 | 147 | 100 | 0 |
| 공영주차장 10개 기관 | 137 | 81 | 0 |
| 약국 10개 기관 | 75 | 46 | 2 |
| 어린이집 10개 기관 | 107 | 49 | 3 |
| 모범음식점 10개 기관 | 89 | 46 | 1 |
| 합계 | 555 | 322 | 6 |
자동 확정했는데 틀린 6칸은 모두 칸 이름이 표준용어와 똑같은데 값은 다른 뜻인 칸입니다. 예를 들어 ‘업종’ 칸에 시군구 이름이, ‘상세주소’ 칸에 전체 주소가 들어 있었습니다. 나머지 맞추지 못한 칸은 모두 ‘검토 필요’나 ‘표준 없음’으로 가서 사람이 봅니다.
아직 모르는 것
- 정답표는 우리가 만들었고 바깥 검수를 받지 않았습니다. 공영주차장 · 약국 · 어린이집 · 모범음식점 묶음의 정답표는 초안이라 검수 뒤 숫자가 바뀔 수 있습니다.
- 0.80을 다른 기준값과 나란히 놓고 비교한 측정은 아직 없습니다. 지금 숫자는 0.80에서 잰 것입니다.
- 칸 이름이 표준용어와 똑같으면 값의 뜻까지는 확인하지 못합니다. 값의 형식이 용어와 어긋날 때만 자동 확정을 막습니다. 그래서 단계 진행에서 매핑을 승인하기 전에, 자동 확정된 칸 일부를 무작위로 골라 사람이 확인합니다. 이런 칸에서 머리글과 값 중 무엇을 정답으로 볼지는 정답표 검수에서 정합니다.
- AI가 낸 제안은 확신도와 상관없이 자동 확정하지 않습니다. AI를 켠 상태의 측정은 아직 없습니다.
코드로 보기 · 0.80이 정해지는 곳과 채점하는 줄
기본값 0.80
화면이 작업을 만들 때 보내는 값과, API가 값을 받지 못했을 때 쓰는 값입니다. 결과표의 슬라이더로 작업마다 바꿀 수 있습니다.
// frontend/src/lib/startJourney.ts — 화면이 작업을 만들 때
const body = { dict_id: dictId, filename: ex.filename, threshold: 0.8, columns: ex.columns };
# backend/routes/jobs.py — API 기본값
threshold: float = Field(0.8, allow_inf_nan=False)자동 확정 판정
사람이 아직 결정하지 않은 칸의 상태를 정하는 단 한 곳입니다. 확신도가 기준 이상이고, 복합 칸이 아니고, AI 제안이 아닐 때만 자동 확정입니다.
# backend/deps.py — columns_of
# blocked=1 은 점수와 무관하게 사람이 봐야 하는 컬럼이다 (복합 컬럼 등)
# source=llm(AI 제안)은 확신도와 무관하게 사람이 본다 — AI 제안을 기본으로 받아들이지 않는다 (3차, 2026-10-05)
auto = (r["confidence"] or 0) >= t and not r.get("blocked") and r.get("source") != "llm"
eff = "no_standard" if r["suggested_term_id"] is None else ("auto_ok" if auto else "needs_review")채점
벤치는 제품과 같은 상태(effective_state)를 읽고, 자동 확정인데 정답표와 다른 칸을 셉니다. 위 표의 '자동 확정했는데 틀림'이 이 목록의 길이를 파일마다 더한 값입니다.
# backend/bench/bench_mois.py
x["state"] = x["effective_state"] # 제품이 화면에 보이는 상태 (AI 제안 → needs_review)
aw=[x["raw_name"].strip() for x in cols if x["state"]=="auto_ok" and terms.get(x["suggested_term_id"])!=gold_for(f, x["raw_name"].strip())]
# 다시 재는 명령 (backend/ 에서, AI 끔)
PIVOXMAP_LLM_PROVIDER=anthropic ANTHROPIC_API_KEY= python bench/bench_mois.py --dir=set4 --gold=bench/gold_set4.json --out=/tmp/set4.json시작하기 전에
표준 사전이 없는데 써도 되나요?
됩니다. 내장 표준 사전으로 시작하거나, 지금 고른 파일을 기준으로 삼을 수 있습니다. 회사 사전(엑셀)이 있으면 올려서 그 사전에 맞춥니다. 사전 파일도 브라우저가 읽고, 확인 화면에서 고른 칸(용어명 · 약어 · 설명 · 동의어 등)만 보냅니다.
공공데이터도 가져올 수 있나요?
됩니다. 시작 화면의 ‘공공데이터 API 에서 가져오기’에서 국토교통부 아파트 실거래가 · 에어코리아 대기오염을 고르거나, data.go.kr · 한국은행 ECOS · 통계청 KOSIS · 서울 열린데이터광장 · 금감원 OpenDART · KRX Open API · 미 SEC · NVD · FDIC · ISMS-P 인증 현황 · 해외 시세 API 의 요청 주소를 붙여 넣습니다. 서비스키 · 인증키는 각 기관에서 받고, 이 서비스는 저장하지 않습니다. data.go.kr · NVD · FDIC · 해외 시세 자료는 이 브라우저가 직접 받고, 한국은행 · 통계청 · 서울시 · 금감원 · 한국거래소 · 미 SEC · ISMS-P 인증 현황 자료는 브라우저가 직접 받을 수 없어 서버가 받아 넘깁니다(저장하지 않음). 받은 표는 내 파일과 같은 단계를 거칩니다.
결과를 그림으로 볼 수 있나요?
내보내기 단계의 ‘결과 대시보드’가 내려받을 표 그대로 칸마다 그림 하나(달별 건수 · 숫자 구간 · 많은 순 · 그룹별 평균)를 그립니다. 개인정보를 처리했다면 같은 칸의 처리 전 눈금을 옆에 둡니다. 건수가 기준(k)보다 적은 묶음은 숨기고, 혼자 튀는 값이 드러나지 않게 최솟값 · 최댓값은 만들지 않습니다. 그림도 이 브라우저에서만 만들고 서버로 보내지 않습니다.
AI가 제 데이터를 보나요?
규칙과 유사도로 먼저 맞추고, 그래도 못 잡은 칸에만 AI를 씁니다. AI에 가는 것도 칸 이름 · 설명 · 값 형식 · 이웃 칸 이름뿐이고 원본 값은 가지 않습니다. 로그인할 때 국외 이전에 동의한 계정의 작업에만 씁니다. 팀 소유자가 팀 설정에서 끌 수 있고, 조직 암호를 켠 팀은 쓰지 않습니다.
혼자 승인해도 되나요?
팀에서 ‘네 눈 검사’를 켜면, 개인정보 단계는 매핑을 결정하거나 앞 단계를 승인한 사람이 아닌 다른 구성원이 승인해야 합니다. 개인 계정이나 샘플 체험에서는 혼자 끝낼 수 있습니다.
돈이 드나요?
지금은 무료입니다.
샘플로 먼저 보고 정하세요
로그인 없이 30초면 끝까지 가 봅니다.