---
title: "Template OCR"
slug: "clova-template-ocr-api"
updated: 2026-04-23T08:55:36Z
published: 2026-04-23T09:02:17Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Template OCR

Classic/VPC 환경에서 이용 가능합니다.

네이버 클라우드 플랫폼 콘솔에서 이미지의 판독 영역을 직접 지정한 템플릿(Template)을 기반으로 텍스트를 인식하고 추출합니다.

## 요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

| 메서드 | URI |
| --- | --- |
| POST | /infer |

### 요청 헤더

CLOVA OCR API에서 공통으로 사용하는 헤더에 대한 정보는 [CLOVA OCR 요청 헤더](/docs/ai-application-service-ocr#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오.

### 요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

#### `Content-Type: application/json`인 경우

요청 헤더 `Content-Type`이 `application/json`인 경우의 요청 바디에 대한 설명은 다음과 같습니다.

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `version` | String | Required | 버전 정보 - `V1` \| `V2` (권장) - `V1`: V1 엔진 호출 - `V2`: V2 엔진 호출 |
| `requestId` | String | Required | 임의의 API 호출 UUID |
| `timestamp` | Integer | Required | 임의의 API 호출 시각(밀리초) - Unix Timestamp 형식 |
| `lang` | String | Optional | OCR 인식 요청 언어 정보 - `ko` \| `ja` \| `zh-TW` - `ko`: 한국어 - `ja`: 일본어 - `zh-TW`: 중국어(번체) - 미입력 시 도메인의 언어 설정값으로 자동 설정 - 콤마(,)를 통해 여러 언어 동시 호출 가능 - <예시> `"ko, ja, zh-TW"` |
| `images` | Array | Required | images 세부 정보: [images](/docs/clova-template-ocr-api#images1) - JSON Array로 작성 - 호출당 1개의 이미지 Array 작성 가능 - 이미지 크기: 최대 50 MB |

#### `Content-Type: multipart/form-data`인 경우

요청 헤더 `Content-Type`이 `multipart/form-data`인 경우의 요청 바디에 대한 설명은 다음과 같습니다.

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `file` | File | Required | OCR 인식 이미지 파일 |
| `message` | Object | Required | 요청 데이터 정보 |
| `message.version` | String | Required | 버전 정보 - `V1` \| `V2` (권장값) - `V1`: V1 엔진 호출 - `V2`: V2 엔진 호출 |
| `message.requestId` | String | Required | 임의의 API 호출 UUID |
| `message.timestamp` | Integer | Required | 임의의 API 호출 시각(밀리초) - Unix Timestamp 형식 |
| `message.lang` | String | Optional | OCR 인식 요청 언어 정보 - `ko` \| `ja` \| `zh-TW` - `ko`: 한국어 - `ja`: 일본어 - `zh-TW`: 중국어(번체) - 미입력 시 도메인의 언어 설정값으로 자동 설정 - 콤마(,)를 통해 여러 언어 동시 호출 가능 - <예시> `"ko, ja, zh-TW"` |
| `message.images` | Array | Required | images 세부 정보: [images](/docs/clova-template-ocr-api#images1) - JSON Array로 작성 - 호출당 1개의 이미지 Array 작성 가능 - 이미지 크기: 최대 50 MB |

#### `images`

`images`에 대한 설명은 다음과 같습니다.

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `format` | String | Required | 이미지 형식 - `jpg` \| `jpeg` \| `png` \| `pdf` \| `tif` \| `tiff` - `pdf`: 최대 5페이지 인식 가능 |
| `name` | String | Required | 이미지 이름 - 이미지 식별 및 응답 결과 확인 시 사용 |
| `url` | String | Conditional | 이미지 URL 주소 - 이미지를 불러올 수 있는 공개된 URL - `Content-Type: application/json`일 때 입력 가능 - `images.url` 또는 `images.data` 중 하나 필수 입력 - 둘 다 입력 시 `images.data` 우선 |
| `data` | String | Conditional | Base64 인코딩된 이미지 데이터 - `Content-Type: application/json`일 때 입력 가능 - `images.url` 또는 `images.data` 중 하나 필수 입력 - 둘 다 입력 시 `images.data` 우선 |
| `templateIds` | Integer | Optional | 템플릿 아이디 - 미입력 시 배포된 모든 서비스 템플릿으로 자동 분류 |

### 요청 예시

요청 예시는 다음과 같습니다.

#### `Content-Type: application/json`인 경우

요청 헤더 `Content-Type`이 `application/json`인 경우의 요청 예시는 다음과 같습니다.

```
curl --location --request POST 'https://*****.apigw.ntruss.com/custom/v1/33661/f5d739754b0ed5bdaa51365b7d**********a5bbdd069e0db430d5f5adb490b/infer' \
--header 'Content-Type: application/json' \
--header 'X-OCR-SECRET: {앱 등록 시 발급받은 Secret Key}' \
--data '{
  "version": "V2",
  "requestId": "string",
  "timestamp": 0,
  "lang":"ko",
  "images": [
    {
      "format": "pdf",
      "name": "test 1",
      "url": "{url}",
      "templateIds":[31677]
    }
}'
```

#### `Content-Type: multipart/form-data`인 경우

요청 헤더 `Content-Type`이 `multipart/form-data`인 경우의 요청 예시는 다음과 같습니다.

```
curl --location --request POST 'https://*****.apigw.ntruss.com/custom/v1/33661/f5d739754b0ed5bdaa51365b7d**********bbdd069e0db430d5f5adb490b/infer' \
--header 'Content-Type: multipart/form-data' \
--header 'X-OCR-SECRET: {앱 등록 시 발급받은 Secret Key}' \
--form '{file}.jpg"' \
--form 'message="{\"version\": \"V1\", \"requestId\": \"1234\", \"timestamp\": 1724832750462, \"images\": [{\"format\": \"jpg\", \"name\": \"hello\"}]}"'
```

## 응답

응답 형식을 설명합니다.

참고

- `V1` 버전으로 요청 시에는 응답 결과 값의  `bounding`에 좌표 정보가 표시됩니다.
- `V1` 버전으로 요청 시에는 응답 결과 값에 `convertedImageInfo`, `valueType`, `type`, `subFields` 정보가 표시되지 않습니다.

### 응답 바디

응답 바디에 대한 설명은 다음과 같습니다.

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `version` | String | - | 버전 정보 - `V1` \| `V2` - `V1`: V1 엔진 호출 - `V2`: V2 엔진 호출 |
| `requestId` | String | - | API 호출 UUID |
| `timestamp` | Integer | - | API 호출 시각(밀리초) - Unix Timestamp 형식 |
| `images` | Array | - | images 세부 정보: [images](/docs/clova-template-ocr-api#images2) |

#### `images`

`images`에 대한 설명은 다음과 같습니다.

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `uid` | String | - | 이미지 UID - API 유효성 검사 및 요청 추적 시 사용 |
| `name` | String | - | 이미지 이름 - 이미지 식별 및 응답 결과 확인 시 사용 |
| `inferResult` | String | - | 이미지 추론 결과 - `SUCCESS` \| `FAILURE` \| `ERROR` - `SUCCESS`: 인식 성공 - `FAILURE`: 인식 실패 - `ERROR`: 인식 처리 예외 |
| `message` | String | - | 결과 메시지 |
| `matchedTemplate` | Object | - | 템플릿 정보 - 인식에 실패하거나 일치하는 템플릿을 찾을 수 없는 경우 해당 필드는 표시되지 않음 |
| `matchedTemplate.id` | Integer | - | 템플릿 아이디 |
| `matchedTemplate.name` | String | - | 템플릿 이름 |
| `validationResult` | Object | - | 유효성 검사 결과 정보 |
| `validationResult.result` | String | - | 유효성 검사 결과 코드 - `NO_REQUESTED` \| `UNCHECKED` \| `ERROR` \| `VALID` \| `INVALID` - `NO_REQUESTED`: 검증 작업 미요청(유효성 검사 실패) - `UNCHECKED`: 검증 여부 확인 불가 - `ERROR`: 검증 시 에러 발생(유효성 검사 실패) - `VALID`: 검증 결과 유효(유효성 검사 성공) - `INVALID`: 검증 통과 실패 |
| `validationResult.message` | String | - | 유효성 검사 결과 세부 메시지 - 항상 응답되는 값은 아님 |
| `convertedImageInfo` | Object | - | 변환 이미지 정보 - `format`이 `pdf` 또는 `tiff`일 때 - 좌표 값은 호출 이미지 파일을 기준으로 설정 |
| `convertedImageInfo.width` | Integer | - | 변환 이미지 가로 길이 |
| `convertedImageInfo.height` | Integer | - | 변환 이미지 세로 길이 |
| `convertedImageInfo.pageIndex` | Integer | - | 변환 이미지 페이지 인덱스 |
| `convertedImageInfo.longImage` | Boolean | - | 변환 이미지 길이 Long 여부 - `true` \| `false` - `true`: 긴(Long) 이미지 - `false`: 긴(Long) 이미지가 아님 |
| `combineResult` | Object | - | 이미지 인식 결과 결합 정보 |
| `combineResult.name` | String | - | 이미지 결합 필드 이름 |
| `combineResult.text` | String | - | 각 이미지 필드별 출력값 및 고정 텍스트 |
| `fields` | Array | - | Fields 세부 정보: [fields](/docs/clova-template-ocr-api#fields) |
| `title` | Object | - | 이미지 타이틀 세부 정보 |
| `title.name` | String | - | 템플릿 대표 샘플 필드 이름 - 이미지 식별 및 응답 결과 확인 시 사용 |
| `title.boundingPoly` | Object | - | Bounding Poly 정보 - `version`이 `V2`일 경우에만 제공 |
| `title.boundingPoly.vertices` | Array | - | Bounding Poly Vertices 세부 정보: [vertices](/docs/clova-template-ocr-api#boundingpolyvertices) |
| `title.inferText` | String | - | 인식된 텍스트 - `type`이 `CHECKBOX`일 경우 설정에서 지정한 응답값으로 대체 |
| `title.inferConfidence` | Float | - | 인식된 텍스트의 신뢰도 - 0~1 - 신뢰도 값이 클수록 텍스트의 정확도가 높음 |
| `title.subFields` | Array | - | subFields 세부 정보: [subFields](/docs/clova-template-ocr-api#subFields) |

#### `fields`

`fields`에 대한 설명은 다음과 같습니다.

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `name` | String | - | 템플릿 필드 이름 - API 호출 시에만 동작 - 이미지 식별 및 응답 결과 확인 시 사용 |
| `valueType` | String | - | 입력값 유형 - `ALL` \| `NUMERIC` - `ALL`: 텍스트와 숫자 - `NUMERIC`: 숫자 |
| `boundingPoly` | Object | - | Bounding Poly 정보 - `version`이 `V2`일 경우에만 제공 |
| `boundingPoly.vertices` | Array | - | Bounding Poly Vertices 세부 정보: [vertices](/docs/clova-template-ocr-api#boundingpolyvertices) |
| `inferText` | String | - | 인식된 텍스트 - `type`이 `CHECKBOX`일 경우 설정에서 지정한 응답값으로 대체 |
| `inferConfidence` | Float | - | 인식된 텍스트의 신뢰도 - 0~1 - 신뢰도 값이 클수록 텍스트의 정확도가 높음 |
| `type` | String | - | 인식된 이미지 유형 - `NORMAL` \| `MULTI_BOX` \| `CHECKBOX` - `NORMAL`: 일반 - `MULTI_BOX`: 멀티박스 - `CHECKBOX`: 체크박스 |
| `subFields` | Array | - | subFields 세부 정보: [subFields](/docs/clova-template-ocr-api#subFields) |
| `checked` | Boolean | - | 체크박스 선택 여부 - `true` \| `false` - `true`: 선택되어 있음 - `false`: 선택되어 있지 않음 |

#### `subFields`

`subFields`에 대한 설명은 다음과 같습니다.

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `boundingPoly` | Object | - | Bounding Poly 정보 - `version`이 `V2`일 경우에만 제공 |
| `boundingPoly.vertices` | Array | - | Bounding Poly Vertices 세부 정보: [vertices](/docs/clova-template-ocr-api#boundingpolyvertices) |
| `inferText` | String | - | 인식된 텍스트 - `type`이 `CHECKBOX`일 경우 설정에서 지정한 응답값으로 대체 |
| `inferConfidence` | Float | - | 인식된 텍스트의 신뢰도 - 0~1 - 신뢰도 값이 클수록 텍스트의 정확도가 높음 |
| `lineBreak` | Boolean | - | 인식된 텍스트의 마지막 줄 여부 표시 - `true` \| `false` - `true`: 마지막 텍스트 - `false`: 마지막 텍스트가 아님 |

#### `vertices`

`vertices`에 대한 설명은 다음과 같습니다.

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `x` | Float | - | Bounding Poly X축 좌표 값 |
| `y` | Float | - | Bounding Poly Y축 좌표 값 |

#### `bounding`

`bounding`에 대한 설명은 다음과 같습니다.

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `top` | Float | - | Bounding y축 좌표 값 |
| `left` | Float | - | Bounding x축 좌표 값 |
| `width` | Float | - | Bounding Poly 가로 |
| `height` | Float | - | Bounding Poly 세로 |

### 응답 상태 코드

CLOVA OCR API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [CLOVA OCR 공통 응답 상태 코드](/docs/ai-application-service-ocr#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오.

### 응답 예시

응답 예시는 다음과 같습니다.

#### 성공

호출이 성공한 경우의 응답 예시는 다음과 같습니다.

```
{
    "version": "V2",
    "requestId": "string",
    "timestamp": 1724831491715,
    "images": [
        {
            "uid": "{uid}",
            "name": "test 1",
            "inferResult": "SUCCESS",
            "message": "SUCCESS",
            "matchedTemplate": {
                "id": 31677,
                "name": "사업자등록증"
            },
            "validationResult": {
                "result": "NO_REQUESTED"
            },
            "convertedImageInfo": {
                "width": 1190,
                "height": 1682,
                "pageIndex": 0,
                "longImage": false
            },
            "fields": [
                {
                    "name": "등록번호",
                    "valueType": "ALL",
                    "boundingPoly": {
                        "vertices": [
                            {
                                "x": 551.0,
                                "y": 310.0
                            },
                            {
                                "x": 775.0,
                                "y": 310.0
                            },
                            {
                                "x": 775.0,
                                "y": 350.0
                            },
                            {
                                "x": 551.0,
                                "y": 350.0
                            }
                        ]
                    },
                    "inferText": "***-**-*****",
                    "inferConfidence": 1.0,
                    "type": "NORMAL",
                    "subFields": [
                        {
                            "boundingPoly": {
                                "vertices": [
                                    {
                                        "x": 551.0,
                                        "y": 310.0
                                    },
                                    {
                                        "x": 775.0,
                                        "y": 310.0
                                    },
                                    {
                                        "x": 775.0,
                                        "y": 350.0
                                    },
                                    {
                                        "x": 551.0,
                                        "y": 350.0
                                    }
                                ]
                            },
                            "inferText": "***-**-*****",
                            "inferConfidence": 1.0,
                            "lineBreak": true
                        }
                    ]
                },
                {
                    "name": "법인명_단체명",
                    "valueType": "ALL",
                    "boundingPoly": {
                        "vertices": [
                            {
                                "x": 317.0,
                                "y": 369.0
                            },
                            {
                                "x": 511.0,
                                "y": 369.0
                            },
                            {
                                "x": 511.0,
                                "y": 402.0
                            },
                            {
                                "x": 317.0,
                                "y": 402.0
                            }
                        ]
                    },
                    "inferText": "***** (주)",
                    "inferConfidence": 0.9999,
                    "type": "NORMAL",
                    "subFields": [
                        {
                            "boundingPoly": {
                                "vertices": [
                                    {
                                        "x": 317.0,
                                        "y": 369.0
                                    },
                                    {
                                        "x": 451.0,
                                        "y": 369.0
                                    },
                                    {
                                        "x": 451.0,
                                        "y": 402.0
                                    },
                                    {
                                        "x": 317.0,
                                        "y": 402.0
                                    }
                                ]
                            },
                            "inferText": "*****",
                            "inferConfidence": 0.9998,
                            "lineBreak": false
                        },
                        {
                            "boundingPoly": {
                                "vertices": [
                                    {
                                        "x": 459.0,
                                        "y": 371.0
                                    },
                                    {
                                        "x": 511.0,
                                        "y": 371.0
                                    },
                                    {
                                        "x": 511.0,
                                        "y": 399.0
                                    },
                                    {
                                        "x": 459.0,
                                        "y": 399.0
                                    }
                                ]
                            },
                            "inferText": "(주)",
                            "inferConfidence": 1.0,
                            "lineBreak": true
                        }
                    ]
                },
                {
                    "name": "개업연월일",
                    "valueType": "ALL",
                    "boundingPoly": {
                        "vertices": [
                            {
                                "x": 316.0,
                                "y": 493.0
                            },
                            {
                                "x": 564.0,
                                "y": 495.0
                            },
                            {
                                "x": 564.0,
                                "y": 526.0
                            },
                            {
                                "x": 314.0,
                                "y": 526.0
                            }
                        ]
                    },
                    "inferText": "1975 년 06 월 01 일",
                    "inferConfidence": 0.99796,
                    "type": "NORMAL",
                    "subFields": [
                        {
                            "boundingPoly": {
                                "vertices": [
                                    {
                                        "x": 316.0,
                                        "y": 493.0
                                    },
                                    {
                                        "x": 374.0,
                                        "y": 496.0
                                    },
                                    {
                                        "x": 373.0,
                                        "y": 525.0
                                    },
                                    {
                                        "x": 314.0,
                                        "y": 522.0
                                    }
                                ]
                            },
                            "inferText": "1975",
                            "inferConfidence": 1.0,
                            "lineBreak": false
                        },
                        {
                            "boundingPoly": {
                                "vertices": [
                                    {
                                        "x": 380.0,
                                        "y": 495.0
                                    },
                                    {
                                        "x": 410.0,
                                        "y": 495.0
                                    },
                                    {
                                        "x": 410.0,
                                        "y": 526.0
                                    },
                                    {
                                        "x": 380.0,
                                        "y": 526.0
                                    }
                                ]
                            },
                            "inferText": "년",
                            "inferConfidence": 0.9999,
                            "lineBreak": false
                        },
                        {
                            "boundingPoly": {
                                "vertices": [
                                    {
                                        "x": 417.0,
                                        "y": 495.0
                                    },
                                    {
                                        "x": 451.0,
                                        "y": 495.0
                                    },
                                    {
                                        "x": 451.0,
                                        "y": 523.0
                                    },
                                    {
                                        "x": 417.0,
                                        "y": 523.0
                                    }
                                ]
                            },
                            "inferText": "06",
                            "inferConfidence": 1.0,
                            "lineBreak": false
                        },
                        {
                            "boundingPoly": {
                                "vertices": [
                                    {
                                        "x": 457.0,
                                        "y": 495.0
                                    },
                                    {
                                        "x": 490.0,
                                        "y": 495.0
                                    },
                                    {
                                        "x": 490.0,
                                        "y": 524.0
                                    },
                                    {
                                        "x": 457.0,
                                        "y": 524.0
                                    }
                                ]
                            },
                            "inferText": "월",
                            "inferConfidence": 0.9997,
                            "lineBreak": false
                        },
                        {
                            "boundingPoly": {
                                "vertices": [
                                    {
                                        "x": 494.0,
                                        "y": 495.0
                                    },
                                    {
                                        "x": 564.0,
                                        "y": 495.0
                                    },
                                    {
                                        "x": 564.0,
                                        "y": 523.0
                                    },
                                    {
                                        "x": 494.0,
                                        "y": 523.0
                                    }
                                ]
                            },
                            "inferText": "01 일",
                            "inferConfidence": 0.9902,
                            "lineBreak": false
                        }
                    ]
                },
                {
                    "name": "사업장 소재지",
                    "valueType": "ALL",
                    "boundingPoly": {
                        "vertices": [
                            {
                                "x": 315.0,
                                "y": 534.0
                            },
                            {
                                "x": 852.0,
                                "y": 534.0
                            },
                            {
                                "x": 852.0,
                                "y": 568.0
                            },
                            {
                                "x": 315.0,
                                "y": 568.0
                            }
                        ]
                    },
                    "inferText": "경기도 ******",
                    "inferConfidence": 0.99223995,
                    "type": "NORMAL",
                    "subFields": [
                        {
                            "boundingPoly": {
                                "vertices": [
                                    {
                                        "x": 315.0,
                                        "y": 535.0
                                    },
                                    {
                                        "x": 397.0,
                                        "y": 535.0
                                    },
                                    {
                                        "x": 397.0,
                                        "y": 568.0
                                    },
                                    {
                                        "x": 315.0,
                                        "y": 568.0
                                    }
                                ]
                            },
                            "inferText": "경기도",
                            "inferConfidence": 1.0,
                            "lineBreak": false
                        }
                    ]
                },
                {
                    "name": "대표자",
                    "valueType": "ALL",
                    "boundingPoly": {
                        "vertices": [
                            {
                                "x": 300.66458,
                                "y": 404.66934
                            },
                            {
                                "x": 910.0876,
                                "y": 400.79553
                            },
                            {
                                "x": 909.6188,
                                "y": 478.17303
                            },
                            {
                                "x": 300.49875,
                                "y": 481.97482
                            }
                        ]
                    },
                    "inferText": "",
                    "inferConfidence": 0.0,
                    "type": "NORMAL"
                }
            ],
            "title": {
                "name": "사업자 등록증",
                "boundingPoly": {
                    "vertices": [
                        {
                            "x": 330.0,
                            "y": 188.0
                        },
                        {
                            "x": 795.0,
                            "y": 186.0
                        },
                        {
                            "x": 795.0,
                            "y": 252.0
                        },
                        {
                            "x": 330.0,
                            "y": 253.0
                        }
                    ]
                },
                "inferText": "사업자등록증",
                "inferConfidence": 0.9998,
                "subFields": [
                    {
                        "boundingPoly": {
                            "vertices": [
                                {
                                    "x": 330.0,
                                    "y": 188.0
                                },
                                {
                                    "x": 795.0,
                                    "y": 186.0
                                },
                                {
                                    "x": 795.0,
                                    "y": 252.0
                                },
                                {
                                    "x": 330.0,
                                    "y": 253.0
                                }
                            ]
                        },
                        "inferText": "사업자등록증",
                        "inferConfidence": 0.9998,
                        "lineBreak": true
                    }
                ]
            }
        },
    ]
}
```

#### 실패

호출이 실패한 경우의 응답 예시는 다음과 같습니다.

```
{
    "version": "V1",
    "requestId": "1234",
    "timestamp": 1724833931723,
    "images": [
        {
            "uid": "{uid}",
            "name": "hello",
            "inferResult": "FAILURE",
            "message": "NOT_FOUND: not found matched template",
            "validationResult": {
                "result": "NO_REQUESTED"
            }
        }
    ]
}
```
