영수증과 세금계산서를 위한 최고의 OCR 소프트웨어
영수증·세금계산서 OCR 소프트웨어 선택 가이드 — 검증 가능한 정확도, 명세 추출, CSV 내보내기, API·웹훅, 감사 추적, 투명한 가격까지. 실제 데모로 직접 확인하세요.
종이 서류를 다루는 모든 회사는 결국 영수증과 세금계산서를 다루게 됩니다 — 그리고 둘 다 손으로 일일이 입력하기엔 정말 고역입니다. OCR이 약속하는 건 분명합니다. 문서를 찍으면 정형 데이터가 나오고, 그걸로 끝. 문제는 대부분의 OCR 도구가 그럴듯한 수준에서 멈춘다는 겁니다. 거래처명과 합계를 던져주고는 그냥 믿으라고 합니다. 개인 지출 기록이라면 그래도 괜찮습니다. 하지만 매입채무 처리, 비용 정산, 혹은 감사 대상이 되는 업무라면 "AI가 그렇다고 했어요"는 책임질 수 있는 답이 아닙니다.
이 글은 일종의 구매 체크리스트입니다. 화려한 데모와 진짜 영수증·세금계산서용 최고의 OCR 소프트웨어를 가르는 기준 — 검증 가능한 정확도, 품목 단위 추출, 깔끔한 내보내기, 웹훅까지 갖춘 진짜 API, 감사 추적, 그리고 예측 가능한 가격 — 을 하나씩 짚어 본 뒤, space-ocr가 각 항목을 어떻게 충족하는지 스크린샷이 아닌 직접 확인 가능한 실시간 데모로 보여드립니다.
먼저 증거부터: 직접 검증할 수 있는 실제 추출 결과
기능 목록을 늘어놓기 전에, 대부분의 업체가 보여주지 않는 것부터 보여드립니다. 모든 값이 페이지에서 추출된 정확한 위치를 가리키는 추출 결과입니다. 아래 어느 항목이든 마우스를 올려 보세요 — 영수증 위의 박스가 바로 그 값을 읽어낸 지점입니다.

