본문 바로가기

IT/개발

tesseract OCR을 이용하여 이미지에서 문자 인식해보기(초간단)

반응형

Tesseract OCR (Optical Character Recognition)은 이미지에서 텍스트를 추출하는 데 사용되는 강력하고 오픈 소스 소프트웨어로 다양한 운영 체제에서 널리 사용되고 있습니다. 

 

TesseractHewlett-Packard (HP)에서 1985년에 개발이 시작되었으며, 2005년부터는 Google이 개발을 주도하고 있습니다

 

1. tesseract 특징 

 

- Tesseract100개 이상의 언어를 지원하며, 각 언어에 대한 트레이닝 데이터를 통해 인식 능력을 강화할 수 있습니다. 사용자는 특정 언어를 위한 트레이닝 데이터 파일을 다운로드하여 사용할 수 있습니다.

 

- 사용자는 자신만의 트레이닝 데이터를 생성하여 Tesseract의 인식 능력을 특정 언어나 글꼴에 맞게 조정할 수 있습니다. 이는 특히 특수 글꼴이나 형식을 많이 사용하는 문서에서 유용합니다.

 

- 다양한 이미지 형식 지원: TesseractJPEG, PNG, GIF, BMP 등 다양한 이미지 파일 형식을 지원합니다. 또한, TIFF 형식의 다중 페이지 이미지 파일을 직접 처리할 수 있는 능력도 가지고 있습니다.

 

- Linux, Windows, macOS 등 다양한 운영 체제에서 사용할 수 있습니다.

 

2. 사용준비 

파이선 패키지만 설치하면 안되고 먼저 몇가지 설치할 것들이 있습니다. 

여기서는 Rocky Linux 8을 기반에서 실행 했습니다. 

 

먼저 리눅스 패키지를 확인해보겠습니다. 

 

 

패키지 설치

yum install tesseract-devel

 

 

 

설치가 끝나고 확인해보면 영어 엔진만 기본적으로 들어 있습니다. 

 

 

데이터를 가져오기 위해서 gihub 사이트에 접속해서 한글 학습데이터를 다운 받아 testdata 위치에 복사해 넣습니다. 

 

https://github.com/tesseract-ocr/tessdata

 

GitHub - tesseract-ocr/tessdata: Trained models with fast variant of the "best" LSTM models + legacy models

Trained models with fast variant of the "best" LSTM models + legacy models - tesseract-ocr/tessdata

github.com

 

위 사이트에서 다음 kor 데이터를 받으시면 됩니다.

 

 

 

 

 

데이터 폴더에 복사합니다.

 

 

이제 리눅스 패키지는 준비되었으니 파이썬 패키지를 설치 합니다 .

 

pip3 install pytesseract

 

 

3. tesseract 사용해보기 

파이썬에서 사용법은 초간단합니다. 

이미지를 로드해서 언어모델만 지정하고 실행하면 결과를 볼수 있습니다. 

여기서는 동일한 이미지에 대해서 영어모델, 한글모델, 두가지모델 동시 수행 시 결과를 확인해 보겠습니다. 

 

import pytesseract
from PIL import Image
 
def tesseract_test() :
    # 이미지 로드
    #image = Image.open("./channels/10/20240508-182040.png")
    image = Image.open("./002.png")
   

    # 이미지에서 텍스트 추출
    text = pytesseract.image_to_string(image, lang='eng')  
    print(f"-----------\n{text}")
    text = pytesseract.image_to_string(image, lang='kor')  
    print(f"-----------\n{text}")
    text = pytesseract.image_to_string(image, lang='eng+kor')  
    print(f"-----------\n{text}")
 
if __name__ == '__main__' :
    tesseract_test()    
   

 

사용된 이미지는 다음과 같습니다. 

 

 

 

이제 각 모델의 결과를 각각 확인해 보겠습니다. 

 

-----------

ASH Ao R SiEE M

Dot B

-----------

연 압 뉴 스 7/'

비 만 오 면 사 라 지는 차 선 …… 신 공 법 도 입 으 로 해 결 될 까

기 사 원 문

할 서 승 택 기 자

~

13 에 디 7

공 법 도 입 으 로 해 결 될 까

-----------

. 신 공 법 도 입 으 로 해 결 될 까

디 과 @

 

 

 

ㅋ 영문은 몰라도 한글은 제생각엔 별로입니다. 

고딕같은 정자체가 저정도이고 디자인 글씨체는 더 잘 못찾네요 

(EasyOCR이 훨 나은것 같다는 생각......)

 

참고 
https://yongeekd01.tistory.com/184

 

easyOCR을 이용하여 이미지에서 문자 인식해보기(초간단)

EasyOCR은 이미지 내의 텍스트를 감지하고 인식하는 데 사용할 수 있는 오픈 소스 라이브러리입니다  Python 프로그래밍 언어로 작성되어 사용하기도 편하고 상당히 훌륭한 인식율을 보여줍니다.

yongeekd01.tistory.com

 

 

 

반응형