티스토리 뷰
반응형
CLOVA OCR API
이미지를 텍스트로 추출하기 위한 API 중 NAVER OCR API를 활용해보고자 한다.
Ready
결제수단등록
NAVER CLOVA 사용을 위해 결제수단 등록이 필요하다.
https://www.ncloud.com/mypage/billing/payment
CLOVA OCR 이용 신청하기
결제수단 등록을 완료했다면 CLOVA OCR 이용 신청을 해보자.
https://www.ncloud.com/product/aiService/ocr
도메인 생성
이용 신청을 완료하면 NAVER CLOUD PLATFORM Dashboard 로 이동되었던 것 같다..
- NAVER CLOUD PLATFORM Dashboard > Recently Viewd > CLOVA OCR > Domain
- 도메인 이름, 코드, 지원 언어, 서비스 타입을 선택하고 생성
참고 정보
- 인식 모델 Basic의 Free를 제외한 모든 서비스 플랜은 CLOVA OCR API 호출을 하지 않아도 기본 유지 비용이 발생
- OCR 서비스는 Demo와 API 호출 수를 합산하여 매월 100회 무료 제공
- CLOVA OCR 요금 탭 참고
Secret Key 발급
- 생성된 도메인의 Text OCR 클릭
- Secret Key 생성 버튼을 누르면 생성
Invoke URL 생성
- Invoke URL 생성을 위해 APIGW 자동 연동이 필요한데, 연동을 위해 API Gateway 이용 신청이 필요하다.
- APIGW 자동 연동 버튼을 클릭하게 되면 API Gateway 의 Product 가 자동으로 생성되고 APIGW Invoke URL 이 생성된다.
API Test
Request
- Method :
POST
Request Header
- X-OCR-SECRET :
Client Secret
- Content-Type :
application/json
ormultipart/form-data
Request Body
Content-Type
:application/json
Case
{
"version": "V2", # V2 사용을 권장
"requestId": "4fed2c77-e7db-....", # UUID
"timestamp": 0, # Timestamp
"images": [
{
"format": "jpg",
"url": "Image url",
"name": "image"
}
],
}
Content-Type
:multipart/form-data
Case- message :
{"version": "V2","requestId": "4fed2c77-e7db-....","timestamp": 0,"images": [{ "format": "jpg", "name": "image"}]}
- file :
image file steam data
- message :
Response
{
"version": "V2",
"requestId": "4fed2c77-e7db-....",
"timestamp": 1634878730279,
"images": [
{
"uid": "84260f1d1aa94a7...",
"name": "image",
"inferResult": "SUCCESS", # 이미지 추론 결과 (SUCCESS, FAILURE, ERROR)
"message": "SUCCESS",
"validationResult": {
"result": "NO_REQUESTED"
},
"fields": [
{
"valueType": "ALL",
"boundingPoly": {
"vertices": [
{
"x": 5.0,
"y": 0.0
},
{
"x": 105.0,
"y": 0.0
},
{
"x": 105.0,
"y": 31.0
},
{
"x": 5.0,
"y": 31.0
}
]
},
"inferText": "116204", # OCR 인식 결과 TEXT
"inferConfidence": 0.9983, # 결과에 대한 점수 (0~1)
"type": "NORMAL",
"lineBreak": true
}
]
}
]
}
Python API
- Request with multipart/form-data
import requests
import uuid
import time
import json
api_url = 'YOUR_API_URL'
secret_key = 'YOUR_SECRET_KEY'
image_file = 'YOUR_IMAGE_FILE'
request_json = {
'images': [
{
'format': 'jpg',
'name': 'demo'
}
],
'requestId': str(uuid.uuid4()),
'version': 'V2',
'timestamp': int(round(time.time() * 1000))
}
payload = {'message': json.dumps(request_json).encode('UTF-8')}
files = [
('file', open(image_file,'rb'))
]
headers = {
'X-OCR-SECRET': secret_key
}
response = requests.request("POST", api_url, headers=headers, data = payload, files = files)
result = response.text.encode('utf8')
result_json = json.loads(result.decode('utf8').replace("'", '"'))
result_text = result_json['images'][0]['fields'][0]['inferText']
print(result_txt)
- Request with application/json
import requests
import uuid
import time
import base64
import json
api_url = 'YOUR_API_URL'
secret_key = 'YOUR_SECRET_KEY'
image_url = 'YOUR_IMAGE_URL'
request_json = {
'images': [
{
'format': 'jpg',
'name': 'demo',
'url': image_url
}
],
'requestId': str(uuid.uuid4()),
'version': 'V2',
'timestamp': int(round(time.time() * 1000))
}
payload = json.dumps(request_json).encode('UTF-8')
headers = {
'X-OCR-SECRET': secret_key,
'Content-Type': 'application/json'
}
response = requests.request("POST", api_url, headers=headers, data = payload)
print(response.text)
반응형
'Web > API' 카테고리의 다른 글
[Spring Boot] RESTful API ResponseEntity Example (0) | 2021.12.14 |
---|---|
[CLOVA Speech API] NAVER CLOVA Speech API 사용하기 (0) | 2021.11.09 |
[API] Java JSON Parsing(JSONObject, JSONArray) (0) | 2020.10.17 |
[API] Java API Connection(HttpURLConnection, JSONObject) (0) | 2020.10.17 |
[API] 금융결제원 API 활용하기 #6. 계좌 QR코드 생성 (3) | 2020.06.23 |
댓글