본문 바로가기

Daum Developers

서비스

준비하기

맞춤법 검사기 API는 키 발급을 받아야 사용할 수 있습니다. 아직 발급받은 키가 없다면 App 생성 관리 페이지로 이동하여 키를 발급받으세요.

시작하기

맞춤법 검사기 API는 입력 문서의 맞춤법 검사 기능과 틀린 어절에 대한 도움말 정보를 함께 제공합니다.

API 설명

Request Parameters

GET, POST 방식을 지원합니다.

파라미터 변수 타입 필수 여부 설명
query STRING 필수 맞춤법 검사 대상인 입력 스트링
help "on" / "off" (default) 선택 교정 원인을 설명해주는 도움말 포함 옵션

Response Format

결과는 JSON 포맷으로 제공합니다. XML은 지원하지 않습니다.

object name 설명
sentences 입력 문서의 문장들을 담는 배열입니다. newline을 구분자로 사용합니다.
sentence 하나의 문장을 나타냅니다.
result 어절에 대한 맞춤법 검사 결과를 담는 배열입니다.
input 입력 어절을 나타냅니다.
output 출력된 어절을 나타냅니다.
etype 맞춤법 검사 결과를 나타냅니다.
help 교정 어절에 대한 도움말을 나타냅니다.
help_mo 모바일 환경에 최적화된 도움말을 나타냅니다.
example 교정 어절에 대한 예문을 보여줍니다.
  • "웃으면서 뵈요." JSON 결과입니다.

    {
      sentences: [
        {
          sentence: "웃으면서 뵈요.",
          result: [
            {
              input: "웃으면서",
              output: "웃으면서",
              etype: "no_error"
            },
            {
              input: "뵈요.",
              output: "봬요.",
              etype: "spell"
            }
          ]
        }
      ]
    }
    
  • "웃으면서 뵈요." help 옵션을 사용한 JSON 결과입니다.

    {
      sentences: [
        {
          sentence: "웃으면서 뵈요.",
          result: [
            {
              input: "웃으면서",
              output: "웃으면서",
              etype: "no_error"
            },
            {
              input: "뵈요.",
              output: "봬요.",
              etype: "spell",
              help: [
                "'ㅚ'로 끝나는 용언 어간에 어미 '-어(-었)'가 준 형태로 '봬요.'를 씁니다.",
                "《한글 맞춤법》 제36항에서 용언의 어간 'ㅚ' 뒤에 '-어'가 어울려 '-ㅙ'로 될 적에 준 대로 적도록 규정하고 있습니다."
              ],
              help_mo: [
                "'ㅚ'로 끝나는 용언 어간에 어미 '-어(-었)'가 준 형태로 '봬요.'를 씁니다."
              ],
              example: [
                "항상 건강해야 <color1>돼.</color1>",
                "음력설을 <color1>쇄요.</color1>",
                "내일 <color1>봬요.</color1>"
              ]
            }
          ]
        }
      ]
    }
    

교정 결과 타입 (etype)

오류 어절은 다음 4가지 유형으로 표시됩니다.

  • 철자 오류(spell): 철자가 틀린 경우입니다. 알맞은 표준어를 제시합니다.

      웃으면서 뵈요. -> 웃으면서 봬요.
      미납금 결재 -> 미납금 결제
      오랫만에 듣는 거 같아. -> 오랜만에 듣는 거 같아
    
  • 띄어쓰기 오류(space): 띄어쓰기가 잘못된 경우입니다. 올바른 띄어쓰기를 제시합니다.

      오늘도 최선을 다할 것 입니다 -> 오늘도 최선을 다할 것입니다
      새 학기가 시작한지 엊그제 같네요. -> 새 학기가 시작한 지 엊그제 같네요.
      그는 건강이 안좋은 상태이다. -> 그는 건강이 안 좋은 상태이다
    
  • 철자+띄어쓰기 오류(space_spell): 철자 오류와 띄어쓰기 오류를 함께 가지는 경우입니다. 두 가지 오류를 모두 교정한 결과를 제시합니다.

      몇 일 지나면 잊힐 거야 -> 며칠 지나면 잊힐 거야.
      가슴 한 켠에 여운이 남았다. -> 가슴 한편에 여운이 남았다.
      내꺼 나눠먹자 -> 내 것 나눠먹자
    
  • 오류의심(doubt): 맞춤법 오류가 감지되었으나, 교정하지 못한 경우입니다.

      할 수 없습 (없습)
      핚젂이 고객 만족을 (핚젂이)
      왠겅 (왠겅)
    

