한자 추출 및 인식하기

    보통 문자열을 인식하는 기능등은 많은 라이브러리나 정규표현식으로 쉽게 가져올 수 있지만 한자만 가지고 오는 방법은 별도의 작업을 수행해야 한다.

     

    사실 한자라는 것이 무궁무진한 글자이고 한글과 다르게 무한대로 확장이 가능한 글자라서 컴퓨터 영역에서는 표현하기가 상당히 까다로운데 이럴땐 유니코드를 이용해서 추출하거나 인식할 수 있다.

     

    한자 추출 및 인식하기


    Java 소스 코드

    public static void main( String[] args ) {
    	String text = "가불有 大韓民國";
    		
    	for(int i = 0; i < text.length(); i++) {
    		int charAt = (int)text.charAt(i);
    			
    		if((charAt >= '\u2E80' && charAt <= '\u2EFF') || 
    			(charAt >= '\u3400' && charAt <= '\u4DB5') ||
    			(charAt >= '\u4E00' && charAt <= '\u9FBF')) {
    			System.out.println(text.charAt(i) + " -> 한자");
    		} else {
    			System.out.println(text.charAt(i) + " -> 그외");
    		}
    	}
    }

     

    아스키코드의 범위에 따라서 한자는 다양한 조합들이 만들어 질 수 있다.

    구분  시작  끝
     한중일 부수 보충  2E80  2EFF
     한중일 통합 한자 확장 - A  3400  4DBF
     한중일 통합 한자  4E00  9FBF
     한중일 호환용 한자  F900  FAFF
     한중일 통합 한자 확장  20000  2A6DF
     한중일 호환용 한자 보충  2F800  2FA1F

     

    이와 같이 다양한 한자 구분이 존재할 수 있으나, 국내에서 사용하는 한자의 경우 대다수는 "한중일 통합 한자" 영역안에서 뽑게 되어 있다.

     

    위의 소스를 실행하면 아래와 같이 한자가 잘 인식되는 것을 알 수 있다.

    가 -> 그외
    불 -> 그외
    有 -> 한자
      -> 그외
    大 -> 한자
    韓 -> 한자
    民 -> 한자
    國 -> 한자

     

    이 포스팅에서는 Java 기반으로 설명했지만 아스키코드 혹은 유니코드를 가지고 인지를 하는 것이기 때문에 Python이나 C 등등 어느 언어로 개발을 하던간에 동일하다.

     

    댓글

    Designed by JB FACTORY