[python] Tesseract OCR

haremeat·2021년 11월 10일
0

Python

목록 보기
1/5
post-thumbnail

OCR(Optical Character Recognition)은 광학 문자 인식. 즉 2차원 이미지에서 텍스트를 추출해서 변환하는 것을 말한다. OCR은 정확한 작동을 위한 다음과 같은 하위 프로세스를 갖는다.

  • 이미지 사전 처리
  • 텍스트 위치 지정
  • 문자 분할
  • 문자 인식
  • 사후 처리

Tesseract는 Apache 2.0 라이센스로 제공되는 구글의 광학 문자 인식 엔진이다.
설치는 여기 (윈도우 기준)

tesseract 설치가 끝났다면
pytesseractPillow를 설치해야 한다.

  1. pytesseract 설치
pip install pytesseract
  1. Pillow 설치
pip install Pillow
  1. 기본 코드
import pytesseract
from PIL import Image

pytesseract.pytesseract.tesseract_cmd = r'tesseract 설치경로'

''안에 설치한 경로값을 넣으면 된다.
보통 아무 설정값도 건드리지 않았다면 C:\Program Files\Tesseract-OCR\tesseract.exe 요거일 것이다.

  1. 이미지 선정

나는 위 이미지로 테스트해볼 것이다.

  1. 최종 코드
import pytesseract
from PIL import Image

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

img = Image.open('이미지 경로')

# 사진 속 글자를 텍스트로 변환
result = pytesseract.image_to_string(img)
print(result)

테서렉트는 타밀어, 우즈벡어, 태국어 등등 웬만한 언어는 다 지원한다.
추출해야 하는 글자가 한글일 경우 pytesseract.image_to_string(img, lang='kor') 이렇게 lang='kor'를 붙여주면 된다.

  1. 실행결과
underweight
thick extellagvapeene vastness,
ickness immensity
~' spanfoyer, diameteg| ted
diophonous *fongey po pices one
bottleneck densewithered wiry) gangly_

slende , thick
scale size spread
poky Gi thin swath

acked / sweep
° extent \slice  breadthcrampedscope
narrow

a
taperexpansiveness_ skinny

Immenseness
streamlined

Um... 나름 글자 추출은 잘 되지만
너무 중구난방으로 글자가 모여있는 이미지를 선택한 것 같다.

위 이미지로 변경해서 추출해 보았다.

  • 결과
H23. 3308

원래 자동차 번호판 같은 걸 텍스트로 변환할 때 쓰이는 기술이라 그런지
번호판으로 변환하니 깔끔하게 잘 된다.

profile
버그와 함께하는 삶

0개의 댓글