space ocr
가이드아티클요금문서
Invoice OCR

공급처 청구서를 신뢰할 수 있는 데이터로 바꾸는 인보이스 OCR

청구서 재입력은 이제 그만. 선언한 필드로 거래처·번호·날짜·합계·품목을 읽어내고, 모든 값을 box·quad 좌표와 verified 판정, 그리고 확인 대상을 모은 data.review.flagged 와 함께 반환합니다.

받은편지함에 들어오는 청구서는 하나하나가 작은 입력 노동입니다. 누군가 PDF를 열어 거래처, 청구서 번호, 날짜, 세금 줄, 합계를 찾아 회계 시스템에 다시 입력합니다 — 품목이 필요하면 그것도 손으로 옮기죠. 느리고, 오타가 생기는 자리이며, 합계 하나만 잘못 쳐도 지급 처리가 멈춥니다.

인보이스 OCR은 원래 그 일을 대신해 줘야 합니다. 청구서를 읽어 필드를 돌려준다는 거죠. 문제는 대부분의 도구가 숫자를 건네며 그냥 믿으라고 한다는 점입니다. space-ocr는 선언한 필드로 청구서를 읽어내고, 모든 값을 페이지에서 읽어낸 영역과 함께 돌려줍니다 — 대조를 통과하지 못한 값을 모은 검토 목록도 함께요. 지급을 승인하기 전에 확인할 것은 페이지 전체가 아니라 그 몇 건입니다.

직접 확인할 수 있는 실제 청구서

아래 어느 항목이든 마우스를 올려 보세요 — 청구서 위의 박스가 그 값을 읽어낸 지점입니다. 거래처·발행일·청구 기간·지급 기한·청구 금액·합계, 그리고 각 품목은 모두 실제 파싱 결과에서 읽어온 것으로, 목업이 아닙니다.

Invoice with extracted-field bounding boxes
Verified fields
Invoice

Each value with a box carries a verified on-page location — in data.cells[path], that is box + 4-point quad + evidence.match_ratio — on a 0–1000 normalized grid (0,0 top-left → 1000,1000 bottom-right), the same shape the live API returns. Hover a field to trace it back to the pixels it came from.

세 가지 형태, 같은 계약
같은 한 장을 선언한 필드로(POST /ocr/fields), 레이아웃을 살린 마크다운으로(POST /ocr/markdown), 읽기 순서를 바로잡은 원문 텍스트로(POST /ocr/text) 받을 수 있습니다. 셋 다 응답 외형이 같아서 — data.values, path 를 키로 하는 data.cells, data.review, data.image — 검증 코드는 한 번만 작성하면 됩니다.
모든 값에 참조 경로
거래처·청구서 번호·발행일·지급 기한·각 금액은 data.cells[path] 에 들어갑니다. 축 정렬 box(0–1000 정규화 그리드의 xmin/ymin/xmax/ymax)와 기울기를 따라가는 네 점의 quad 를 가지며, 좌표의 기준이 되는 폭·높이는 data.image 가 알려 줍니다.
합계만이 아니라 품목까지
품목은 children 을 가진 array 필드로 선언해 한 행(품명·수량·단가·금액)을 기술합니다. 각 셀은 items[0].amount 같은 경로로 자기 좌표를 보존하고, 행 자체는 items[0] 의 통합 박스라 줄바꿈되거나 병합된 행도 추적됩니다.
규칙을 선언하고 예외를 받는다
고를 템플릿은 없습니다. 필드는 직접 이름 붙입니다. 청구서 번호에 required, 날짜에 type date, 금액에 type number 와 min 을 걸고 거래처에 not_near 를 붙이면, 수신처 영역에서 끌려온 이름이 near_conflict 로 드러나 조용히 통과하지 않습니다.
세금과 합계
공급가·세액 줄·총액은 평범한 number 필드입니다. data.values 는 읽어낸 표기를 그대로 두고, 스칼라 타입을 선언하면 data.normalized 에 파싱된 수치가 나란히 옵니다. 파싱되지 않으면 type_mismatch, min/max 를 벗어나면 out_of_range 가 섭니다.
깔끔한 내보내기
UTF-8 BOM CSV(Excel·한중일 안전, 품목은 하위 행으로 펼침)와 REST API의 JSON — 스프레드시트나 회계 가져오기에 바로 넣을 수 있습니다.
AP(매입) 자동화
청구서를 /upload에 비동기 작업으로 보내고, 읽기가 끝나면 HMAC 서명이 붙은 ocr.completed 웹훅을 받습니다. 새 공급처 청구서가 아무도 지켜보지 않아도 시트로 흘러 들어갑니다.

