import os from PIL import Image, ImageDraw import pytesseract import cv2 import numpy as np # 현재 실행 중인 main.py의 경로를 기준으로 프로젝트 폴더 경로 가져오기 current_dir = os.path.dirname(os.path.abspath(__file__)) # Tesseract 실행 파일과 tessdata 폴더 경로 설정 tesseract_path = os.path.join(current_dir, 'src', 'Tesseract-OCR', 'tesseract.exe') tessdata_path = os.path.join(current_dir, 'src', 'Tesseract-OCR', 'tessdata') # Tesseract 경로 및 데이터 경로 설정 pytesseract.pytesseract.tesseract_cmd = tesseract_path os.environ['TESSDATA_PREFIX'] = tessdata_path # Tesseract 설정 (언어는 한글, 중국어, 영어 지원) # tessdata_dir_config = '--oem 1 -l kor+chi_sim+eng+num' # tessdata_dir 옵션 제거 tessdata_dir_config = '--oem 1 -l chi_sim' # tessdata_dir 옵션 제거 def show_ocr_results_with_boxes(pil_img, conf_threshold=40): # 텍스트 인식 및 바운딩 박스 가져오기 data = pytesseract.image_to_data(pil_img, config=tessdata_dir_config, output_type=pytesseract.Output.DICT) # 텍스트 인식된 이미지에 박스를 그리기 위해 PIL 이미지 복사 img_with_boxes = pil_img.copy() draw = ImageDraw.Draw(img_with_boxes) recognized_text_count = 0 for i in range(len(data['text'])): if int(data['conf'][i]) > conf_threshold: # OCR 신뢰도 필터링 (x, y, w, h) = (data['left'][i], data['top'][i], data['width'][i], data['height'][i]) recognized_text = data['text'][i] # 텍스트 인식된 영역에 박스 그리기 draw.rectangle([(x, y), (x + w, y + h)], outline="red", width=2) draw.text((x, y - 10), f"{recognized_text} ({data['conf'][i]})", fill="blue") # 인식된 텍스트와 신뢰도 표시 recognized_text_count += 1 # 결과 정보 출력 print(f"인식된 텍스트 개수: {recognized_text_count}") img_with_boxes.show() # 박스가 그려진 이미지 표시 # 예제 사용 if __name__ == "__main__": input_image = Image.open("1.jpg") # 이미지를 불러옵니다. inpainted_image = show_ocr_results_with_boxes(input_image) inpainted_image.show() # 결과 이미지를 표시하거나 저장