LlamaParse + GPT-4o로 청구서 데이터 추출 및 자동 기록
LlamaParse로 PDF를 파싱한 뒤 GPT-4o로 엄격한 청구서 JSON을 생성합니다. 결과를 Google Sheets에 기록하고 원본은 Google Drive에 보관, Telegram으로 검토 알림을 보냅니다.
누구에게 적합한가요?
어떤 문제를 해결하나요?
과제
청구서 수기 입력은 약 12분/건, 시급 $50 기준 약 $10.00/건.
복사/붙여넣기 오류로 세금/총액/공급사명이 약 1-3% 불일치해 재작업.
원시 OCR 텍스트는 노이즈가 많아 다페이지 PDF에서 20,000-60,000 토큰이 흔함.
솔루션
파싱+추출을 약 45초/건으로 줄여 인건비를 약 $0.63/건(약 94% 절감).
스키마 검증 JSON으로 불일치율을 약 0.2%까지 낮춤.
구조화 파싱+타깃 프롬프트로 약 2,000-6,000 토큰(약 70-95% 감소).
이 툴킷으로 달성할 수 있는 결과
청구서/업무 PDF를 원장화하고, 원본 아카이브와 빠른 인적 검토까지 한 번에 만듭니다.
청구서를 단일 JSON 계약으로 표준화
스키마 검증으로 총액 누락/날짜 오류/통화 불일치를 원장 반영 전에 차단.
감사 가능한 운영(첨부 분실 방지)
각 JSON 행을 원본 파일과 연결해, 감사 대응을 30분 찾기에서 30초 조회로 전환.
워크플로우 개요
Step 1: 원본 문서 수집하기
이메일 첨부(벤더에 적합) 또는 수동 업로드 폴더로 청구서 PDF를 수집하고, 최소 수신 메타데이터를 기록합니다.
실전 프롬프트/코드:
System: You are an operations assistant. Capture invoice intake metadata.
Return ONLY JSON: {"source":"email|upload","received_at":"ISO-8601","sender":"string","filename":"string","notes":"string"}.
Unknown fields must be null.
전문가 팁: 추출 전에 원본을 먼저 저장하면 실패 시에도 감사 추적이 보장됩니다.
청구서 PDF 수신 및 저장
메일 스레드 기반 첨부 수집으로 발신자/타임스탬프를 보존해 감사 수준의 인입 기록을 만들 수 있어 선택.
Step 2: 문서를 정제 텍스트로 파싱하기
저장된 PDF를 LlamaParse에 보내 레이아웃을 최대한 유지한 출력(markdown/text)을 받아, 라인아이템과 총액이 읽히도록 합니다.
실전 프롬프트/코드:
import os
from llama_parse import LlamaParse
parser = LlamaParse(
api_key=os.environ.get("LLAMA_CLOUD_API_KEY"),
result_type="markdown",
verbose=False,
)
# file_path = "/path/to/invoice.pdf"
# documents = parser.load_data(file_path)
# parsed_markdown = "
".join([d.text for d in documents])
전문가 팁: 다페이지 문서는 페이지 구분자를 유지해 검토 시 원문 페이지로 빠르게 추적하세요.
레이아웃이 보존된 청구서 파싱 텍스트
표/라인아이템 가독성을 유지하는 레이아웃 파싱으로 후속 LLM 혼동과 재작업을 줄일 수 있어 선택.
Step 3: 청구서 필드를 유효 JSON으로 추출하기
파싱된 텍스트를 GPT-4o에 제공하고 스키마 준수 JSON만 허용해 총액/세금/라인아이템을 정규화합니다.
실전 프롬프트/코드:
System: You are a finance data extraction engine.
Return ONLY valid JSON matching the schema exactly. No markdown, no commentary.
Normalization rules:
- Dates: ISO-8601 (YYYY-MM-DD).
- Amounts: numbers only (no symbols).
- Currency: ISO 4217 when possible (USD, JPY, EUR).
- Line items: include quantity/unit_price when present; else null.
JSON Schema (strict):
{
"invoice_number": "string|null",
"invoice_date": "string|null",
"vendor_name": "string|null",
"vendor_tax_id": "string|null",
"bill_to": "string|null",
"currency": "string|null",
"subtotal": "number|null",
"tax": "number|null",
"total": "number|null",
"due_date": "string|null",
"payment_terms": "string|null",
"line_items": [
{"description":"string|null","quantity":"number|null","unit_price":"number|null","amount":"number|null"}
]
}
전문가 팁: subtotal + tax와 total 차이가 0.5%를 넘으면 실패 처리해 파싱 드리프트를 조기에 잡으세요.
JSON으로 추출된 청구서 필드
반구조 텍스트에서 안정적으로 추론해 스키마 채우기/정규화를 수행하므로 취약한 정규식 없이 구현 가능해 선택.
Step 4: 원장에 기록하고 원본을 아카이브하기
Google Sheets에 “청구서 1건=행 1개”로 JSON을 기록하고, 원본 PDF는 Google Drive에 저장한 뒤 파일 URL을 시트에 남깁니다.
실전 프롬프트/코드:
// Pseudo-code (any Sheets/Drive SDK)
const row = [
data.invoice_number,
data.invoice_date,
data.vendor_name,
data.currency,
data.subtotal,
data.tax,
data.total,
data.due_date,
drive_file_url
];
// sheets.appendRow("Invoices", row)
전문가 팁: vendor_name + invoice_number + total 같은 결정적 키로 중복 기록을 막으세요.
스프레드시트 원장 행과 아카이브 링크
원장 데이터를 행 단위로 관리해 필터/피벗/감사를 커스텀 앱 없이 수행할 수 있어 선택.
원본 PDF를 안정적으로 저장하고 공유 URL을 제공해 원장 행에서 감사 증적까지 연결할 수 있어 선택.
Step 5: 승인자에게 검토 알림 보내기
Telegram으로 공급사/총액/만기일/Drive 링크를 간단히 보내 사람이 약 10초 안에 승인/반려할 수 있게 합니다.
실전 프롬프트/코드:
Message template:
New invoice ready for review
- Vendor: {vendor_name}
- Total: {currency} {total}
- Due: {due_date}
- Link: {drive_file_url}
Reply with: APPROVE or REJECT:{reason}
전문가 팁: 시트에 상태 컬럼(Pending/Approved/Rejected)을 두면 정산/대사가 결정적으로 됩니다.
청구서 요약이 포함된 검토 알림
무거운 티켓 시스템 없이도 낮은 마찰로 사람 승인을 넣을 수 있어 선택.
유사 워크플로우
다른 툴을 찾으시나요? 대체 워크플로우를 살펴보세요.
뉴스 소스를 지속적으로 AI 뉴스 영상으로 전환하고 여러 채널에 배포하는 방법입니다.GPT-4o로 캡션을 만들고, HeyGen으로 아바타 영상을 생성한 뒤, Postiz로 Instagram, Facebook, YouTube에 통합 발행합니다.
하나의 캠페인 브리프를 플랫폼별 게시물로 변환합니다. GPT-4o와 Gemini로 생성하고 Gmail 이중 승인 후 Buffer로 예약 게시, Telegram으로 상태를 공유합니다.
1인 미디어 슈퍼 팩토리는 창의적인 아이디어를 단 몇 시간 만에 4K 초실사 비디오로 변환하도록 설계된 통합 워크플로우입니다. GPT-4o, Sora, ElevenLabs를 결합하여 값비싼 장비 없이도 영화 수준의 콘텐츠를 자동 생산할 수 있게 도와줍니다.
자주 묻는 질문
청구서/영수증/명세서에 가장 적합하며, 표·다단 PDF일수록 효과가 큽니다. 보고서/계약/스캔 이미지에도 적용 가능하지만 300DPI 수준의 스캔 품질을 권장합니다.
소규모 기준으로 파싱+LLM 추출은 건당 약 $0.01-$0.05가 현실적인 범위이며 저장 비용은 거의 0에 가깝습니다. 핵심 절감은 인건비를 $10.00/건(12분, $50/시간)에서 $0.63/건(45초)로 낮추는 것입니다.
5-15페이지 청구서 묶음의 원시 OCR 텍스트는 보통 20,000-60,000 토큰이지만, 레이아웃 파싱+타깃 추출은 대개 2,000-6,000 토큰으로 70-95% 절감되어 API 비용과 응답 시간을 함께 줄입니다.
손글씨/저해상도 스캔은 정확도를 낮출 수 있습니다. 또한 공급사별 라인아이템 형식이 들쭉날쭉하면 line_items 일관성을 위해 더 엄격한 스키마와 정규화 룰북이 필요합니다.
가능합니다: PDF 업로드→파싱→추출 프롬프트 실행→JSON을 시트 행에 기록→검토 메시지 전송. 자동화는 복붙 제거와 대량 처리 일관성에 가치가 있습니다.
알림은 이메일/Slack으로, 원장은 Airtable 또는 DB 테이블로 대체할 수 있습니다. 핵심 계약은 파싱→스키마 JSON→원장 기록→원본 링크입니다.