기타

[API] 번역 API: DeepL 사용 및 Java에 적용

Ash_jisu 2025. 2. 2. 20:23

번역 API 도입 및 사용

번역 API 사용 및 선정 이유(DeepL API 사용)

번역 API 종류

1. DeepL API Free

  • 특징:
    • REST API 형식으로 제공되며, 한 달에 최대 500,000자 무료 번역 가능.
    • 고품질 번역을 제공하며, JSON 형식의 요청/응답을 사용.
    • 공식 Java SDK는 없지만, REST API를 통해 쉽게 통합 가능.
  • Spring 통합 방법:
    • RestTemplate 또는 WebClient로 REST API 호출.
    • API 키 인증을 헤더에 추가하여 요청.
  • 장점:
    • 높은 번역 품질.
    • 공식 문서가 잘 정리되어 있어 개발자가 쉽게 사용할 수 있음.

2. Google Translate API

  • 특징:
    • Google Cloud Translation API를 통해 제공.
    • 유료 기반이지만, 300달러 무료 크레딧이 제공되므로 초기 테스트에 적합.
    • RESTful API로 쉽게 통합 가능하며, Spring 애플리케이션과 자연스럽게 연동 가능.
  • Spring 통합 방법:
    • Google Cloud SDK를 설정하거나, 직접 REST API 호출.
    • JSON 형식으로 요청/응답 처리.
  • 장점:
    • 강력한 언어 지원.
    • 안정적이며 대규모 애플리케이션에서 적합.

3. LibreTranslate API

  • 특징:
    • 완전 무료로 제공되며, 별도의 인증 없이 사용 가능.
    • RESTful API 형식으로 제공되어 Spring과 통합 용이.
    • 자체 호스팅 가능.
  • Spring 통합 방법:
    • 간단한 REST API 호출로 번역 결과 가져오기.
    • JSON 요청/응답 지원.
  • 장점:
    • 비용 부담 없이 사용 가능.
    • 간단한 사용 사례에 적합.

4. 네이버 파파고 API

  • 특징:
    • REST API 형식으로 제공되며, 매일 10,000자 무료 번역 가능.
    • Spring에서 쉽게 연동 가능한 RESTful 구조.
    • 2024년 2월 29일까지 지원.
  • Spring 통합 방법:
    • REST API 호출 시, Client ID와 Client Secret을 헤더로 전달.
    • Spring의 WebClient 또는 RestTemplate로 통합 가능.
  • 장점:
    • 한국어에 특화된 번역 품질.
    • RESTful API 사용으로 Spring과의 호환성 높음.

5. 카카오 번역 API

  • 특징:
    • REST API 형식으로 제공되며, 매월 10,000자 무료.
    • Client ID와 Secret을 사용한 인증 방식.
    • JSON 형식으로 요청/응답 처리.
  • Spring 통합 방법:
    • REST API 호출 시, 헤더에 인증 정보 포함.
    • RestTemplate 또는 WebClient를 사용하여 쉽게 연동.
  • 장점:
    • 한국어 번역 품질이 우수.
    • 제한적인 무료 사용으로 간단한 애플리케이션에 적합.

DeepL API Free  선택

  • 선택이유: 한달 500,000자 무료로 제일 폭이 크고 개발 집중도를 생각했을때 일일제한보다 한달제한이 유리하다고 생각, 또한 Spring 통합 방식도 타 API랑 큰 차이가 없음
    • API 발급 예시API발급 예시 및 API 테스트
    • 코드 작성
      • properties등록
deepl.api.key=yourApiKey
deepl.api.base-url=https://api-free.deepl.com/v2

 

  • 테스트 API 작성
    • text의 언어는 자동판단
    • targetLang: 번역 결과 언어
  • 테스트 결과(한국어 1글자, 공백 = 1token 으로 취급)
@RestController
public class TranslationController {

    private final WebClient webClient;
    private final String apiKey;

    public TranslationController(@Value("${deepl.api.key}") String apiKey,
                                 @Value("${deepl.api.base-url}") String baseUrl,
                                 WebClient.Builder webClientBuilder) {
        this.apiKey = apiKey;
        this.webClient = webClientBuilder.baseUrl(baseUrl).build();
    }

    @GetMapping("/translate")
    public String translate(
            @RequestParam String text,
            @RequestParam(defaultValue = "EN") String targetLang) {

        // DeepL API 호출
        return webClient.post()
                .uri(uriBuilder -> uriBuilder.path("/translate")
                        .queryParam("auth_key", apiKey)
                        .queryParam("text", text)
                        .queryParam("target_lang", targetLang)
                        .build())
                .retrieve()
                .bodyToMono(String.class)
                .block();
    }
}

 


참고

https://velog.io/@king/deepl-api

 

DeepL API로 번역하기

DeepL API Free에 가입하고, 그 이후 REST API 사용하는 방법을 스크린샷 위주로 남겨보았습니다.

velog.io