Image Translation(Image) API
  • PDF

Image Translation(Image) API

  • PDF

Image Translation(Image) API

  • 이미지 상의 텍스트를 인식하고 추출(OCR) 하여, 번역 텍스트 및 번역 이미지 제공
  • 소스 언어를 지정하지 않아도 Translation API에서 자동으로 언어를 감지하여 번역 결과를 제공. 이 경우, 언어 감지에 추가 과금은 하지 않고, 번역 요청 글자수 기준으로만 과금

API URL

Method 요청 URL 출력 포맷
POST https://naveropenapi.apigw-pub.fin-ntruss.com/image-to-image/v1/translate JSON

Header

Name Description
Content-Type multipart/form-data 형식으로 전송 필요
X-NCP-APIGW-API-KEY-ID NCP 앱 등록 시 발급받은 Client ID
X-NCP-APIGW-API-KEY NCP 앱 등록 시 발급받은 Secret Key

Parameter

Name Type Required Description
source String true 원문 언어 코드
auto로 설정 시, 자동으로 소스 언어를 감지
target String true 번역 언어 코드
image File true 원본 이미지 파일

지원 언어
소스 언어 - 한국어, 일본어, 영어, 중국어 간체, 중국어 번체, 베트남어, 태국어, 스페인어, 프랑스어, 인도네시아어, 러시아어

타겟 언어 - 한국어, 일본어, 영어, 중국어 간체, 중국어 번체, 베트남어, 태국어, 스페인어, 프랑스어, 인도네시아어, 러시아어, 독일어, 이탈리아어

언어 언어 코드
한국어 ko
일본어 ja
영어 en
중국어 간체 zh-CN
중국어 번체 zh-TW
베트남어 vi
태국어 th
스페인어 es
프랑스어 fr
인도네시아어 id
러시아어 ru
독일어 de
이탈리아어 it

Response
Json 형식으로 리턴

Field Name Type Description
data JSON Object
data.sourceLang String 원문 언어 코드
data.targetLang String 번역 언어 코드
data.sourceText String 원문 텍스트
data.targetText String 번역 텍스트
data.renderedImage String 번역된 이미지 바이너리 base64 인코딩
data.blocks JSON Array Block단위 OCR 정보
data.blocks[].sourceLang String 원문 언어 코드
data.blocks[].sourceText String 원문 텍스트
data.blocks[].targetText String 번역 텍스트
data.blocks[].lb JSON Object Left Bottom좌표 (x, y 내부 필드 존재)
data.blocks[].lt JSON Object Left Top 좌표 (x, y 내부 필드 존재)
data.blocks[].rb JSON Object Right Bottom 좌표 (x, y 내부 필드 존재)
data.blocks[].rt JSON Object Right Top 좌표 (x, y 내부 필드 존재)
data.blocks[].lines JSON Array Line 단위 OCR 정보
data.blocks[].lines[].lb JSON Object Left Bottom좌표 (x, y 내부 필드 존재)
data.blocks[].lines[].lt JSON Object Left Top 좌표 (x, y 내부 필드 존재)
data.blocks[].lines[].rb JSON Object Right Bottom 좌표 (x, y 내부 필드 존재)
data.blocks[].lines[].rt JSON Object Right Top 좌표 (x, y 내부 필드 존재)
data.blocks[].lines[].words JSON Array Word 단위 OCR 정보
data.blocks[].lines[].words[].sourceText String 원문 텍스트
data.blocks[].lines[].words[].lb JSON Object Left Bottom좌표 (x, y 내부 필드 존재)
data.blocks[].lines[].words[].lt JSON Object Left Top 좌표 (x, y 내부 필드 존재)
data.blocks[].lines[].words[].rb JSON Object Right Bottom 좌표 (x, y 내부 필드 존재)
data.blocks[].lines[].words[].rt JSON Object Right Top 좌표 (x, y 내부 필드 존재)

CURL Example