space-ocr의 인보이스 OCR 작동 방식

앱에 청구서를 끌어다 놓으면 하나의 행으로 읽힙니다 — 거래처·날짜·금액, 그리고 품목은 정렬·필터·내보내기가 되는 하위 표로요. PDF 청구서는 먼저 페이지마다 이미지로 렌더링된 뒤 읽힙니다. API를 직접 호출한다면 페이지 이미지를 보내세요(공개 API는 래스터 이미지를 받습니다 — JPEG·PNG·GIF·BMP·TIFF·WebP). 돌아오는 구조화 결과는 동일합니다.

청구서를 처음부터 기술할 필요도, 템플릿을 고를 필요도 없습니다. 회계에서 쓰는 이름을 그대로 fields 로 보내고 청구서에 맞는 검사를 붙이거나, 처음 보는 양식이면 autoFields 를 보내고 돌아온 이름을 그대로 선언으로 씁니다. 품목은 children 을 가진 array 필드 하나입니다.

청구서 한 장에서 돌아오는 것:

  • data.values — 선언한 형태 그대로의 업무 데이터.
  • data.cells[path] — 그 값의 box 와 quad, 그리고 verified·review·evidence(문자 대조 근거로 text_match·printed_text·match_ratio 를 포함).
  • data.review.flagged — 검토 목록. 항목마다 path 와 reasons 가 있고 reasons 는 랭킹 순이라 0번이 대표입니다.
  • data.normalized — 스칼라 타입을 선언한 필드의 파싱된 수치와 ISO 날짜.
  • data.image — 모든 좌표가 기준으로 삼는 폭과 높이.
인보이스 필드를 선언하고 페이지 이미지 읽기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
curl -s https://api.space-ocr.com/ocr/fields \
  -H "Authorization: Bearer $SPACE_OCR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "https://example.com/invoice-page-1.png",
    "imageType": "url",
    "fields": [
      { "name": "supplier", "type": "string", "required": true, "not_near": ["Bill To", "御中"] },
      { "name": "bill_to", "type": "string", "near": ["Bill To", "御中"] },
      { "name": "invoice_no", "type": "string", "required": true, "pattern": "^[A-Za-z0-9-]{4,}$" },
      { "name": "issue_date", "type": "date", "required": true },
      { "name": "due_date", "type": "date" },
      { "name": "subtotal", "type": "number", "min": 0 },
      { "name": "tax", "type": "number", "min": 0 },
      { "name": "total", "type": "number", "required": true, "min": 0 },
      {
        "name": "items", "type": "array",
        "children": [
          { "name": "description", "type": "string" },
          { "name": "quantity", "type": "number" },
          { "name": "unit_price", "type": "number" },
          { "name": "amount", "type": "number" }
        ]
      }
    ]
  }'

청구서를 OCR하는 방법

  1. 청구서 추가
    앱에 청구서(PDF 또는 이미지)를 끌어다 놓으면 각 페이지가 이미지로 렌더링되어 OCR 대기열에 들어갑니다. AP 자동화에서는 /upload에 보내고 읽기가 끝나면 웹훅을 받습니다.
  2. 필드 선언
    회계에서 쓰는 이름을 그대로 fields 로 보내고 청구서에 맞는 검사를 붙입니다 — 청구서 번호에 required, 날짜에 type date, 금액에 type number 와 min. 처음 보는 양식이면 autoFields 를 보내고 돌아온 이름을 선언으로 씁니다. 품목은 children 을 가진 array 필드 하나입니다.
  3. 구조화 결과 읽기
    업무 데이터는 data.values 에 있습니다. 좌표와 값별 판정은 data.cells[path](box·quad·verified·review·evidence)에 있고, 그 좌표의 기준 지면은 data.image 가 알려 줍니다.
  4. 장부에 올리기 전에 검증
    점수 임계값 대신 data.review.flagged 를 순회합니다. 항목마다 path 와 reasons 가 있으니 data.cells[path] 로 이동해 box 나 quad 를 사진 위에 강조하고 값을 고칩니다. 수정 사항은 원본 OCR 값 옆에 저장됩니다.
  5. 내보내기 또는 조회
    회계 가져오기용으로 CSV(UTF-8 BOM, 품목 펼쳐짐)를 내려받거나, 저장된 시트를 GET /view로 where·sort·select를 써서 조회합니다 — OCR 재실행도 추가 비용도 없습니다.

