포트로직스 TOMS는 이메일에 의존하던 수출입 물류 문서를 다루는 솔루션이라, 물류 문서 추출·누락 점검 도구는 화주별로 다른 포트로직스의 실제 문서 양식이 있어야 학습되고 검증된다.
'디지털 포워더로 물류에 IT 기술력'. 문서 추출이 물류 자동화의 핵심.
'이메일 의존 업무·비효율 정보 관리 해결'. 문서 추출·누락 점검이 직격.
'자사 솔루션 TOMS'. 추출 결과가 솔루션 입력이 됨.
수출입 물류 문서(이메일·서류)를 받아 핵심 항목(선적·금액·기한)을 원문 근거와 함께 추출하고, 누락·불일치를 짚는 1주 FDE PoC.
포트로직스 FDE. 물류 서류를 사람이 일일이 옮겨 적던 일을, 자동 추출 + 누락 점검 도구로 옮기고 싶은 사람.
문서에 추출 스키마를 붙이면, LLM 이 (a) 핵심 항목을 원문 근거와 함께 추출하고 (b) 누락·불일치를 짚을 수 있다.
물류 문서를 받아 핵심 항목을 원문 근거와 함께 추출하고 누락·불일치를 짚는 동작하는 도구.
검수자 라벨과 추출 일치도(κ)를 재고, 누락·환각 비율을 보여주는 대시보드.
추출 결과를 TOMS 등 물류 솔루션에 자동 입력 연동하는 단계.
물류 문서를 넣으면 핵심 항목과 누락이 원문 근거와 함께 나오는 걸 시연한다
추출 항목의 원문 근거(span)가 실제 문서에 존재하는 비율 100%. 없으면 환각 차단
측정: span 일치 규칙, 표본: 추출 200건
일부러 만든 결측·불일치·미등록 화주 문서 30종을 넣어도 추출이 멈추지 않고 처리되는 걸 시연한다
위 수치는 더미데이터 자가채점이며, 실제 추출 정확도는 포트로직스 실데이터 + 실 검수자가 있어야 측정 가능. 이 포트폴리오는 그 검증을 바로 돌릴 수 있는 상태까지 만든다.
이건 고객·실데이터 없이 혼자 만든 포트폴리오라 모든 수치는 합성 데이터 자가채점이다. 면접에서 '데모 동작 + 실검증 준비 상태'로 솔직히 설명하는 게 오히려 신뢰를 준다
정답을 내가 만들었으니 잘 맞는 게 당연. 그래서 결측·경계·미등록·표기 흔들림 케이스를 더미에 일부러 섞어 쉬운 문제만 푸는 게 아님을 보여준다
환각 위험: 원문에 없는 값은 추출하지 않고 '확인 필요'로 표시. 가드로 강제
실제 도입 시 달라지는 것: 실 고객 데이터·환경이 더미와 다르므로 규칙·파이프라인을 실데이터로 맞춰야 한다(도입 단계 과제)
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
물류 문서를 추출 입력으로 쓴다
| doc_id | shipper_raw | shipper_id | field | value | span |
|---|---|---|---|---|---|
| LG900 | OO상사(구) | — | 선적일 | — | — |
| LG901 | 화주0 | sh0 | 금액 | 0 | 금액 0 |
| LG902 | 불일치 | sh2 | 금액 | 9999999 | — |
| LG903 | 미등록화주 | — | 컨테이너 | ABC | 원문에 없음 |
| LG000 | 화주0 | sh0 | 선적일 | v0 | 원문 0 |
z.object({ doc_id: z.string(), shipper_raw: z.string(), shipper_id: z.string().nullable(), field: z.string(), value: z.string().nullable(), span: z.string().nullable() }). 쉬운 데이터만 만들지 말 것. 다음 하드 케이스를 의도적으로 섞어라: value/span null(추출 실패·근거 없음), value 0/극단, span 원문 불일치(환각), shipper_id null 미등록, shipper_raw 표기 흔들림. 형식 깨뜨리기 시도 3건도 별도로.z.object({ doc_id: z.string(), shipper_raw: z.string(), shipper_id: z.string().nullable(), field: z.string(), value: z.string().nullable(), span: z.string().nullable() })| AWS | 배포 + 문서 스토리지 |
| LLM | 항목 추출 + 원문 근거 인용 |
| LangChain | 추출 체인 |
| LlamaIndex | 문서 인덱싱 |
| Claude | 추출 본 모델 + 환각 가드 |
✓ pass → 그대로 멈춰도 완성품. 더 키우려면 2주차(추출 정확도 검증)로.
✓ pass → 여기서 멈춰도 완결. 더 키우려면 3주차(솔루션 연동)로.
물류 추출 + 누락
z.object({ doc_id: z.string(), items: z.array(z.object({ field: z.string(), value: z.string(), span: z.string() })), missing: z.array(z.string()), flagged: z.boolean() })[
{
"doc_id": "LG000",
"items": [
{
"field": "선적일",
"value": "2026-06-01",
"span": "선적일: 2026-06-01"
}
],
"missing": [],
"flagged": false
},
{
"doc_id": "LG903",
"items": [],
"missing": [
"컨테이너 근거 없음. 환각 차단"
],
"flagged": true
},
{
"doc_id": "LG900",
"items": [],
"missing": [
"선적일 추출 실패"
],
"flagged": true
}
]items 의 span 이 원문에 존재하는지·missing 규칙은 자동 검증, 추출 정확성은 검수자/judge 검증.