AutoPercenty3/test/inpaint.py

52 lines
2.2 KiB
Python

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() # 결과 이미지를 표시하거나 저장