Programming/python-computer vision

Google Tesseract 설치 및 실행 방법 | 이미지 속 텍스트 글자 인식하기 (Pytesseract OCR)

방황하는 데이터불도저 2022. 7. 27. 00:29

tesseract (github) : https://github.com/tesseract-ocr/tesseract

 

GitHub - tesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository)

Tesseract Open Source OCR Engine (main repository) - GitHub - tesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository)

github.com

tesseract (doc) : https://tesseract-ocr.github.io/tessdoc/Home.html

 

Tesseract User Manual

Tesseract documentation

tesseract-ocr.github.io

 

# tesseract-ocr 설치방법 (Installation)

 - linux 설치 커맨드

sudo apt install tesseract-ocr
sudo apt install libtesseract-dev

- https://tesseract-ocr.github.io/tessdoc/Installation.html

- Ubuntu User의 경우에는 아래의 과정을 더 해주어야 한다.

sudo vi /etc/apt/sources.list    # sources.list 파일 편집하기

i    # 편집모드로 진입

i를 눌러 편집모드로 진입한 후, 첫번째 줄의 텍스트 "deb http://archive.ubuntu.com/ubuntu bionic main" 아래줄에 아래 텍스트를 추가해준다. (bionic이 아닌 경우 본인의 버전에 맞는 이름을 입력해야한다. 나같은 경우는 focal)

deb http://archive.ubuntu.com/ubuntu bionic universe

 (* window 설치의 경우 이 페이지를 참고 - 설치 프로그램 다운로드)

 

# tesseract-ocr 실행방법 (Run)

 - CLI에서 실행하는 경우

# example 
tesseract img.png tesseract.txt -l eng [--oem ocrenginemode] [--psm pagesegmode] [configfiles...]

# help command
tesseract --help
# or
man tesseract

 

 - Python에서 실행하는 경우

 - pytesseract 라이브러리를 추가 설치해주어야 한다. (간단하게 pip으로 설치 가능)

https://pypi.org/project/pytesseract/

pip install pytesseract

 - 실행 시 에러가 발생하지 않는다면 설치 성공!

# 필요한 라이브러리들 불러오기
from pytesseract import Output
import pytesseract
import argparse
import imutils
import cv2

# image 불러오기
image = cv2.imread("./test3/image_180.JPG")
rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# pytessearct로 osd(Orientation and Script Detection) 결과보기
results = pytesseract.image_to_osd(rgb, output_type=Output.DICT)
print(results)

# Output
# {'page_num': 0, 'orientation': 180, 'rotate': 180, 'orientation_conf': 0.23, 'script': 'Latin', 'script_conf': 1.21}

 

 - 지원하는 언어 리스트

print(pytesseract.get_languages())
# Output
['afr', 'amh', 'ara', 'asm', 'aze', 'aze_cyrl', 'bel', 'ben', 'bod', 'bos', 'bre', 'bul', 'cat', 'ceb', 'ces', 'chi_sim', 'chi_sim_vert', 'chi_tra', 'chi_tra_vert', 'chr', 'cos', 'cym', 'dan', 'deu', 'div', 'dzo', 'ell', 'eng', 'enm', 'epo', 'equ', 'est', 'eus', 'fao', 'fas', 'fil', 'fin', 'fra', 'frk', 'frm', 'fry', 'gla', 'gle', 'glg', 'grc', 'guj', 'hat', 'heb', 'hin', 'hrv', 'hun', 'hye', 'iku', 'ind', 'isl', 'ita', 'ita_old', 'jav', 'jpn', 'jpn_vert', 'kan', 'kat', 'kat_old', 'kaz', 'khm', 'kir', 'kmr', 'kor', 'lao', 'lat', 'lav', 'lit', 'ltz', 'mal', 'mar', 'mkd', 'mlt', 'mon', 'mri', 'msa', 'mya', 'nep', 'nld', 'nor', 'oci', 'ori', 'osd', 'pan', 'pol', 'por', 'pus', 'que', 'ron', 'rus', 'san', 'sin', 'slk', 'slv', 'snd', 'spa', 'spa_old', 'sqi', 'srp', 'srp_latn', 'sun', 'swa', 'swe', 'syr', 'tam', 'tat', 'tel', 'tgk', 'tha', 'tir', 'ton', 'tur', 'uig', 'ukr', 'urd', 'uzb', 'uzb_cyrl', 'vie', 'yid', 'yor']

 

가장 중요한★

 - 이미지에서 텍스트 추출하기

# 텍스트 추출할 이미지 불러오기
import cv2
img = cv2.imread("./test/news.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# pytesseract_to_string 함수로 텍스트 추출
custom_config = r'--psm 4'
print(pytesseract.image_to_string(img, config=custom_config, lang='kor'))

▲사용한 이미지

▼ 추출 결과

[앵커]
경찰의 이태원 참사 눅장 대응이 도마 위에 오른 가운데, 경찰청이 경찰청장보다 대통령실에 먼저

상황을 보고한 것으로 확인됐습니다.

경찰청 특별수사본부는 출범 첫날 , 서울경찰청과 용산경찰서를 포함한 전방위 압수수색에

착수했습니다.

우철희 기자입니다.

[기자]

경찰정은 이태원 참사 나를 만에 윤희근 경찰정장이 첫 보고를 받은 시각을 공개했습니다.

다음 날 0시 14분, 참사가 발생한 지 약 2시간 뒤였습니다.

경찰청이 서울경찰청의 보고를 받은 시각은 0시 2분.

3분이 지난 0시 5분에 상급 기관인 대통령실에 보고했습니다.

경찰의 수장인 경찰정장이 정작 대통령실보다 보고를 9분 늦게 받은 겁니다.

대규모 참사가 벌어졌는데도 김광호 서울경찰정장은 윤 청장에게 사전에 별도로 보고하지 않은

것으로 확인됐습니다.

보고가 왜 늦어졌는지, 반드시 규명이 필요한 상황에서 경찰청 특별수사본부는 출범 첫날부터

강제수사에 돌입했습니다.

서울경찰청과 용산경찰서, 용산구청, 또, 서울교통공사 안전관리본부와 다산콜센터 등 전방위

압수수색이 이뤄졌습니다.