파이썬 AI 라이브러리 zAI 사용기 -문자인식 (1/5)

목차

    2018. 8. 20. 06:00

    파이썬은 다른 사람들이 만들어놓은 라이브러리를 가져다가 사용할 수 있다는 것이 큰 장점이다.
    지금도 많은 사람들이 다양한 라이브러리를 만들고 사용하고 있을 것이다. 오늘은 AI를 체함할 수 있는 라이브러리가 있어 사용해보고자 한다.

    오늘은 AI라이브러리의 하나인 zAI에 대해서 알아보고자 한다.


    제목


    zAI는 zero-effort Artificial Intelligence의 앞자를 딴 것으로 머신러닝이나 관련 기술 지식이 하나도 없어도 고수준의 AI작업들을 할 수 있게 해 주는 라이브러리라고 한다.


    깃허브

    (zAI Github 바로가기)


    라이브러리를 설치하는 방법은 여러가지가 있지만, pip install로는 설치가 되지 않는다.


    git을 활용해서, 아래와 같이 command창에 입력하면 설치가 된다.

    1. git clone https://github.com/BiometricVox/zAI

    2. cd zAI

    3. python setup.py install



    현재 zAI에서 사용할 수 있는 기능은 총 3가지이다. 

    1. 이미지에서 문자 인식하기

    2. 텍스트를 다른 언어로 변환하기

    3. 번역된 텍스트를 보이스로 바꾸기


    간략히 라이브러리를 알아보면, Google이나 MicroSoft의 AI API를 쉽게 사용할 수 있게 해주는 라이브러리이다. (로컬에서도 실행되는 게 있다고 하는데 확인은 못했다.) 그래서 실제 코드를 보면 API KEY를 입력해야 하는 부분이 있다. 그래도 5~6줄의 코드만으로 AI기술들을 활용해 볼 수 있다는 것은 큰 장점인 듯 하다.

    우선 이미지에서 문자 인식을 해 보았다. 사용방법은 간단했다. image를 zImage로 불러오고, ocr()함수를 호출하면 문자가 인식된다. 우선 영어 문장이 있는 이미지를 만들어 테스트 해 보았다.


    이미지

    (test 이미지)


    아래와 같은 이미지를 넣고, MicroSoft Azure의 Vision API를 실행해 보았다. MicroSoft 애저의 API KEY를 발급받는 방법이 궁금하다면 아래 포스팅을 참조해보자.
    (참조: 마이크로소프트 애저 가입과 API KEY 발급)


    zAI를 import 할 때 cv2를 import할 수 없다는 에러가 발생했다. 추가 패키지 설치가 필요한데, pip install opencv-python으로 패키지를 설치하면 해결이 된다.


    결과

    (추출한 텍스트)


    추출 결과는 조금 아쉽다. 문장을 여러 줄로 나눠서 그런지 위의 2줄 밖에 인식을 못하고, 'o'를 잘 인식하지 못했다. 구글 클라우드 API와 비교하고 싶었지만, 구글은 평가 기간이 종료되어 비용을 지불해야 사용이 가능해서 패스했다. ㅡㅜ


    한글을 테스트했는데, 에러가 발생한다. 마이크로소프트 API문제는 아닌 것 같고, 언어를 인식하는데서 문제가 발생하는 듯 하다. 참고로 테스트한 그림은 아래 그림이다.


    한글테스트

    (한글 테스트용 사진)


    에러 메시지는 아래와 같았다.

    1
    2
    3
    4
    5
    6
    7
    8
      File "/anaconda3/lib/python3.6/site-packages/zAI-0.1-py3.6.egg/zAI/zimage.py", line 313in ocr
        text = zText(text,lang)
      File "/anaconda3/lib/python3.6/site-packages/zAI-0.1-py3.6.egg/zAI/ztext.py", line 272in __init__
        self.__check_lang__(lang)
      File "/anaconda3/lib/python3.6/site-packages/zAI-0.1-py3.6.egg/zAI/ztext.py", line 303in __check_lang__
        raise ValueError('Invalid language provided. lang must be an ISO639-1 code. See https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for a complete list')
    ValueError: Invalid language provided. lang must be an ISO639-1 code. See https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for a complete list
     
    cs


    무슨 애기인지 정확히 알기는 어렵지만 언어 인식에서 문제가 있는 듯 하다. 실제로 위 문제를 해결하고 인식해 보니 결과가 좋지 않다. 한국어로 인식을 못하는 듯 하다.
    하지만 zAI라이브러리에서는 ocr()함수에 변수로 언어를 직접 지정해 줄 수는 없다. 위에 보이는 파일 중 zImage.py에서 언어를 지정해줄 수 있는 부분을 찾았다. 코드의 290행 쯤에 language를 unk로 지정한 부분을 찾을 수 있다. language를  ko로 수정하고 detectOrientaion은 false로 하자.


    1
    2
    3
    4
    5
    6
    7
    8
                params = urlencode({
                    #'language': 'unk',
                    #'detectOrientation': 'true',
                    # 언어를 지정해보자
                    'language''ko',
                    'detectOrientation''false',
                })
                
    cs

    (언어를 한글로 수정했다.)


    글자 인식한 결과는 아래와 같았다.


    한글결과

    (추출한 텍스트)


    AI를 너무 믿은 걸까. '떼니멸래츰'이라는 이상한 말로 인식을 했다. 확실히 한글보다는 영어를, 그리고 복잡한 이미보다는 단순한 이미지의 글자를 잘 인식했다. 실제로 아래 그림은 인식이 정확히 됐다. 구글 API는 어떤 결과를 가져올지 궁금해지는 부분이다. 


    추가테스트

    (테스트 이미지)


    추가결과

    (정확히 문자를 인식했다.)


    추천포스트


    오늘은 이렇게 AI라이브러리라고 하는 zAI를 사용해 보았다. zero-effort라고 하더니 사용하기는 참 쉬웠다. 다음에는 해당 라이브러리를 이용하여 텍스트를 다른 언어로 변환하는 작업을 해 보도록 하겠다.


    이미지 하나를 인식하는 코드는 아래와 같다. 별도의 설명이 필요 없을 만큼 직관적이고 사용하기 쉽다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    # coding=utf-8
     
    import zAI
    from zAI import zImage
     
     
    """
      "zAI_BACKEND": "local",
      "MICROSOFT_AZURE_TEXT_TRANSLATION_API_KEY": "",
      "MICROSOFT_AZURE_BING_VOICE_API_KEY": "",
      "MICROSOFT_AZURE_FACE_API_KEY": "",
      "GOOGLE_CLOUD_API_KEY": "",
      "MICROSOFT_AZURE_VISION_API_KEY": "",
      "MICROSOFT_AZURE_URL": ""
    """
     
    # zAI.utils.set_backend_key(key_name='GOOGLE_CLOUD_API_KEY',key_value='(자신의 API키를 넣는다)',save=True)
    zAI.utils.set_backend_key(key_name='MICROSOFT_AZURE_VISION_API_KEY',key_value='(자신의 API키를 넣는다)',save=True)
    zAI.utils.set_backend_key(key_name='MICROSOFT_AZURE_URL',key_value='japaneast.api.cognitive.microsoft.com',save=True)
     
     
    # 이미지 지정
    image = zImage('./images/test.jpg')
    image.display()
     
    # 이미지 인식
    text=image.ocr(backend='Microsoft')
    text.display()
     
    cs


    문자인식외에도 zAI로 이미지에서 얼굴을 인식하고, 사진의 특징들을 추출하는 작업들을 할 수 있다. 자세한 내용이 궁금하다면 아래 포스팅을 참조해보자.
    (참조: 파이썬 AI 라이브러리 zAI 사용기 -AI이미지 추출 (2/5) )


    오픈API를 사용하면 다양한 재미있는 일들을 해 볼 수 있다. 파이썬을 활용한 오픈API 사용이 궁금하다면 아래 글을 참조해보자.

    (참조: 오픈API를 활용한 사례는 어떤 것들이 있을까?)


    이 글 공유하기