Sample Code

  • 맞춤법 검사기 API로 구현한 샘플페이지입니다.

    Sample

  • 아래의 sample.html, sample.js, sample.css를 참고하세요.

    • sample.html
      • 사용자 입력 창, 교정 결과를 출력할 div 박스, 맞춤법 검사 요청 버튼을 생성합니다.
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title> Daum Grammar Check API Sample </title>
        <link rel="stylesheet" href="sample.css">
        <H2>Daum Grammar Check API sample code</H2>
        </head>
        <body>
        <textarea id=input_box cols="100" rows="15">웃으면서 뵈요.
        오늘도 최선을 다할 것 입니다
        몇 일 지나면 잊힐 거야
        할 수 없습
        </textarea>
        <div><button id=b_grammar_check type=button class="btn btn-info" onClick="kakao_grammar_check()" >GRAMMAR CHECK</button></div>
        <div id="result_box" name="result"><br></div>
        </body>
        <script src="jquery-1.11.0.min.js"></script>
        <script src="sample.js"></script>
        </html>
        
    • sample.js

      • 버튼 클릭 시 맞춤법 검사를 실행합니다.
      function print_error_msg(msg, target)
      {
          $(target).append('<span class="error_msg">error_msg: ' + msg + '</span>');
          $(target).append('<br>');
      }
      
      var entityMap = {
          '"': '&quot;',
          "'": '&#39;',
          "/": '&#x2F;',
          "&": "&amp;",
          "<": "&lt;",
          ">": "&gt;"
      };
      
      function escapeHtml(string) {
          return String(string).replace(/[&<>"'\/]/g, function (s) {
              return entityMap[s];
          });
      }
      
      function print_result(eojul_list, target)
      {
          $.each(eojul_list, function(key){
              var eojul_info = eojul_list[key];
              var input = escapeHtml( eojul_info.input );
              var output = escapeHtml( eojul_info.output );
              var et = eojul_info.etype; // error_type;
      
              if(key>0) $(target).append(" ");
              $(target).append('<span class="' + et + '">' + output + '</span>');
      
          });
      
          $(target).append('<br>');
      }
      
      function response_json(json, target)
      {
          console.log(json);
      
          var sentence_list = json.sentences;
          var m_sentence = sentence_list.length;
      
          for(var i=0; i<m_sentence; i++){
              var sentence_error = sentence_list[i].error;
              var sentence = sentence_list[i].sentence;
      
              if(sentence_error != undefined){ //error
                  print_error_msg(sentence_error, target);
              } else { //no error
                  var eojul_list = sentence_list[i].result;
                  var m_eojul = eojul_list.length;
                  console.log('m_eojul:' + m_eojul);
                  console.log('eojul_list:' + JSON.stringify(eojul_list));
      
                  //print result
                  print_result(eojul_list, target);
      
              }
          }
      }
      
      function call_kakao_api( query )
      {
          return $.ajax({
              type:"GET",
              url:"https://apis.daum.net/grammar-checker/v1/check.json",
              data: {"query":query,"apikey":"__KEY__"},
              callback: "list",
              dataType: "jsonp",
              success:function(result){
                  return result;
              },
              error:function(e){
                  return false;
              }
          });
      }
      
      function kakao_grammar_check()
      {
          var query = $('#input_box').val();
          $('#result_box').empty();
          call_kakao_api( query ).done( function( kakao_res ){
              console.log("kakao_res:" + kakao_res );
              response_json( kakao_res, '#result_box' );
          });
      }
      
    • sample.css

      • 오류 유형을 구분하기 위한 CSS 샘플입니다.
        .no_error {
          color:#000000;
          font-size:9pt;
        }
        .spell{
          color:#ee0000;
          font-size:11pt;
          font-weight: bold;
        }
        .space{
          color:#0000bb;
          font-size:11pt;
          font-weight: bold;
        }
        .space_spell{
          color:#00bb00;
          font-size:11pt;
          font-weight: bold;
        }
        .doubt{
          color:#bb00bb;
          font-size:11pt;
          font-weight: bold;
        }
        .error_msg{
          color:#ff0000;
          font-size:9pt;
        }
        #input_box{
          width: 400px;
          height: 200px;
          font-size:10pt;
        }
        #result_box{
          width: 400px;
          height: 200px;
          background-color:light-gray;
          position:absolute;
          border: 1px solid #d5d5d5;
        }
        #b_grammar_check{
          width:400px;
        }