Template OCR
    • PDF

    Template OCR

    • PDF

    기사 요약

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

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

    요청

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

    메서드URI
    POST/infer

    요청 헤더

    CLOVA OCR API에서 공통으로 사용하는 헤더에 대한 정보는 CLOVA OCR 요청 헤더를 참조해 주십시오.

    요청 바디

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

    Content-Type: application/json인 경우

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

    필드타입필수 여부설명
    versionStringRequired버전 정보
    • V1 | V2 (권장)
      • V1: V1 엔진 호출
      • V2: V2 엔진 호출
    requestIdStringRequired임의의 API 호출 UUID
    timestampIntegerRequired임의의 API 호출 시각(Timestamp)
    langStringOptionalOCR 인식 요청 언어 정보
    • ko | ja | zh-TW
      • ko: 한국어
      • ja: 일본어
      • zh-TW: 중국어(번체)
    • 미입력 시 도메인의 언어 설정값으로 자동 설정
    • 콤마(,)를 통해 여러 언어 동시 호출 가능
      • <예시> "ko, ja, zh-TW"
    imagesArrayRequiredimages 세부 정보
    • JSON Array로 작성
    • 호출당 1개의 이미지 Array 작성 가능
    • 이미지 크기: 최대 50 MB
    enableTableDetectionBooleanOptional문서 이미지 내 표(Table) 영역 인식 및 구조화된 형태 제공 여부
    • true | false (기본값)
      • true: 표 인식 및 형태 제공
      • false: 표 미인식 및 형태 미제공
    • 네이버 클라우드 플랫폼에 생성한 Domain에서 '표 추출 여부' 토글 버튼을 활성화(ON)해야 사용 가능

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

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

    필드타입필수 여부설명
    messageObjectRequired요청 데이터 정보
    message.versionStringRequired버전 정보
    • V1 | V2 (권장값)
      • V1: V1 엔진 호출
      • V2: V2 엔진 호출
    message.requestIdStringRequired임의의 API 호출 UUID
    message.timestampIntegerRequired임의의 API 호출 시각(Timestamp)
    message.langStringOptionalOCR 인식 요청 언어 정보
    • ko | ja | zh-TW
      • ko: 한국어
      • ja: 일본어
      • zh-TW: 중국어(번체)
    • 미입력 시 도메인의 언어 설정값으로 자동 설정
    • 콤마(,)를 통해 여러 언어 동시 호출 가능
      • <예시> "ko, ja, zh-TW"
    message.imagesArrayRequiredimages 세부 정보
    • JSON Array로 작성
    • 호출당 1개의 이미지 Array 작성 가능
    • 이미지 크기: 최대 50 MB
    message.enableTableDetectionBooleanOptional문서 이미지 내 표(Table) 영역 인식 및 구조화된 형태 제공 여부
    • true | false (기본값)
      • true: 표 인식 및 형태 제공
      • false: 표 미인식 및 형태 미제공
    • 네이버 클라우드 플랫폼에 생성한 Domain에서 '표 추출 여부' 토글 버튼을 활성화(ON)해야 사용 가능
    fileFileRequiredOCR 인식 이미지 파일

    images

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

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

    요청 예시

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

    Content-Type: application/json인 경우

    요청 헤더 Content-Typeapplication/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]
        }
      ],
      "enableTableDetection": true
    }'
    

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

    요청 헤더 Content-Typemultipart/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\"}]}"'
    

    응답

    응답 형식을 설명합니다.

    참고

    V2 버전으로 요청 시에는 응답 결과 값에 boundingboundingPoly 정보가 표시됩니다.

    응답 바디

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

    필드타입필수 여부설명
    versionString-버전 정보
    • V1 | V2
      • V1: V1 엔진 호출
      • V2: V2 엔진 호출
    requestIdString-API 호출 UUID
    timestampInteger-API 호출 시각(Timestamp)
    imagesArray-images 세부 정보

    images

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

    필드타입필수 여부설명
    uidString-이미지 UID
    • API 유효성 검사 및 요청 추적 시 사용
    nameString-이미지 이름
    • 이미지 식별 및 응답 결과 확인 시 사용
    inferResultString-이미지 추론 결과
    • SUCCESS | FAILURE | ERROR
      • SUCCESS: 인식 성공
      • FAILURE: 인식 실패
      • ERROR: 인식 처리 예외
    messageString-결과 메시지
    matchedTemplateObject-템플릿 정보
    • 인식에 실패하거나 일치하는 템플릿을 찾을 수 없는 경우 해당 필드는 표시되지 않음
    matchedTemplate.idInteger-템플릿 아이디
    matchedTemplate.nameString-템플릿 이름
    validationResultObject-유효성 검사 결과 정보
    validationResult.resultString-유효성 검사 결과 코드
    • NO_REQUESTED | UNCHECKED | ERROR | VALID | INVALID
      • NO_REQUESTED: 검증 작업 미요청(유효성 검사 실패)
      • UNCHECKED: 검증 여부 확인 불가
      • ERROR: 검증 시 에러 발생(유효성 검사 실패)
      • VALID: 검증 결과 유효(유효성 검사 성공)
      • INVALID: 검증 통과 실패
    validationResult.messageString-유효성 검사 결과 세부 메시지
    • 항상 응답되는 값은 아님
    convertedImageInfoObject-변환 이미지 정보
    • formatpdf 또는 tiff일 때
    • 좌표 값은 호출 이미지 파일을 기준으로 설정
    convertedImageInfo.widthInteger-변환 이미지 가로 길이
    convertedImageInfo.heightInteger-변환 이미지 세로 길이
    convertedImageInfo.pageIndexInteger-변환 이미지 페이지 인덱스
    convertedImageInfo.longImageBoolean-변환 이미지 길이 Long 여부
    • true | false
      • true: 긴(Long) 이미지
      • false: 긴(Long) 이미지가 아님
    combineResultObject-이미지 인식 결과 결합 정보
    combineResult.nameString-이미지 결합 필드 이름
    combineResult.textString-각 이미지 필드별 출력값 및 고정 텍스트
    tablesArray-Tables 세부 정보
    fieldsArray-Fields 세부 정보
    titleObject-이미지 타이틀 세부 정보
    title.nameString-템플릿 대표 샘플 필드 이름
    • 이미지 식별 및 응답 결과 확인 시 사용
    title.boundingPolyObject-Bounding Poly 정보
    • versionV2일 경우에만 제공
    title.boundingPoly.verticesArray-Bounding Poly Vertices 세부 정보
    title.inferTextString-인식된 텍스트
    • typeCHECKBOX일 경우 설정에서 지정한 응답값으로 대체
    title.inferConfidenceFloat-인식된 텍스트의 신뢰도
    • 0~1
    • 신뢰도 값이 클수록 텍스트의 정확도가 높음
    title.subFieldsArray-subFields 세부 정보

    tables

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

    필드타입필수 여부설명
    cellsArray-Cells 세부 정보
    inferTextString-인식된 텍스트
    inferConfidenceFloat-인식된 텍스트의 신뢰도
    • 0~1
    • 신뢰도 값이 클수록 텍스트의 정확도가 높음
    boundingPolyObject-Bounding Poly 정보
    • versionV2일 경우에만 제공
    boundingPoly.verticesArray-Bounding Poly Vertices 세부 정보

    fields

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

    필드타입필수 여부설명
    nameString-템플릿 필드 이름
    • API 호출 시에만 동작
    • 이미지 식별 및 응답 결과 확인 시 사용
    valueTypeString-입력값 유형
    • ALL | NUMERIC
      • ALL: 텍스트와 숫자
      • NUMERIC: 숫자
    boundingPolyObject-Bounding Poly 정보
    • versionV2일 경우에만 제공
    boundingPoly.verticesArray-Bounding Poly Vertices 세부 정보
    inferTextString-인식된 텍스트
    • typeCHECKBOX일 경우 설정에서 지정한 응답값으로 대체
    inferConfidenceFloat-인식된 텍스트의 신뢰도
    • 0~1
    • 신뢰도 값이 클수록 텍스트의 정확도가 높음
    typeString-인식된 이미지 유형
    • NORMAL | MULTI_BOX | CHECKBOX
      • NORMAL: 일반
      • MULTI_BOX: 멀티박스
      • CHECKBOX: 체크박스
    subFieldsArray-subFields 세부 정보
    checkedBoolean-체크박스 선택 여부
    • true | false
      • true: 선택되어 있음
      • false: 선택되어 있지 않음

    subFields

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

    필드타입필수 여부설명
    boundingPolyObject-Bounding Poly 정보
    • versionV2일 경우에만 제공
    boundingPoly.verticesArray-Bounding Poly Vertices 세부 정보
    inferTextString-인식된 텍스트
    • typeCHECKBOX일 경우 설정에서 지정한 응답값으로 대체
    inferConfidenceFloat-인식된 텍스트의 신뢰도
    • 0~1
    • 신뢰도 값이 클수록 텍스트의 정확도가 높음
    lineBreakBoolean-인식된 텍스트의 마지막 줄 여부 표시
    • true | false
      • true: 마지막 텍스트
      • false: 마지막 텍스트가 아님

    cells

    tables.cells에 대한 설명은 다음과 같습니다.

    필드타입필수 여부설명
    boundingPolyObject-Bounding Poly 정보
    • versionV2일 경우에만 제공
    boundingPoly.verticesArray-Bounding Poly Vertices 세부 정보
    cellTextLinesArray-cellTextLines 세부 정보
    inferConfidenceFloat-인식된 텍스트의 신뢰도
    • 0~1
    • 신뢰도 값이 클수록 텍스트의 정확도가 높음
    rowSpanInteger-표의 셀이 차지하는(Span) 가로열의 수
    rowIndexInteger-표 내 해당 가로열의 위치값
    columnSpanInteger-표의 셀이 차지하는(Span) 세로행의 수
    columnIndexInteger-표 내 해당 세로행의 위치값

    cellTextLines

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

    필드타입필수 여부설명
    boundingPolyObject-Bounding Poly 정보
    • versionV2일 경우에만 제공
    boundingPoly.verticesArray-Bounding Poly Vertices 세부 정보
    inferConfidenceFloat-인식된 텍스트의 신뢰도
    • 0~1
    • 신뢰도 값이 클수록 텍스트의 정확도가 높음
    cellWordsArray-셀의 텍스트 세부 정보

    cellWords

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

    필드타입필수 여부설명
    boundingPolyObject-Bounding Poly 정보
    • versionV2일 경우에만 제공
    boundingPoly.verticesArray-Bounding Poly Vertices 세부 정보
    inferConfidenceFloat-인식된 텍스트의 신뢰도
    • 0~1
    • 신뢰도 값이 클수록 텍스트의 정확도가 높음
    inferTextString-인식된 텍스트

    vertices

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

    필드타입필수 여부설명
    xFloat-Bounding Poly X축 좌표 값
    yFloat-Bounding Poly Y축 좌표 값

    응답 상태 코드

    CLOVA OCR API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 CLOVA OCR 공통 응답 상태 코드를 참조해 주십시오.

    응답 예시

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

    성공

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

    {
        "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"
                }
            }
        ]
    }
    

    이 문서가 도움이 되었습니까?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.