Each value with a box carries a verified on-page location — bbox + 4-point vertices + 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.
영수증·세금계산서 OCR에서 따져봐야 할 것
영수증과 세금계산서는 가장 어려운 "쉬운" 문서입니다. 거래처마다 레이아웃이 제각각이고, 합계는 소계와 세액 사이에 숨어 있으며, 품목은 줄바꿈되고, 휴대폰으로 찍은 사진은 기울어진 채 빛 번짐까지 더해져 도착합니다. 깔끔한 PDF 하나는 완벽하게 처리하던 도구가 다음번 구겨진 감열지 영수증에서 무너지기도 합니다. 마케팅 문구를 꿰뚫어 볼 수 있도록 아래 기준을 활용하세요.
| 핵심 기준 | 왜 중요한가 | 약한 도구 | 강한 도구 |
|---|---|---|---|
| 검증 가능한 정확도 | 추적할 수 없는 숫자는 결국 다시 입력해야 할 숫자 | 값 하나, 잘해야 신뢰도 점수만 반환 | 각 값을 페이지 내 위치와 함께 반환해 바로 확인 가능 |
| 품목 추출 | 영수증·세금계산서는 평면 필드가 아니라 표 | 합계만 잡고 행은 버림 | 반복되는 품목 행을 셀별 위치와 함께 추출 |
| 내보내기 | 데이터는 도구 밖으로 나가야 쓸모가 생김 | 복사·붙여넣기 또는 갇힌 뷰어 | CSV(Excel/한중일 안전)와 API를 통한 JSON |
| API + 웹훅 | 실제 물량은 클릭이 아니라 자동화 | UI 전용, 또는 빈약한 동기 엔드포인트 | 비동기 작업과 서명된 웹훅을 갖춘 REST API |
| 감사 추적 | 검토자는 무엇이 바뀌었는지 봐야 함 | OCR 결과를 조용히 덮어씀 | 원본 값을 사람의 수정과 나란히 보존 |
| 투명한 가격 | 예산 수립에 예상 밖 비용은 금물 | 모든 게 "문의 바람" | 공개된 이미지당 단가와 무료 플랜 |
이 글의 나머지는 각 항목을 차례로 다룹니다.
검증 가능한 정확도가 신뢰도 점수를 이긴다
신뢰도 점수는 모델이 확신한다고 느낀다는 것만 알려줍니다. total: 2,045가 실제로 영수증에 인쇄된 숫자인지는 알려주지 않습니다. space-ocr는 더 엄격한 질문에 답합니다 — 모든 값과 함께 다음을 반환하기 때문입니다.
bbox— 이미지의 픽셀 크기와 무관하게 0–1000 normalized 격자(0,0 = 좌상단, 1000,1000 = 우하단) 위에 놓인 축 정렬 사각형{ xmin, ymin, xmax, ymax }.vertices— 문서의 기울기를 따라가는 방향이 있는 박스를 이루는 순서가 정해진 네 점. 덕분에 비뚤어진 휴대폰 사진도 깔끔하게 박스가 잡힙니다.match_ratio— 해당 값의 글자 중 실제로 페이지에서 찾아낸 비율(0–1). 필드는 ≥ 0.85에서 확실히 매칭된 것으로 간주하며,1.0은 모든 글자를 찾았다는 뜻입니다.
위치가 값과 함께 따라오기 때문에, OCR을 다시 돌리지 않고도 박스를 렌더링하거나, 좌표를 인용하거나, 표시된 필드를 재확인할 수 있습니다. 이것이 OCR 감사 추적의 토대이며, 위 데모가 목업이 아닌 이유입니다.
좌표는 모델의 말만 믿고 가져온 것이 아닙니다. 언어 모델은 각 필드의 텍스트와 — 어떤 단어 토큰을 사용했는지에 대한 힌트를 — 반환하지만, 박스 자체는 절대 만들어내지 않습니다. 그다음 엔진이 그 텍스트를 비전 OCR이 실제로 페이지에서 검출한 심볼과 글자 단위로 대조하므로, 박스는 해당 글자들이 발견된 실제 픽셀 위에 놓이고, 각 값에는 얼마나 찾아냈는지를 나타내는 match_ratio가 부여됩니다. 모델의 토큰 힌트는 노이즈가 있을 수 있어(반복되는 행 사이에서 토큰을 바꿔치기도 합니다), 열·행 일관성 검사를 통해 무작정 믿는 대신 이를 검증합니다. 핵심은 AI가 틀릴 수 없다는 게 아니라, 모든 값이 영수증과 다시 대조되며 얼마나 잘 일치했는지를 점수로 알려준다는 점입니다.
합계만이 아니라 품목까지
저렴한 영수증 OCR의 가장 큰 빈틈은 표입니다. 총합계는 누구나 잡을 수 있지만, 가치는 행에 있습니다 — 각 상품, 수량, 단가, 할인. space-ocr는 이를 반복 행으로 추출하며, 모든 셀이 자체 위치를 보존하므로 줄바꿈되거나 병합된 품목도 여전히 추적 가능합니다.
type: "array" 필드로 요청하고, 그 children이 한 행의 구조를 정의합니다. 행 모델을 더 깊이 다룬 내용은 세금계산서에서 품목 추출하기를 참고하세요.
{
"fields": [
{ "name": "vendor", "type": "string" },
{ "name": "invoice_date", "type": "string" },
{ "name": "total", "type": "string" },
{
"name": "line_items",
"type": "array",
"children": [
{ "name": "description", "type": "string" },
{ "name": "quantity", "type": "number" },
{ "name": "unit_price", "type": "number" }
]
}
]
}내장 템플릿: 스키마 작성 생략
흔한 경우라면 필드 명세를 직접 손으로 작성할 필요가 없습니다. space-ocr는 templateId 하나로 적용하는 사전 정의 템플릿을 제공합니다 — receipt와 invoice는 물론, 명함, 견적서, 발주서, 납품서, 그리고 여러 신분증 문서까지 포함됩니다. 템플릿이 필드 세트와 프롬프트를 대신 제공해 주며, 직접 fields를 함께 넘기면 그쪽이 우선합니다.
전체 호출은 단 한 번의 HTTP 요청입니다 — SDK도, PDF 전처리도 필요 없습니다(엔진은 래스터 이미지를 받습니다: JPEG, PNG, GIF, BMP, TIFF, WebP).
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.jpg",
"imageType": "url",
"templateId": "invoice"
}'내보내기와 API: 데이터가 흘러가는 곳
데이터가 갇혀 있으면 추출은 무의미합니다. space-ocr는 두 개의 깔끔한 출구를 제공합니다.
- CSV — 시트는 UTF-8 BOM과 함께 내보내지므로 Excel이 일본어, 한국어, 중국어 텍스트를 올바르게 엽니다. 배열(품목) 행은 하위 행으로 펼쳐지며, 수동 수정 사항은 출력에서 OCR 값을 덮어씁니다.
- REST를 통한 JSON — 단일 문서는
POST /ocr/fields, 이미지를 시트에 바로 밀어 넣으려면POST /upload, 저장된 시트를 OCR을 다시 돌리거나 재과금 없이 서버 측에서 조회하려면GET /view(where,sort,select,limit).
대량 자동화를 위해 /upload는 기본적으로 비동기입니다. 파일마다 작업(job)을 반환하고 완료 시 웹훅으로 알려줍니다 — 스페이스당 하나의 서명된(HMAC-SHA256) 엔드포인트로, ocr.completed, ocr.failed 같은 이벤트를 받습니다. 이것이 클릭하는 도구와 스스로 돌아가는 파이프라인의 차이입니다. 전체 명세는 세금계산서 데이터 추출 API 가이드와 API 문서에 있습니다.
감사 추적: 기계가 읽은 것 vs. 사람이 바꾼 것
최고의 영수증·세금계산서 OCR은 자신의 출력만 기록하지 않습니다 — 수정 내역까지 기록합니다. space-ocr에서 셀을 편집하면, 입력한 값이 원본 OCR 값과 별도로 저장되고, 원본(Original) 툴팁이 엔진이 처음 읽은 내용을 언제든 보여줍니다. 검토자는 기계 값과 사람의 수정 값을 나란히 볼 수 있는데, 이것이 바로 감사가 요구하는 바입니다.
투명하고 예측 가능한 가격
검증 가능한 정확도와 정직한 가격은 대개 같은 곳에서 나옵니다. space-ocr는 이미지당 ₩100입니다. 신용카드 없이 월 100회 스캔의 무료 플랜이 있고, 월 ₩49,800의 Pro 플랜에는 1,100회 스캔, 팀 공유, 100 GB 저장 공간이 포함됩니다. 더 큰 물량은 Business 플랜에서 문의로 처리합니다. 필드당 과금도, 페이지당 추가 요금도 없으며, 저장된 시트에 대한 조회(GET /view)는 무료입니다.
영수증 또는 세금계산서 추출 방법
- 이미지 보내기영수증이나 세금계산서를 imageType 'url' 또는 'base64'로 /ocr/fields에 POST 합니다. 엔진은 래스터 이미지(JPEG, PNG, GIF, BMP, TIFF, WebP)를 받습니다.
- 템플릿 또는 필드 적용하기내장 스키마를 쓰려면 templateId 'receipt' 또는 'invoice'를 넘기거나, 직접 fields를 제공합니다 — 품목을 위한 children이 있는 array 필드를 포함할 수 있습니다.
- 정형 결과 읽기각 값은 bbox, vertices, match_ratio, bbox_source와 함께 반환되며, 페이지 내 모든 필드 위치를 담은 field_bboxes 맵도 함께 제공됩니다.
- 검증하고 수정하기셀을 클릭하면 그 값을 읽어낸 정확한 영역이 강조됩니다. match_ratio가 0.85 미만이면 한 번 더 살펴볼 값으로 표시됩니다. 수정 사항은 원본 값과 나란히 저장됩니다.
- 내보내거나 조회하기CSV(UTF-8 BOM, 품목 펼쳐짐)를 다운로드하거나, where, sort, select를 사용해 GET /view로 저장된 시트를 조회합니다 — OCR 재실행도, 추가 비용도 없습니다.