treeru.com
AI

LLM으로 비정형 문서 자동 구조화 — 메뉴 19개 추출 정확도 실측

2026-07-02
Treeru

“메뉴판 문서를 주면 LLM이 DB 데이터를 만들어줄 수 있을까?” 매장 정보 시스템을 만들 때 가장 지루하고 오류가 잦은 단계가 초기 데이터 입력입니다. 메뉴 이름, 가격, 영업시간을 사람이 한 줄씩 옮겨 적는 작업이죠. 이걸 LLM에게 시키면 어느 정도 믿을 수 있는지, 로컬 LLM(Qwen3-14B-AWQ)에 마크다운 문서를 주고 추출한 JSON을 수동 입력된 정답 DB와 필드 단위로 대조해 정확도를 실측했습니다. 결과는 “쓸 만하다, 단 조건이 있다”입니다.

100%

가격·카테고리 정확도

94.7%

메뉴 이름 Recall

5.92초

메뉴 19개 추출 시간

71.4%

비즈니스 정보 일치율

데이터 입력이라는 병목

매장·업체 정보를 다루는 서비스는 모두 같은 병목을 만납니다. 실제 정보는 메뉴판, 안내문, 워드 문서 같은 비정형 문서에 있는데, 시스템이 원하는 것은 스키마가 잡힌 정형 데이터(이름·가격·카테고리·영업시간)입니다. 이 간극을 사람이 메우면 매장 하나에 수십 분씩 걸리고, 오타와 누락이 따라옵니다.

LLM은 이론적으로 이 변환에 최적입니다. 문서를 읽고 JSON으로 뱉으면 되니까요. 문제는 “얼마나 정확한가”를 아무도 숫자로 말해주지 않는다는 점입니다. 데모는 늘 그럴듯하지만, 실무 투입 판단에는 필드 단위 정확도가 필요합니다. 그래서 직접 측정했습니다.

테스트 설계 — 정답지를 먼저 만든다

정확도를 측정하려면 정답지가 필요합니다. 테스트용으로 만든 가상의 카페(“달빛카페”) 데이터를 사용했습니다 — 메뉴 19개짜리 메뉴판(menu.md)과 매장 안내문(info.md)을 마크다운으로 준비하고, 같은 내용을 사람이 직접 PostgreSQL에 입력해 기준 데이터로 삼았습니다. 흐름은 이렇습니다.

비정형 문서 (menu.md, info.md)
        │
        ▼  LLM 추출 (구조화 프롬프트 + JSON 스키마)
구조화된 JSON
        │
        ▼  필드 단위 대조
수동 입력 DB (정답지) ──▶ 정확도 산출
  • 모델: Qwen3-14B-AWQ (SGLang 서빙)

    로컬 GPU에서 돌아가는 중급 모델. 클라우드 최상급이 아니라 '현실적으로 운영 가능한 로컬 모델'로 어디까지 되는지가 관심사였습니다.

  • temperature 0.1

    추출 작업은 창의성이 필요 없습니다. 낮은 온도가 재현성과 정확도를 높입니다.

  • thinking 모드 비활성화

    Qwen3의 reasoning 모드를 끄니(enable_thinking: false) JSON 출력이 안정화됐습니다. 추론 과정이 출력에 섞여 JSON 파싱이 깨지는 문제를 원천 차단합니다.

실패 사례 분석 — ‘벚꽃’이 ‘베트꽃’이 된 이유

유일한 이름 불일치 1건이 흥미롭습니다. 원문의 “벚꽃라떼”를 “베트꽃라떼”로 추출했습니다. 없는 메뉴를 지어낸 게 아니라, 한글 음절을 미묘하게 잘못 옮긴 OCR 유사 오탈자입니다. 가격·카테고리는 이 항목도 정확했으니 “항목은 인식했지만 표기를 틀린” 케이스입니다.

이 오류 유형이 까다로운 이유

완전히 틀린 값은 검증 로직으로 걸러내기 쉽습니다. 하지만 “벚꽃 → 베트꽃”처럼 그럴듯하게 틀린 값은 스키마 검증을 통과합니다. 문자열이고, 비어 있지 않고, 형식도 맞으니까요. 원문과의 유사도 검사(예: 원문에 존재하는 부분 문자열인지 확인) 같은 원문 대조 후처리가 있어야 잡을 수 있습니다.

그 외 관찰 사항 두 가지. 알레르기 정보는 원문에 명시된 디저트류는 정확히 추출하고, 명시가 없는 음료류는 null로 처리했습니다 — 없는 정보를 지어내지 않은 것은 오히려 긍정적입니다. 상세 설명(description) 필드는 원문 테이블에 없었으므로 전부 빈 문자열이었습니다. LLM 추출의 상한선은 결국 원문 품질입니다.

비즈니스 정보 추출 — 정규화의 벽

매장 안내문(info.md)에서 주소·연락처·영업시간 등 7개 필드를 추출해 대조했습니다. 결과는 7개 중 5개 일치(71.4%), 추출 시간 2.38초.