단순하고 예측 가능한 가격

1페이지 처리가 1크레딧 — ₩100(부가세 포함)이고, 앱에서 올리든 API로 부르든 같은 가격입니다. 모든 계정에 매월 100크레딧 무료 한도가 있고 카드 등록은 필요 없으며, 실패는 과금하지 않습니다. 정액 플랜은 월 크레딧 수·시트·저장공간을 추가합니다.

Free
₩0
  • 100 크레딧/월
  • 3 시트
  • 1 GB 저장공간
무료 — 카드 불필요
Starter
₩39,800/월
  • 500 크레딧/월
  • 15 시트
  • 10 GB 저장공간
무료로 시작
가장 인기
Pro
₩69,800/월
  • 1,100 크레딧/월
  • 시트 무제한
  • 100 GB 저장공간
무료로 시작
인보이스 OCR은 청구서에서 무엇을 뽑아내나요?
선언한 것을 뽑아냅니다. 거래처명·청구서 번호·발행일·지급 기한·청구 기간·공급가·세액·총액은 평범한 string / date / number 필드이고, 품목은 children 으로 한 행을 기술하는 array 필드 하나입니다. 모든 값이 data.cells[path] 에 들어가 읽어낸 box 와 quad 를 가집니다.
합계만이 아니라 품목도 읽을 수 있나요?
네. 품목을 type 이 'array' 인 필드로 선언하고 children 으로 한 행(품명·수량·단가·금액)을 기술합니다. 각 셀은 items[0].amount 같은 경로로 자기 좌표를 보존하고, 행 자체는 items[0] 의 통합 박스이며, 내보낼 때 하위 행으로 펼쳐집니다.
읽어낸 합계가 맞는지 어떻게 확인하나요?
점수 임계값을 조정하는 대신 검토 목록을 처리합니다. data.review.flagged 에 플래그가 선 경로가 담기고, 항목마다 text_mismatch·missing·type_mismatch·out_of_range 같은 사유가 랭킹 순으로 붙습니다. verified 는 대조가 돌고 아무것도 서지 않으면 true, 무언가 서면 false, 대조할 것이 없으면 null 입니다. data.cells[path] 를 열어 box 나 quad 를 사진 위에 겹치고 인쇄된 영역을 직접 확인하세요. 좌표는 값이 어디서 왔는지에 대한 증거일 뿐 옳다는 증명이 아닙니다 — 두 판독기가 같은 오독에 합의할 수도 있으니 업무 규칙 검산은 그대로 두십시오.
청구서를 CSV로 내보내거나 회계에 넣을 수 있나요?
네. UTF-8 BOM이 있는 CSV(Excel이 한·중·일 텍스트를 올바르게 열고 품목은 하위 행으로 펼쳐짐)를 내려받거나 REST API의 JSON을 쓰면 됩니다. 청구서를 /upload에 비동기 작업으로 보내면 읽기가 끝날 때 서명된 웹훅이 도착합니다.
PDF 청구서도 처리하나요?
웹 앱은 PDF 청구서를 직접 받아 각 페이지를 이미지로 렌더링한 뒤 OCR합니다. 공개 API는 래스터 이미지(JPEG·PNG·GIF·BMP·TIFF·WebP)를 받으므로, API를 쓸 때는 페이지 이미지를 보냅니다.
인보이스 OCR 비용은 얼마인가요?
1페이지 1크레딧 — ₩100(부가세 포함)이며, 매월 100크레딧이 무료이고 카드 등록은 필요 없습니다. 실패는 과금하지 않습니다. 정액 플랜(Starter·Pro)은 월 크레딧 수·시트·저장공간을 추가합니다 — 위 요금표를 참고하세요.

공급처 청구서를 직접 확인 가능한 데이터로

무료 플랜 — 월 100크레딧, 신용카드 불필요. 모든 값이 페이지 내 위치와 함께 돌아옵니다.

관련