귀찮아서 자동화해! ~ 이미지 자동 로딩 실패 편 ~

안녕하세요!

이번 연시의 목표 입안을 위해 가치관 리스트를 활용하고 싶지만 질문 항목이 이미지만 쏟아지는 것이 토할 만큼 귀찮은...
그래서 문자의 추출을 자동으로 가고 싶다고 생각합니다.

실행 환경

mac
python3
환경 anaconda

이미지를 로드하는 방법



・PIL(pillow)
· OpenCV
· scikit-image

가장 많이 사용되는 것이 PLI 같다.
pillow는 파이썬으로 대표적인 이미지 처리 라이브러리로, 이미지의 리사이즈나 그리기를 쉽게 할 수 있습니다.
form PIL import Image,ImageFilter
im = Image.open('画像ファイル名')

텍스트로 변환하는 방법



・화상을 텍스트로 변환하는 기술을 OCR(Optical Character Recoding)이라고 한다.
· OCR은 OCR 엔진이라는 소프트웨어를 사용하여 이미지 데이터에서 텍스트를 추출합니다.
· 이번에는 오픈 소스 Tesseract OCR 사용

· 또한 Python에서 OCR 엔진을 사용할 수 있도록 하는 대표적인 라이브러리가 PyOCR입니다.
txt = tool.iamge_to_string(
    Image.open('画像ファイル名')
    lang=言語名,
    builder=pyocr.builders.TextBuilder()
)

실제로 PNG 이미지를 텍스트로 변환해보세요


brew install tesseract

pyocr의 일본어 학습 모델 취득을 위해 wget도 설치
brew install wget

kr.traineddata 얻기
wget https://github.com/tesseract-ocr/tessdata/raw/4.00/jpn.traineddata
mv jpn.traineddata /usr/local/Cellar/tesseract/4.1.1/share/tessdata

※Path가 존재하지 않는 경우, 이하의 커멘드로 tesseract의 path와 버젼 확인
which tessaract
tessaract -v

· 코드 실행
from PIL import Image
import sys

import pyocr
import pyocr.builders

tools = pyocr.get_available_tools()
if len(tools) == 0:
    print("No OCR tool found")
    sys.exit(1)

# The tools are returned in the recommended order of usage
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))
# Ex: Will use tool 'libtesseract'

langs = tool.get_available_languages()
print("Available languages: %s" % ", ".join(langs))
lang = 'jpn'
print("Will use lang '%s'" % (lang))
# Ex: Will use lang 'fra'
# Note that languages are NOT sorted in any way. Please refer
# to the system locale settings for the default language
# to use.

txt = tool.image_to_string(
    Image.open('target.png'),
    lang=lang,
    builder=pyocr.builders.TextBuilder()
)
# txt is a Python string

print(txt)


변환 소스


변환 결과
python3 Image-To-Text.py
Will use tool 'Tesseract (sh)'
Available languages: eng, jpn, osd, snum
Will use lang 'jpn'
       ⑧②        

⑧②            

          a  

I          M   

BAMN    

H            fW  

    Au  ⑧②  Aea

        D      

HR&⑦⑥④    a 

iams aaliitcdiits

           $   

EROEREfaiR ezRtd

 @    B   igu   o

   i   Ma

①⑧f          

       M   

GEiESimEreiirimeikid

IR    W        

       aREe

⑧②          

IIN   M  00      aa
    BA         

       0  i  k   
       h 

ERte itha taiii

Reaeimtiisaci

R    0  mmWk   

N   f       

IR  Mi+S     

       

⑧②0  A     

⑧②            B   

⑧②             

R  R   M 

   IM     

HA    z   

      E    

       W    

   R    $  

  M         m   

H&lcmtg  A    $  

⑧②0       0 

끔찍하네요...
이미지의 화질도 있나요, 아니면 라이브러리 문제일까요, 어쨌든 읽을 수 없습니다 ...

(추가) Cloud Vision API는 단연 정밀도가 좋습니다 ...





Google의 API, 과연 정밀도가 좋네요.
시간을 찾아 다시 구현하고 싶습니다.

참고



h tps://아이누누. 코 m / 카치칸 - st /
htps : // 코 m / 케이크 t / ms / 7d424000c8d35 에 5146 에 4
htps // 푹신푹신 ぃふぇしft. 코 m / 테세라 ct_o cr
h tps : // 음 b. 네 t /에서 v / 마 콧 w 게 t こんまん d ん s たる l /
h tps : // c ぉ d. 오, ぇ. 코m/ゔぃ시온/? hl = 그럼

좋은 웹페이지 즐겨찾기