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'))

▲사용한 이미지

▼ 추출 결과

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

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

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

착수했습니다.

우철희 기자입니다.

[기자]

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

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

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

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

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

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

것으로 확인됐습니다.

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

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

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

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