본문 바로가기

데이터크롤링

파이썬을 이용한 이미지에서 텍스트 추출(Deep learning, python, pytesseract, PIL, mac, OCR 라이브러리)

파이썬을 이용해 크롤링을 하다보면 이미지 파일에 있는 텍스트를 추출해야할 경우들이 있다. 

텍스트 인식을 위한 오픈소스인 Tesseract과 파이썬을 이용해서 이미지의 텍스트를 추출해보았다.

from PIL import Image
from pytesseract import *

class Test:
    def __init__(self, path:str):
        test_img_path = path
        test_img = Image.open(test_img_path)
        img_txt = image_to_string(test_img, lang='eng+kor', config='--psm 1 -c preserve_interword_spaces=1')

        with open('test_sample(2).txt', 'w', encoding='utf-8-sig') as tx:
            tx.write(img_txt)


if __name__ == "__main__":
    test = Test(path="test_img.jpeg")

처음에는 파이썬의 라이브러리만 설치하고 사용하면 되는 줄 알았는데, 프로그램을 설치하지 않으면 TesseractNotFoundError 가 난다. 맥 사용자라면 brew를 이용해 아래와 같이 터미널에서 간단하게 설치 후 실행하면, 이미지의 텍스트를 추출할 수 있다. 

> brew install tesseract

> brew install tesseract-lang

 

lang 옵션에서 인식하고 싶은 언어를 입력하면 그 언어에 맞게 텍스트를 인식하는데, 이 때 영어와 한국어 둘다 추출하고 싶다면, 'eng+kor' 옵션을 주면  된다. 

 

kor 옵션만 줬을 경우

소형견
무게
~ 49
~ 69

~8&90

중형견

무
무:

~ 489
~ 6&9
~ 889
~1089

eng+kor 옵션을 줬을 경우 

294
무게
~ 4Kg
~ 6Kg

~8Kg

중형견

무
무:

~ 4Kkg
~ 6Kg
~ 8Kg
~10Kg

 

결론

완벽하지는 않지만, 유의미한 텍스트를 추출해서 사용할 수 있다.