일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- error
- Linux
- unity
- Windows
- sample
- 영어
- nodejs
- AWS
- logstash
- Kibana
- JS
- API
- MySQL
- mariadb
- ChatGPT
- JavaScript
- 엘라스틱서치
- s3
- 구글
- 유니티
- MSSQL
- 설정
- Ai
- build
- ssh
- elasticsearch
- Git
- Python
- docker
- Today
- Total
가끔 보자, 하늘.
윈도우에서 pytesseract 로 이미지에서 숫자 추출하기 본문
pytesseract는 Google’s Tesseract-OCR Engine 용 래퍼입니다. (OCR : Optical Character Recognition, 광학 문자 인식)
이를 사용하여 이미지에서 숫자를 추출하는 과정을 정리해 보았습니다.
pytesseract는 pip로 설치만 하고 끝나는 것이 아닌, 환경변수와 Tesseract-OCR의 별도 빌드 과정이 필요합니다.
tesseract-ocr.github.io/tessdoc/Home.html 문서를 참고하여 빌드 후 설치합니다.
그리고 "고급 시스템 설정" -> "환경 변수" 에서 시스템 변수 혹은 사용자 변수에 "TESSDATA_PREFIX"라는 변수 이름으로 tesseract가 설치된 위치에 포함된 tessdata 의 전체 경로를 넣어준 후 시스템을 재시작합니다. 이는 윈도우에서는 pytesseract가 해당 시스템에 설치된 tesseract.exe를 실행하는 이때 언어 데이터를 TESSDATA_PREFIX에 설정된 경로에서 읽어오는데, 이를 위해 필요한 설정입니다.
추후 tessdata에는 github.com/tesseract-ocr/tessdata 에서 인식을 원하는 언어 데이터를 다운받아 삽입 후 사용할 수 있습니다.
설치 과정이 끝났다는 가정하에 관련 샘플 코드를 작성해 보겠습니다.
아래 샘플 코드는 화면의 특정 영역을 캡쳐하여 해당 영역에 포함된 텍스트 중 숫자만 추출하는 작업을 하는 코드입니다.
from PIL import ImageGrab # 화면의 특정 영역을 이미지로 캡쳐할 때 사용합니다.
from pytesseract import *
pytesseract.tesseract_cmd = "C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe" # 설치한 경로를 설정하세요.
def readDigitFromScreen(_rect):
img = ImageGrab.grab(_rect) # 화면 중 _rect 영역을 이미지로 캡쳐합니다.
digit=''
try:
text = image_to_string(img, lang='eng')
numlist = re.findall("\d", text) # 문자를 한 자씩 확인하며 숫자만을 뽑아옵니다. 한번에 뽑고 싶다면 "\d+" 옵션을 사용하세요.
for num in numlist:
digit += num # 숫자는 문자열 형태로 numlist에 저장되니 이를 digit에 묶어줍니다.
except TesseractNotFoundError: # Tesseract-OCR를 설치하지 않았다면 에러를 발생하고 종료합니다.
print("you need to install Tesseract-OCR on your system")
return int(digit) # digit에 string 형태로 정리된 문자를 integer로 변환하여 돌려줍니다.
최근 툴 제작에는 Python을 공부하면서 사용하고 있는데 C++로 제작할 때 생각하면 ... -0-;;; 편하긴 하네요. 편한만큼 조심해야 할 것들이 많긴 하지만요. :)
'개발 이야기 > DB, 데이터분석, AI' 카테고리의 다른 글
tensorflow gpu 가속 기능 사용 설정 (0) | 2021.01.12 |
---|---|
NodeJS에서 Google SpreadSheet에 접속하기 (0) | 2020.11.13 |
Python으로 제작한 자동 번역 및 음성 파일 생성툴 (0) | 2020.09.23 |
MSSQL RECOVERY 옵션 (0) | 2020.09.09 |
precision_threshold 이야기 (0) | 2020.06.03 |