유해이미지를 판별해야하는데
처음에는 야한이미지나 잔인한이미지를 판별하는 모델을 만들었었다.
만들고나서 어플 내에서 이전의 광고로 판단되어
삭제되었던 이미지를 가지고 와서 테스트를 해보았다.
하지만 실제로 어플에서는 그런 경우는 많이 없고 글자로 광고하는 경우가 많았다.
그래서 우선 글자로 광고하는 게시물을 잡는 로직을 거치려고 한다.
내가 생각한 방법은 먼저 OCR을 통해서 글자를 추출하고 글자가 있다면
형태소 분석을 통해 키워드를 추출하여 로직을 통해 광고성 글이 들어갔는지 판별하는 알고리즘이다.
내가 생각한 알고리즘인데 우선 유해이미지에 대해 정의하였고 무료 OCR를 먼저 사용해보았다.
1. tesseract
tesseract는 검색했을때 가장 먼저 나온 파이썬 OCR 라이브러리였다.
pip install pytesseract
먼저 테서렉트를 install하여 사용했는데 에러가 나왔다.
import pytesseract
import numpy as np
from PIL import Image
def image2text(filename):
image = np.array(Image.open(filename))
return pytesseract.image_to_string(image)
print(image2text('test.png'))
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.
왜 안될까 또 검색하여 보니 그냥 모듈만 pip로 다운로드하면 안되고 소프트웨어를 다운받아야 한다고 한다.
Home
Tesseract Open Source OCR Engine (main repository) - UB-Mannheim/tesseract
github.com
여기서 윈도우 버전을 다운로드받고 코드를 추가하여 다시 해보았다.
import numpy as np
import pytesseract
from PIL import Image
def image2text(filename):
image = np.array(Image.open(filename))
pytesseract.pytesseract.tesseract_cmd = R'C:\\Program Files\\Tesseract-OCR\\\tesseract'
return pytesseract.image_to_string(image)
print(image2text('test.png'))
"""
| ego 12) vipat &
hitpe://bem2 set
"""
그런데 한글도 전부 영어로 인식하고 인식률에도 문제가 있었다.
그래도 한글도 인식을 해봐야해서
return pytesseract.image_to_string(image, lang='kor')
lang을 추가하여서 실행해보았는데 이번에는 한글이 없다고 에러가 나왔다.
pytesseract.pytesseract.TesseractError: (1, 'Error opening data file C:\\Program Files\\Tesseract-OCR/tessdata/kor.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata"
directory. Failed loading language \'kor\' Error opening data file /home/debian/src/github/tesseract-ocr/tesseract/bin/ndebug/x86_64-w64-mingw32-5.0.0-alpha.20210506/usr/x86_64-w64-mingw32/share/tessdata/eng.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language \'eng\' Tesseract couldn\'t load any languages! Could not initialize tesseract.')
또 검색을 통해서 kor 버전이 없다고 알게 되었고, github에서 다운로드했다.
GitHub - tesseract-ocr/tessdata: Trained models with support for legacy and LSTM OCR engine
Trained models with support for legacy and LSTM OCR engine - GitHub - tesseract-ocr/tessdata: Trained models with support for legacy and LSTM OCR engine
github.com
다운로드 받고 kor 버전을 추가시켜주었다.
import numpy as np
import pytesseract
from PIL import Image
def image2text(filename):
image = np.array(Image.open(filename))
pytesseract.pytesseract.tesseract_cmd = R'C:\\Program Files\\Tesseract-OCR\\\tesseract'
return pytesseract.image_to_string(image, lang='kor+eng')
print(image2text('test.png'))
"""
. 멈계7무182 20여비스
1탕언여아
"""
진짜 힘들게 찾아가면서 했는데 제대로 나오는게 없어서 허탈했다.
그래서 다른 ocr을 찾아보았는데 easyocr이라는 라이브러리를 찾았다.
하지만 이건 버전문제와 기타 에러로 인해 사용하지 않았다.
2. NAVER CLOUD OCR
NAVER CLOUD PLATFORM
cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification
www.ncloud.com
네이버에서 테스트를 해보았더니 잘되서 사용해보아야겠다고 생각했다.
결론부터 말하면 굉장히 쓰기 귀찮게 만들어놓았고, API와 AI기능을 분리시켜놓아서
요금을 분산시켜놓아서 계산이 잘 안되게 해놓았다.
먼저 이용신청하기를 누르면 콘솔로 가진다.
너무 내용이 길어져서 (2)에서 계속 쓰려고 한다.
파이썬 각종 OCR 사용해보기 및 네이버 클라우드 AI OCR 사용법 (2)
파이썬 각종 OCR 사용해보기 및 네이버 클라우드 AI OCR 사용법 (1) 유해이미지를 판별해야하는데 처음에는 야한이미지나 잔인한이미지를 판별하는 모델을 만들었었다. 만들고나서 어플 내에서 이
beomcoder.tistory.com
'개발 > 파이썬 API' 카테고리의 다른 글
[디스코드 봇] 롤 전적검색기능 만들기 - 1 (0) | 2024.03.17 |
---|---|
파이썬 기상청 단기예보 API 사용해보고 활용하기 (0) | 2023.02.20 |
파이썬으로 기상청 일기예보와 날씨 API 사용하기 (0) | 2023.02.18 |
koGPT, openAI GPT3 사용해보기 (chat gpt3, dall-e) (0) | 2023.02.13 |
카카오 API 'Karlo', stable diffusion 사용해보기 (0) | 2023.02.12 |
댓글