n8n Information Extractor 노드: AI를 사용하여 텍스트에서 구조화된 데이터 추출하기 — 무료 워크플로우 JSON
요약
n8n의 Information Extractor 노드를 사용하여 비구조화된 텍스트에서 JSON 형태의 구조화된 데이터를 추출하는 방법을 설명합니다. 스키마 정의 방법, 노드 연결 구성, 그리고 효과적인 데이터 추출을 위한 프롬프트 작성 팁을 다룹니다.
핵심 포인트
- 비구조화된 텍스트를 정의된 JSON 스키마로 자동 변환
- LangChain의 구조화된 출력 기능을 활용한 구현
- LLM 성능 극대화를 위한 구체적인 필드 설명(Description) 작성법
- OpenAI, Anthropic, Gemini 등 다양한 Chat Model과 연동 가능
Information Extractor 노드는 n8n의 가장 실용적인 AI 노드 중 하나입니다. 이메일, PDF 스니펫, 고객 지원 티켓, 스크래핑된 웹 페이지와 같은 비구조화된 텍스트(unstructured text)를 입력하면, 언어 모델(language model)을 사용하여 사용자가 정의한 필드를 정확하게 추출합니다. 정규 표현식(regex)도, 취약한 파싱(parsing)도 필요 없습니다. 그저 구조화된 JSON 결과가 나올 뿐입니다.
이 가이드는 노드의 작동 방식, 스키마(schema) 정의, 출력 모드, 사람들이 흔히 실수하는 6가지 주의 사항, 그리고 무료 JSON이 포함된 3가지 프로덕션 준비 완료(production-ready) 워크플로우 패턴까지 모든 것을 다룹니다.
Information Extractor 노드가 하는 일
Information Extractor 노드는 LangChain의 구조화된 출력(structured output) 기능을 래핑(wrap)합니다. JSON 스키마(필드 이름 + 유형 + 설명)를 정의하고 텍스트 입력을 전달하면, 연결된 Chat Model이 스키마를 채웁니다. 출력은 추출된 필드가 최상위 키(top-level keys)로 구성된 단일 n8n 아이템입니다.
전형적인 입력값:
- 이메일 본문 텍스트
- PDF 또는 문서 콘텐츠 (Extract From File 노드를 거친 후)
- 고객 지원 티켓 설명
- 웹 페이지 텍스트 (HTML Extract 또는 HTTP Request 노드를 거친 후)
- 양식 제출 자유 텍스트 필드
- API 응답 설명
전형적인 출력값:
- 데이터베이스 삽입을 위한 준비가 된 구조화된 레코드
- 풍부해진 리드(lead) 데이터
- 분류 및 태그가 지정된 항목
- 파싱된 주소, 날짜, 이름, 금액
노드 연결 (Node Wiring)
Information Extractor는 AI 노드입니다. n8n의 LangChain 서브 그래프(sub-graph) 내에 위치하며, 여기에 연결된 Chat Model 서브 노드가 필요합니다.
[사용자의 텍스트 소스]
↓
[Information Extractor]
...
필수 연결: Chat Model (OpenAI, Anthropic Claude, Google Gemini, Ollama 등 무엇이든 가능)
선택적 연결:
- 메모리(Memory) 노드 (추출 작업에는 거의 필요하지 않음)
스키마 정의 (Schema Definition)
이곳이 대부분의 작업이 이루어지는 곳입니다. 노드의 Attributes 섹션 내에서 추출 스키마를 정의합니다.
속성(Attributes) 추가하기
각 속성은 다음을 가집니다:
- Name — 출력 필드 키 (예:
customer_name,invoice_total) - Type — String, Number, Boolean 또는 Object (중첩 구조)
- Description — 중요: LLM이 무엇을 추출해야 하는지 이해하는 데 사용됩니다. 구체적으로 작성하세요.
좋은 설명 vs 나쁜 설명 (Good vs Bad Descriptions)
| 필드 (Field) | 나쁜 설명 (Bad description) | 좋은 설명 (Good description) |
|---|---|---|
amount | "금액" | "통화 기호와 쉼표를 제외한 숫자로 된 총 송장 금액 (예: 1250.00)" |
| ... |
규칙: 똑똑한 인턴에게 해당 필드에 무엇을 써야 하는지 정확히 지시한다고 생각하고 설명을 작성하세요. 모호한 설명은 일관되지 않은 결과물을 생성합니다.
선택 사항 vs 필수 사항 (Optional vs Required)
기본적으로 모든 속성은 선택 사항(Optional)입니다. LLM은 찾을 수 없는 필드에 대해 null을 반환합니다. 필드를 필수 사항(Required)으로 표시할 수 있지만, 이 경우 모델이 더 열심히 시도하려다 데이터가 없을 경우 환각 (Hallucination) 현상을 일으킬 수 있습니다.
출력 모드 (Output Mode)
이 노드는 하나의 주요 출력 모드를 가집니다. 입력 항목당 하나의 항목을 방출하며, 정의된 필드가 해당 항목의 JSON에 추가되거나(또는 교체되어) 출력됩니다.
추출된 필드는 출력 항목의 json 객체 최상위 레벨에 나타나며, 다음과 같이 접근할 수 있습니다:
{{ $json.customer_name }}
{{ $json.invoice_total }}
{{ $json.sentiment }}
6가지 주의사항 (6 Gotchas)
1. Chat Model 연결은 필수이며, 자주 잊혀집니다
Information Extractor 노드를 배치하고 Chat Model 서브 노드를 연결하지 않은 채 실행하면 연결 오류가 발생합니다. 항상 Chat Model 서브 노드를 먼저 추가하세요. 노드 하단에 작은 입력 핸들로 나타납니다.
2. 입력 필드(Input field) 선택이 중요합니다
노드에는 들어오는 항목 중 어떤 필드에 추출할 텍스트가 포함되어 있는지 지정하는 Input 필드가 있습니다. 기본값은 주로 text입니다. 만약 텍스트가 body, content 또는 description에 있다면 이를 변경해야 합니다. 그렇지 않으면 모델이 빈 문자열을 받게 되어 null을 반환합니다.
3. 긴 텍스트는 컨텍스트 제한(Context limits)에 걸립니다
LLM은 입력 텍스트 전체를 읽어야 합니다. 매우 긴 문서(PDF, 긴 이메일 등)는 모델의 컨텍스트 창(Context window)을 초과할 수 있습니다. 추출기에 전달하기 전에 Summarization Chain 노드로 미리 청킹(Pre-chunk)하거나 Code node를 사용하여 텍스트를 자르십시오(Truncate). 여러 페이지로 구성된 PDF의 경우, 페이지별로 추출하십시오.
4. 누락된 필드에 대한 환각 (Hallucination)
텍스트에 특정 필드가 실제로 존재하지 않는데 해당 필드를 필수(Required)로 설정한 경우, 모델은 그럴듯하게 들리는 값을 지어낼 수 있습니다. 부재 자체가 의미를 갖는 필수 필드의 경우, 'Required' 대신 'Optional'로 설정한 뒤 후속 단계에서 null 여부를 확인하는 방식을 사용하십시오.
5. 중첩된 객체(Nested objects)는 신중한 스키마 설계가 필요합니다
중첩된 키를 가진 객체 타입(Object-type) 속성을 정의할 수 있지만, 중첩이 깊어질수록 모델이 이를 정확하게 채우는 데 어려움을 겪습니다. 가능한 한 스키마를 평탄화(Flatten)하십시오. 한 단계의 중첩은 보통 괜찮지만, 두 단계 이상의 중첩은 신뢰성을 떨어뜨립니다.
6. 온도(Temperature)와 모델 선택이 일관성에 영향을 미칩니다
온도가 높은 모델은 추출 결과가 더 가변적입니다. 구조화된 추출(Structured extraction)을 위해서는 창의성보다 정밀도(Precision)를 우선시하는 모델과 온도를 사용하십시오. OpenAI의 경우, 온도가 0인 gpt-4o-mini가 신뢰할 수 있는 가성비 좋은 선택입니다. Anthropic의 경우, 단순한 스키마에는 claude-haiku-4-5가 잘 작동하며, 복잡한 스키마에는 claude-sonnet-4-6을 사용하십시오.
3 워크플로우 패턴
패턴 1: 이메일 리드 추출기 (Email Lead Extractor)
시나리오: 고객 지원 편지함으로 인바운드 이메일이 도착합니다. 리드 데이터(이름, 회사, 사용 사례, 예산 범위)를 추출하여 CRM이나 Google Sheet에 기록하고 싶습니다.
흐름:
Gmail Trigger (새 이메일)
→ Information Extractor
Schema: sender_name (String), company (String), use_case (String), budget_range (String), urgency (String: low/medium/high)
...
작동 원리: 이메일 본문은 비구조적이지만 유의미한 정보(Signal)가 포함되어 있습니다. 추출기는 "안녕하세요, Acme Corp의 Jane입니다. 저희는 송장 대조 작업을 자동화하고 싶습니다. 예산은 약 5,000달러 정도입니다."라는 문장을 단 한 번의 단계로 깔끔한 구조화된 레코드로 변환합니다.
무료 JSON: Email Lead Extractor 워크플로우 다운로드 →
패턴 2: 고객 지원 티켓 분류기 및 라우터 (Support Ticket Classifier and Router)
시나리오: 웹훅 (Typeform, Jotform 또는 사용자의 앱)을 통해 고객 지원 티켓이 들어옵니다. 문제 카테고리, 심각도(severity), 영향을 받는 제품을 추출한 다음, 적절한 Slack 채널이나 Linear 프로젝트로 라우팅(route)하고자 합니다.
흐름 (Flow):
Webhook Trigger (새 티켓)
→ Information Extractor
Schema: issue_category (String: billing/technical/account/feature-request), severity (String: low/medium/high/critical), affected_product (String), customer_tier (String: free/pro/enterprise)
...
작동 원리: 키워드 매칭이나 전체 분류 모델 (classification model)이 필요했던 라우팅 로직이 단 2개의 노드 패턴으로 변합니다. 추출된 severity와 customer_tier는 다운스트림(downstream) 단계에서 SLA 할당을 주도합니다.
무료 JSON: Support Ticket Router 워크플로우 다운로드 →
패턴 3: 송장 데이터 추출기 (Invoice Data Extractor) (PDF → 데이터베이스)
시나리오: 이메일을 통해 PDF 첨부 파일로 송장(invoice)을 받습니다. 송장 번호, 공급업체(vendor), 날짜, 품목별 합계(line items total), 납기일(due date)을 추출한 다음, 미지급금(AP) 추적을 위해 Postgres 또는 Airtable에 삽입하고자 합니다.
흐름 (Flow):
Gmail Trigger (첨부 파일: PDF)
→ Extract From File 노드 (PDF를 텍스트로 읽기)
→ Information Extractor
...
작동 원리: 과거에 PDF 송장을 파싱(parsing)하려면 유료 OCR 서비스나 취약한 정규 표현식(regex)이 필요했습니다. n8n의 Extract From File + Information Extractor를 사용하면 어떤 송장 형식이든 몇 초 만에 구조화된 AP 데이터를 얻을 수 있으며, 공급업체 간의 형식 차이도 자동으로 처리합니다.
무료 JSON: Invoice Extractor 워크플로우 다운로드 →
Information Extractor vs 기타 AI 노드
| 노드 (Node) | 최적의 용도 |
|---|---|
| Information Extractor | 비정형 텍스트에서 구조화된 필드 추출 (Structured field extraction) |
| ... |
텍스트에서 **특정 명명된 필드 (specific named fields)**가 필요한 경우에는 Information Extractor를 사용하세요. **자유 형식의 텍스트 응답 (free-form text response)**이 필요한 경우에는 Basic LLM Chain을 사용하세요.
빠른 참조 (Quick Reference)
노드 (Node): Information Extractor
필요 사항 (Requires): Chat Model 서브 노드 (필수)
입력 필드 (Input field): 데이터 필드와 일치하도록 구성
...
무료 워크플로우 JSON 받기
위의 세 가지 패턴은 모두 Gumroad에서 제공되는 n8n Workflow Packs에 포함되어 있습니다. 한 번의 다운로드로 즉시 액세스할 수 있으며, JSON을 n8n 인스턴스에 붙여넣기만 하면 바로 사용할 수 있습니다.
이 내용이 유용했나요? 아래에 댓글을 남겨주세요 — 특히 여러분이 어떤 추출 유스케이스 (use case)를 해결하고 있는지, 그리고 어떤 모델을 사용 중인지 정말 궁금합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기