파이썬을 이용해 크롤링을 하다보면 이미지 파일에 있는 텍스트를 추출해야할 경우들이 있다.
텍스트 인식을 위한 오픈소스인 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
결론
완벽하지는 않지만, 유의미한 텍스트를 추출해서 사용할 수 있다.