Amazon Textract 대안을 찾고 계신가요?
언제 Amazon Textract 대안을 골라야 하는지 공정하고 사실 검증된 시각으로 짚어봅니다 — 값마다 붙는 출처 좌표, 무엇을 확인할지 알려주는 검토 목록, 한중일(일본어/한국어/중국어) 지원, 조회 가능한 시트, 균일 가격, 그리고 AWS 설정 불필요까지.
Amazon Textract는 뛰어나고 성숙한 OCR 서비스로, 영어 문서를 대량으로 처리하는 AWS 네이티브 파이프라인이라면 무난한 기본 선택지입니다. 하지만 "뛰어나다"는 것과 "당신의 업무에 딱 맞는다"는 것은 별개이고, 다음과 같은 현실적인 제약들 때문에 사람들은 Amazon Textract 대안을 찾게 됩니다.
- 한중일(CJK)은 지원 언어 목록에 없습니다. Textract의 인쇄 텍스트·양식·표 기능이 다루는 건 라틴 문자권 언어(영어, 프랑스어, 독일어, 이탈리아어, 포르투갈어, 스페인어)이고, 손글씨, 영수증·청구서(AnalyzeExpense), 신분증(AnalyzeID), Queries는 영어 전용으로 명시돼 있습니다. 일본어, 한국어, 중국어는 그 목록에 없습니다.
- AWS의 무게. 쓰려면 AWS 계정, IAM, SDK, 지원 리전, 그리고 대개 S3까지 갖춰야 합니다 — 그저 이미지 한 장 보내고 필드만 받고 싶은 입장에선 적지 않은 진입 비용이죠.
- 기능마다 쌓이는 페이지당 요금. 페이지 단위로 매기는데, 어떤 기능을 부르느냐(일반 텍스트, 양식, 표, queries, expense)에 따라 단가가 달라지고, 여러 기능을 같이 쓰면 비용이 그만큼 불어납니다.
- 값 단위 검수는 별도 서비스입니다. Textract는 신뢰도 점수를 돌려주고, 사람이 들여다보는 검수는 Amazon Augmented AI(A2I)로 직접 붙여야 합니다.
이 글은 공정하게 비교해 봅니다 — Textract가 강한 대목은 어디이고, space-ocr 같은 대안이 어디에 맞는지.
Textract 대안을 따져볼 때 비교할 점
두 도구 모두 문서를 읽어 좌표가 붙은 정형 데이터를 돌려줍니다. 갈리는 부분은 값을 어떻게 검증하느냐, 어떤 언어를 다루느냐, 데이터가 도구 밖으로 어떻게 나오느냐, 그리고 시작하는 데 무엇이 드느냐입니다. 아래 표에 양쪽의 검증된 사실을 정리해 두었으니, 본인 업무에 맞춰 체크리스트로 써 보세요.
| 기능 | Amazon Textract | space-ocr |
|---|---|---|
| 바운딩 박스 | 있음 — 블록마다 0–1로 정규화된 BoundingBox와 Polygon | 있음 — 값마다 box({ xmin, ymin, xmax, ymax })와 네 점짜리 quad, 둘 다 0–1000 정규화 |
| 값 단위 검증 신호 | 블록마다 인식 신뢰도(%) | 판정인 verified, 걸린 사유를 순위대로 담은 review.reasons, 근거인 evidence(text_match·source·match_ratio) |
| 값 단위 검수 UI 내장 | Textract 자체에는 없음. 사람 검수는 별도 서비스(Amazon A2I) | 앱에 내장 — 셀을 클릭하면 원본에서 해당 영역이 정확히 밝게 표시됨 |
| 영수증 / 청구서 필드 | AnalyzeExpense(별도 API), 영어 전용 | 원하는 항목을 fields로 직접 선언하거나, autoFields로 스키마를 제안받기 — 엔진이 읽는 언어라면 무엇이든 |
| 품목(라인 아이템) | AnalyzeExpense 품목(ITEM / QUANTITY / PRICE) | children을 가진 array 필드, 셀마다 자기 경로(items[0].price)로 조회 |
| 일본어 / 한국어 / 중국어 | 목록에 없음(라틴 문자 6개 언어. Expense/ID/손글씨는 영어 전용) | 엔진 하나가 일본어, 한국어, 중국어, 영어 등을 자동 감지 |
| 조회 가능한 저장소 | 결과를 직접 저장하고 직접 조회 | 저장된 시트를 GET /view(where, sort, select)로 서버 측에서 조회 — OCR 재실행 없음, 추가 비용 없음 |
| CSV 내보내기 | JSON에서 직접 만들어야 함 | 클릭 한 번 — UTF-8 BOM, 품목 펼쳐짐 |
| 가격 모델 | 페이지당, 기능별 과금. 기능을 합치면 비용이 쌓임. 게다가 AWS 계정 위에서 | 균일 이미지당 ₩100. 무료 플랜 월 100크레딧, 카드 불필요. Pro 월 ₩69,800 |
| 설정 | AWS 계정 + IAM + SDK, 리전 서비스, 대개 S3 | Bearer 키로 HTTPS 한 번 호출. 같은 API를 AI 에이전트용 MCP 엔드포인트로도 열어 둡니다 |
"검증 가능"이란: 좌표를 모델의 말만 믿고 가져오지 않는다는 뜻입니다. 언어 모델은 각 필드의 텍스트와, 어떤 단어 토큰을 썼는지에 대한 힌트는 내놓지만, 박스 자체는 결코 만들어내지 않습니다. 그러면 엔진이 그 텍스트를 비전 OCR이 페이지에서 실제로 검출한 글자들과 글자 단위로 맞춰 봅니다. 그래서 박스는 그 글자들이 발견된 실제 픽셀 위에 얹힙니다. 대조가 돈 값에는 얼마나 맞춰졌는지를 나타내는 evidence.match_ratio가 붙고(0.85 이상이면 확실히 매칭된 것으로 봅니다), 대조할 수 없었던 경우에는 그 키 자체가 없습니다. 모델이 주는 토큰 힌트에는 잡음이 섞일 수 있어 — 같은 행이 반복되면 토큰을 서로 헷갈리기도 합니다 — 그래서 무작정 믿지 않고 열·행 일관성 검사로 따로 확인합니다. 요점은 AI가 절대 안 틀린다는 게 아닙니다. 두 장치가 같은 오독에 합의할 수도 있습니다. 요점은 조용히 틀린 값이 드러난다는 데 있습니다 — 셀의 review 사유로, 그리고 data.review.flagged의 한 줄로.
Textract가 더 나은 선택인 경우
공정하게 비교하려면 기존 강자가 앞서는 대목도 짚어야겠죠. 다음에 해당한다면 Textract를 고르세요.
- 이미 AWS에 깊이 자리 잡고 있어서, 이미 굴리고 있는 IAM과 SNS와 함께 S3 → Lambda → Textract로 바로 이어 붙일 OCR이 필요할 때.
- 문서가 영어 / 라틴 문자이고, 아주 큰 규모로 양식, 표, queries를 처리해야 할 때.
- 자체 문서 유형으로 학습시킨 커스텀 어댑터나, AWS 네이티브 수준의 컴플라이언스·데이터 레지던시 보장이 필요할 때.
여기에 해당한다면 Textract가 잘 맞고, 대안으로 갈아탄들 얻을 게 별로 없습니다.
오히려 space-ocr가 맞는 경우
Textract 대안은 다음 중 하나라도 중요하다면 제값을 합니다.
- 일본어, 한국어, 중국어 문서를 다룰 때. space-ocr는 한중일과 라틴 문자를 엔진 하나에서 자동 언어 감지로 처리합니다 — 따로 지정할 언어 파라미터가 없습니다.
- 그냥 믿는 게 아니라 검증하고 싶을 때. 업무 데이터는
data.values에 담기고, 같은 경로로data.cells를 조회하면box·quad·판정인verified·사유인review·근거인evidence가 함께 나옵니다. 확인할 목록은data.review.flagged하나이고, 앱에서 셀을 클릭하면 그 값을 읽어낸 자리가 정확히 표시됩니다. - 저장소를 직접 마련하고 싶지 않을 때. 결과는 서버 측에서 조회(
GET /view)하고 클릭 한 번으로 CSV로 내보낼 수 있는 시트에 쌓입니다 — 데이터베이스도, AWS 계정도 필요 없습니다. - 요금이 예측 가능했으면 할 때. 이미지당 균일 ₩100, 신용카드 없이 월 100크레딧의 무료 플랜, 그리고 월 ₩69,800의 Pro 플랜 — 기능별·페이지별로 요금이 쌓일 일이 없습니다.
- AI 에이전트로 개발할 때. 같은 API를
https://mcp.space-ocr.com/mcpMCP 엔드포인트로 열어 두었습니다 —claude mcp add --transport http한 줄, 또는mcp.json에 URL과 Bearer 헤더 한 벌이면 됩니다. 설치할 것은 없습니다.
호출은 통째로 HTTP 요청 한 번이면 됩니다 — SDK도 필요 없습니다. 엔진은 래스터 이미지를 읽으므로 PDF는 페이지를 이미지로 변환해 보냅니다(웹 앱에서는 그 변환을 알아서 처리합니다).
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",
"fields": [
{ "name": "invoice_no", "type": "string", "required": true },
{ "name": "date", "type": "date" },
{ "name": "items", "type": "array",
"children": [
{ "name": "name", "type": "string" },
{ "name": "qty", "type": "string" },
{ "name": "price", "type": "string" }
] },
{ "name": "total", "type": "number", "required": true }
]
}'값은 보낸 스키마 그대로의 모양으로 data.values에 돌아옵니다. 그 모양의 각 경로 — total, items[0].price — 가 그대로 data.cells의 키가 되고, 거기에 box(0–1000 격자 위의 { xmin, ymin, xmax, ymax })와 비스듬히 찍힌 사진을 따라 기우는 네 점짜리 quad, 그리고 verified·review·evidence가 함께 놓입니다. 좌표의 기준이 되는 지면 크기는 data.image가 알려 줍니다. 확인할 것은 data.review.flagged 한 곳에 모이고, 항목마다 path와 reasons가 짝을 이룹니다. date와 total에 스칼라 타입을 선언했으므로 해석된 값이 성긴 data.normalized 트리로 값 옆에 함께 옵니다. 좌표 모델 전체는 바운딩 박스를 제공하는 OCR API에서, 비동기·웹훅 기반 쪽은 청구서 데이터 추출 API 가이드에서 확인하세요.
언어: 가장 분명한 갈림길
문서가 일본어 영수증, 한국어 청구서, 중국어 양식이라면 대개 이 점이 결정타가 됩니다. Textract의 인쇄 텍스트·양식·표 기능은 라틴 문자 6개 언어를 지원하고, 손글씨, AnalyzeExpense, AnalyzeID, Queries 기능은 영어 전용입니다 — 일본어, 한국어, 중국어는 지원 목록에 없습니다. 반면 space-ocr는 여러 문자 체계(전각·반각 문자, 하이픈 변형, 한중일 띄어쓰기, 세로쓰기 한자, 뒤섞인 문자)를 엔진 하나에서 정규화하고, 따로 힌트를 넘기지 않아도 언어를 알아서 감지합니다.
가격: 기능별 페이지 과금 vs. 균일한 이미지당 단가
Textract는 기능에 따라 단가가 달라지는 페이지당 사용량 기반 요금을 씁니다 — 일반 텍스트 검출은 양식, 표, queries, AnalyzeExpense와 과금 방식이 다르고, 한 페이지에서 여러 기능을 부르면 비용이 쌓이며 — 이 모든 게 AWS 계정 위에 얹힙니다. 반면 space-ocr는 필드를 몇 개 뽑든 균일 이미지당 ₩100이고, 신용카드 없이 월 100크레딧을 주는 무료 플랜과 1,100크레딧에 시트 무제한, 100 GB 저장 공간이 딸린 월 ₩69,800의 Pro가 있습니다. 추출에 실패하면 과금되지 않고, 저장된 시트를 조회(GET /view)하는 것도 무료입니다.
space-ocr를 Textract 대안으로 써보는 방법
- 키 받기 — AWS 계정 불필요무료 플랜(신용카드 없이 월 100크레딧)에 가입하고 spocr_ API 키를 받으세요. 설정할 IAM도, 리전도, S3도 없습니다.
- 이미지 보내기문서를 imageType 'url' 또는 'base64'로 /ocr/fields에 POST 하세요. 엔진은 래스터 이미지를 읽으므로 PDF는 페이지를 이미지로 변환해 보내시면 되고, 언어는 알아서 감지합니다.
- 필드를 선언하기원하는 항목을 fields에 나열하세요 — 각각 name과 type을 주고, 품목에는 children이 달린 array 필드를 씁니다. 직접 쓰기 번거로우면 autoFields를 true로 두어 모델이 문서에서 스키마를 제안하게 할 수 있습니다.
- 값마다 검증하기경로마다 data.cells[path]를 읽으세요 — 읽어낸 영역은 box와 quad, 판정은 verified, 사유는 review, 근거는 evidence입니다. 검토 목록은 점수 임계값이 아니라 data.review.flagged에서 만드세요. 앱에서 셀을 클릭하면 그 값을 읽어낸 자리가 정확히 표시됩니다.
- 조회하거나 내보내기 — 따로 만들 저장소 없음/upload로 이미지를 시트에 넣고, GET /view(where, sort, select)로 서버 측에서 조회하거나, 품목이 펼쳐진 CSV를 내려받으세요 — 데이터베이스도, OCR 재실행 비용도 없습니다.