파이썬 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를 활용한 사례는 어떤 것들이 있을까?)


이 글 공유하기


댓글()
  1. ㅊㅊ 2019.02.11 15:45 댓글주소  수정/삭제  댓글쓰기

    문자인식을 하더라도 전처리 작업을 하면 인식 잘해요 ㅎㅎ 이진화 하고 필터좀 걸다보면 ...