필드일치비고
주소O'서울특별시' vs '서울' 표기 차이는 통과
전화번호O정확 일치
와이파이 SSIDO정확 일치
와이파이 비밀번호O정확 일치
평일 오픈 시간O09:00 정확 일치
평일 마감 시간O22:00 정확 일치
실내 좌석 수X값은 30으로 동일하나 문자열 vs 숫자 타입 불일치

주의 깊게 볼 점은, 불일치의 원인이 LLM의 “이해력”이 아니라 “정규화”라는 것입니다. 전화번호, 와이파이 정보, 영업시간 같은 팩트는 전부 정확히 뽑았습니다. 문제는 “서울특별시”와 “서울”처럼 둘 다 맞는 표기의 차이, 그리고 좌석 수 30을 문자열로 반환해 숫자 30과 타입이 어긋난 것 — 즉 추출 이후 파이프라인에서 코드로 해결해야 할 문제들입니다.

💡 이 구분이 중요합니다. “LLM이 틀렸다”로 뭉뚱그리면 개선 방향이 안 보입니다. 실측해 보면 오류의 대부분이 표기 정규화와 타입 캐스팅 — LLM 재호출 없이 결정적(deterministic) 후처리 코드로 해결되는 영역이었습니다.

실무 적용 가이드

이 실측을 바탕으로, LLM 자동 구조화를 실무에 넣는다면 파이프라인은 이렇게 구성해야 합니다.

  • 1단계 — LLM 추출은 '초안 생성기'로 규정한다

    최종 데이터 생성기가 아닙니다. 100% 정확한 필드(가격·카테고리)가 있어도, 전체 파이프라인의 신뢰 수준은 가장 약한 필드 기준으로 잡아야 합니다.

  • 2단계 — 스키마 검증 + 원문 대조 후처리

    JSON 스키마 검증으로 구조를 잡고, 추출된 문자열이 원문에 실제 존재하는지 대조해 '그럴듯한 오탈자'를 잡습니다. 타입 캐스팅과 표기 정규화(시·도 명칭 등)도 이 단계입니다.

  • 3단계 — 사람은 입력자가 아니라 검수자

    사람의 역할이 '19개를 입력'에서 '하이라이트된 1~2개 의심 항목을 확인'으로 바뀝니다. 작업 시간은 10분의 1로 줄고, 정확도는 오히려 올라갑니다.

모델 크기에 대한 소감도 하나. 이 결과는 클라우드 최상급 모델이 아니라 로컬에서 돌아가는 14B 양자화 모델로 얻은 수치입니다. “문서 → 구조화 데이터” 작업은 이미 로컬 중급 모델의 사정권 안에 들어와 있고, 데이터가 외부로 나가면 안 되는 환경에서도 충분히 구축할 수 있습니다.

결론

구분정확도평가
메뉴 이름94.7%우수 (오탈자 1건, 원문 대조로 검출 가능)
메뉴 가격100%완벽
메뉴 카테고리100%완벽
비즈니스 정보71.4%양호 (불일치는 정규화·타입 이슈)
  • 표 형식의 정형에 가까운 데이터(가격·카테고리)는 로컬 14B 모델도 100% 추출한다
  • 위험한 오류는 '완전히 틀린 값'이 아니라 '그럴듯하게 틀린 값' — 원문 대조 후처리가 필수다
  • 불일치의 대부분은 LLM 재호출이 아니라 결정적 후처리 코드(정규화·캐스팅)로 해결된다
  • 사람의 역할을 입력자에서 검수자로 바꾸는 것이 이 기술의 실질적 가치다

한 줄 요약: LLM 자동 구조화는 초기 데이터 입력의 보조 수단으로 이미 충분히 실용적입니다. 다만 최종 데이터는 반드시 사람이 검수하고, 오탈자 검증과 정규화 후처리를 파이프라인에 내장해야 합니다.

본 테스트는 2026년 2월에 수행되었습니다. Qwen3-14B-AWQ(SGLang 서빙, temperature 0.1, thinking 비활성화), 테스트용 가상 매장 데이터(메뉴 19개) 기준이며, 문서 형식·모델·프롬프트에 따라 결과가 달라질 수 있습니다. 본문의 매장 정보는 모두 테스트용으로 만든 가상 데이터입니다. 본 콘텐츠의 비상업적 공유는 자유이나, 상업적 이용 시 문의 페이지를 통해 연락 바랍니다.

문서 데이터 자동화가 필요하신가요?

Treeru가 LLM 추출 파이프라인 설계부터 검증 로직, 로컬 모델 구축까지 맞춤 컨설팅을 제공합니다.

무료 상담 신청하기
T

Treeru

웹 개발, IT 인프라, AI 솔루션 분야의 실무 인사이트를 공유합니다. 기업의 디지털 전환을 돕는 IT 파트너, Treeru입니다.

공유

관련 글

© 2026 TreeRU. All rights reserved.

본 콘텐츠의 저작권은 TreeRU에 있으며, 출처를 밝히지 않은 무단 전재 및 재배포를 금합니다. 인용 시 출처(treeru.com)를 반드시 명시해 주세요.