Image Translation(Image) API

Prev Next

Image Translation(Image) API

  • ์ด๋ฏธ์ง€ ์ƒ์˜ ํ…์ŠคํŠธ๋ฅผ ์ธ์‹ํ•˜๊ณ  ์ถ”์ถœ(OCR) ํ•˜์—ฌ, ๋ฒˆ์—ญ ํ…์ŠคํŠธ ๋ฐ ๋ฒˆ์—ญ ์ด๋ฏธ์ง€ ์ œ๊ณต
  • ์†Œ์Šค ์–ธ์–ด๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ Translation API์—์„œ ์ž๋™์œผ๋กœ ์–ธ์–ด๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ๋ฒˆ์—ญ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณต. ์ด ๊ฒฝ์šฐ, ์–ธ์–ด ๊ฐ์ง€์— ์ถ”๊ฐ€ ๊ณผ๊ธˆ์€ ํ•˜์ง€ ์•Š๊ณ , ๋ฒˆ์—ญ ์š”์ฒญ ๊ธ€์ž์ˆ˜ ๊ธฐ์ค€์œผ๋กœ๋งŒ ๊ณผ๊ธˆ

API URL

Method ์š”์ฒญ URL ์ถœ๋ ฅ ํฌ๋งท
POST https://papago.apigw-pub.fin-ntruss.com/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://papago.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"}}
Shell

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://papago.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)
Python