46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
import cv2
|
|
import pytesseract
|
|
from pytesseract import Output
|
|
|
|
img_path = '/Volumes/ExSSD/Working/용공추 사진/2,3월 데이터/Pole/20250307_153821.jpg'
|
|
|
|
# 이미지 경로
|
|
img = cv2.imread(img_path)
|
|
|
|
# 전처리
|
|
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
|
|
blur = cv2.GaussianBlur(gray, (3, 3), 0)
|
|
thresh = cv2.adaptiveThreshold(
|
|
blur, 255,
|
|
cv2.ADAPTIVE_THRESH_MEAN_C,
|
|
cv2.THRESH_BINARY_INV,
|
|
11, 2
|
|
)
|
|
|
|
# OCR
|
|
custom_config = r'--oem 3 --psm 6'
|
|
data = pytesseract.image_to_data(
|
|
thresh, lang='kor+eng',
|
|
config=custom_config,
|
|
output_type=Output.DICT
|
|
)
|
|
|
|
# 보안등 아래 숫자 찾기
|
|
target_text = '보안등'
|
|
number_below = None
|
|
|
|
for i, word in enumerate(data['text']):
|
|
if word.strip() == target_text:
|
|
for j in range(i + 1, len(data['text'])):
|
|
if data['text'][j].strip().isdigit() and data['top'][j] > data['top'][i]:
|
|
number_below = data['text'][j].strip()
|
|
break
|
|
break
|
|
|
|
print(f"보안등 아래 숫자: {number_below}")
|
|
|
|
# 디버깅용: 전체 텍스트 출력
|
|
print("\n전체 인식 텍스트:")
|
|
for word in data['text']:
|
|
if word.strip():
|
|
print(word.strip()) |