Papago API 활용해보기

td.junopark·2024년 5월 31일
1
post-thumbnail

Papago Translation API

Papago Translation API는 입력된 텍스트를 다국어로 번역해주는 기계 번역 API이다.

또한 단순 텍스트 번역 뿐만 아니라 웹 번역, 문서 번역, 언어 인식 기능도 갖추고 있다.

API 이용 신청하기

Papago Translation API의 경우 네이버 클라우드 플랫폼에 가입 후 이용할 수 있는데, 무료 API도 다양하게 지원하고있다.

가입이 완료 되었다면 Papago Translation 이용 신청하기를 통해 API 이용 신청을 완료한다.

이후 Console 탭으로 가보면

이처럼 Papago Translation이 추가되어 있을 것이다.

이제 Application 등록을 눌러 API 권한을 부여받아야 하는데,

본인이 원하는 Application 이름을 입력하고 어떤 API를 사용하고 싶은지 선택하면 된다.

이후 등록버튼을 누르면 API 권한이 부여된 Application을 확인할 수 있다.


Client IDClient Secret이 정상적으로 발급되었다면 API를 이용할 수 있다.

API 활용하기

이제 직접 Papago Translation API 예제를 참고하여 텍스트 번역을 해보자.

다음은 파이썬으로 작성된 Papago Text Translation 예제이다.

# Papago Text Translation API

client_id = "본인의 client ID"
client_secret = "본인의 client secret"

def translate(source_text: str, source_language="ko", target_language="en") -> str:
    """
    Translate text by papago api.

    Args:
        source_text (str): original text to translate.
        source_language (str, optional): source language to translate. Defaults to "ko".
        target_language (str, optional): target language to translate. Defaults to "en".

    Returns:
        str: translated text.
    """
    try:
        url = "https://naveropenapi.apigw.ntruss.com/nmt/v1/translation"

        encText = urllib.parse.quote(source_text)

        data = "source=%s&target=%s&text=%s" % (source_language, target_language, encText)
        request = urllib.request.Request(url)
        request.add_header("X-NCP-APIGW-API-KEY-ID", client_id)
        request.add_header("X-NCP-APIGW-API-KEY", client_secret)
        response = urllib.request.urlopen(request, data=data.encode("utf-8"))
        rescode = response.getcode()
            
        if rescode == 200:
            response_body = response.read()
            result_json = json.loads(response_body.decode("utf-8"))
            translated_text = result_json['message']['result']['translatedText']
            return translated_text
        elif rescode == 401:
            self.__error_message("Unauthorized", "Check your API key or client ID.")
            return
        elif rescode == 403:
            self.__error_message("Forbidden", "You don't have permission to access the server.")
            return
    except HTTPError as e:
        pass
    except Exception as e:
        self.__error_message("Error", str(e))
        return
print(translate("안녕하세요"))

>>> "Hello"

이처럼 url, client ID, client secret, lang_code가 모두 올바르게 입력됐다면 정상적으로 번역 결과가 출력된다.

Simple_Translator

다음은 Papago Text TranslationPapago Language Detection을 종합해서 제작한 간단한 번역기 앱이다.

github.com/junopark00/Naver_API/Simple_Translator

앱을 사용하기 위해서는 model.pyclient IDclient secret을 입력해주어야 한다.

입력 후 controller.py를 실행하면 정상적으로 앱이 작동한다.

이 앱은 Language Detection(언어 감지)를 통해 사용자가 입력한 언어를 자동으로 감지해 한국어로 번역한다.
또한 QTimer를 활용해 Translate 버튼을 누르지 않아도 입력 후 일정 시간이 지나면 자동으로 번역이 실행되게 했다.

자세한 내용은 GitHub 링크의 README를 참고.

profile
공부 중🙄

0개의 댓글