$ curl --location --request POST 'https://naveropenapi.apigw-pub.fin-ntruss.com/image-to-image/v1/translate' \
-H "X-NCP-APIGW-API-KEY-ID:{애플리케이션 등록 시 발급받은 client id값}" \
-H "X-NCP-APIGW-API-KEY:{애플리케이션 등록 시 발급받은 client secret값}" \
--form 'image=@"/Users/user/a.png"' \
--form 'source="ko"' \
--form 'target="en"'
{"data":{"sourceLang":"ko","targetLang":"en","sourceText":"NEW\nGURSKEN\n구르스켄\n옷장\n49x55x186 cm\n라이트베이지\n₩79,900\nIMEA","targetText":"NEW\nGURSKEN\nGursken.\nCloset\n49x55x186 cm\nLight beige.\n₩79,900\nIMEA","blocks":[{"sourceLang":"ko","sourceText":"NEW","targetText":"NEW","lines":[{"lb":{"x":195,"y":29},"lt":{"x":201,"y":2},"rb":{"x":255,"y":42},"rt":{"x":261,"y":15}}],"lb":{"x":195,"y":29},"lt":{"x":200,"y":1},"rb":{"x":255,"y":42},"rt":{"x":261,"y":15}},{"sourceLang":"ko","sourceText":"GURSKEN","targetText":"GURSKEN","lines":[{"lb":{"x":191,"y":118},"lt":{"x":194,"y":92},"rb":{"x":317,"y":135},"rt":{"x":321,"y":108}}],"lb":{"x":190,"y":119},"lt":{"x":194,"y":92},"rb":{"x":317,"y":135},"rt":{"x":321,"y":107}},{"sourceLang":"ko","sourceText":"구르스켄","targetText":"Gursken.","lines":[{"lb":{"x":191,"y":159},"lt":{"x":194,"y":135},"rb":{"x":270,"y":167},"rt":{"x":272,"y":142}}],"lb":{"x":190,"y":159},"lt":{"x":193,"y":134},"rb":{"x":269,"y":167},"rt":{"x":272,"y":142}},{"sourceLang":"ko","sourceText":"옷장","targetText":"Closet","lines":[{"lb":{"x":195,"y":207},"lt":{"x":197,"y":177},"rb":{"x":247,"y":211},"rt":{"x":248,"y":180}}],"lb":{"x":194,"y":207},"lt":{"x":197,"y":176},"rb":{"x":247,"y":211},"rt":{"x":249,"y":180}},{"sourceLang":"ko","sourceText":"49x55x186 cm","targetText":"49x55x186 cm","lines":[{"lb":{"x":196,"y":232},"lt":{"x":197,"y":220},"rb":{"x":268,"y":235},"rt":{"x":269,"y":222}}],"lb":{"x":196,"y":232},"lt":{"x":196,"y":218},"rb":{"x":268,"y":235},"rt":{"x":268,"y":222}},{"sourceLang":"ko","sourceText":"라이트베이지","targetText":"Light beige.","lines":[{"lb":{"x":197,"y":252},"lt":{"x":197,"y":237},"rb":{"x":257,"y":252},"rt":{"x":257,"y":237}}],"lb":{"x":197,"y":252},"lt":{"x":197,"y":237},"rb":{"x":257,"y":252},"rt":{"x":257,"y":237}},{"sourceLang":"ko","sourceText":"₩79,900","targetText":"₩79,900","lines":[{"lb":{"x":223,"y":448},"lt":{"x":219,"y":406},"rb":{"x":358,"y":434},"rt":{"x":354,"y":393}}],"lb":{"x":223,"y":448},"lt":{"x":218,"y":406},"rb":{"x":358,"y":434},"rt":{"x":354,"y":392}},{"sourceLang":"ko","sourceText":"IMEA","targetText":"IMEA","lines":[{"lb":{"x":280,"y":570},"lt":{"x":278,"y":563},"rb":{"x":308,"y":562},"rt":{"x":305,"y":554}}],"lb":{"x":279,"y":570},"lt":{"x":277,"y":561},"rb":{"x":307,"y":562},"rt":{"x":305,"y":553}}],"renderedImage":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAJdAcYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/ /OvXLjSIdC8deIfHkhCwtoiSK+P4sHP/oIrk9YsW+InhvwV4ijO91vFtrkkdMHLf8AoFKrhKcaMqdveu2n5XSHQx9R4iNRv3OVJ+tmzz/4pfC+T4cfYpJdYW4a+
{{ … 생략 … }}
LP+KdRMlj8DPhhY6PHghdS1lvtM/1CD5R696+DYmlKndLkDoMVNGxSIEHn1o52tjNts9M+J37Uvx7+NN283xF+Juq6hHI2fspuTHCPYRrhcfUVx0MrZ3eZ7AZrNgZmj8wn8KvW6jdjJ6Z61Lk5biNCCYGPceTjsKuWrNhcjqaz7YFSAD95uavwgAAkZOetImRON24gYx2Hp70FnQZRgB0+tRyylSnyg5FSIokXcexNBS2EUMW3MvB70rqQAU53e1OifeSoXGCQcd6az7cADt60AKrAfKvOT170EEHrwOgNRRHErJjgVYCjcG+tADAHZgRkkdQR2qYpt6Oee4P+c0xg0ZyrnilYltoJ6L1pK6AahGducZPXtXN/CaL/inrkksQNVvAD0/5bviupEaHIxxxx+Nc18K0C6DcIDwNTu8j1/fvWkXpcmR43+0KpX4lTBTn/RYskHpweK53QsbuMcDpjvXRftAuzfEm5JP/AC7xfyNc9oYCtnGau/MiT0HwjsNoVEYzjJ5oqTwRGktpyOdp5z70VIH/2Q\u003d\u003d"}}

Python Example

import requests
from requests_toolbelt import MultipartEncoder
import uuid
import json
import base64

data = {
  'source': 'ko',
  'target': 'en',
  'image': ('a.png', open('a.png', 'rb'), 'application/octet-stream', {'Content-Transfer-Encoding': 'binary'})
}
m = MultipartEncoder(data, boundary=uuid.uuid4())

headers = {
  "Content-Type": m.content_type,
  "X-NCP-APIGW-API-KEY-ID": 유저_클라이언트_아이디,
  "X-NCP-APIGW-API-KEY": 유저_클라이언트_시크릿
}

url = " https://naveropenapi.apigw-pub.fin-ntruss.com/image-to-image/v1/translate"
res = requests.post(url, headers=headers, data=m.to_string())
print(res.text)

# renderedImage -> 이미지 파일로 출력
resObj = json.loads(res.text)
imageStr = resObj.get("data").get("renderedImage")
imgdata = base64.b64decode(imageStr)

filename = 'a_translated.png'
with open(filename, 'wb') as f:
    f.write(imgdata)

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