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 |
영어 | en |
일본어 | ja |
중국어 간체 | zh-CN |
중국어 번체 | zh-TW |
베트남어 | vi |
태국어 | th |
인도네시아어 | id |
프랑스어 | fr |
스페인어 | es |
러시아어 | 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)
이 문서가 도움이 되었습니까?