EasyOCR 옵션
result = reader.readtext(
image, # 이미지 경로 또는 numpy 배열
paragraph=False, # 문단 단위로 묶을지 여부
contrast_ths=0.1, # 텍스트 대비 임계값 (0~1), 낮을수록 민감
adjust_contrast=0.5, # 대비 조정 강도 (0~1)
text_threshold=0.4, # 텍스트 후보 영역 필터링 임계값
low_text=0.3, # 텍스트로 간주할 최소 신뢰도 임계값
link_threshold=0.4, # 텍스트 박스 연결 임계값
canvas_size=2560, # 입력 이미지 리사이즈 기준 크기
mag_ratio=1.5, # 확대 비율 (작은 글자 인식에 도움)
slope_ths=0.1, # 기울기 임계값 (텍스트 각도 보정)
ycenter_ths=0.5, # 텍스트 라인 중앙 정렬 임계값
height_ths=0.5, # 텍스트 높이 차이 임계값
width_ths=0.8, # 텍스트 너비 차이 임계값
decoder='greedy', # 디코더 타입 ('greedy', 'beamsearch')
beamWidth=5, # 빔서치 폭 (beamsearch 시)
batch_size=1, # 배치 크기 (속도 조절)
workers=0 # 멀티스레드 워커 수 (0은 싱글 스레드)
)
mag_ratio와 canvas_size 변화를 주면서 인식 정확도를 비교해보자.
import easyocr
# 1. Reader 초기화 (한 번만)
reader = easyocr.Reader(['ko','en'], gpu=False)
# 2. 다양한 설정 조합
settings = [
{"mag_ratio": 1, "canvas_size": 2560},
{"mag_ratio": 2, "canvas_size": 2560},
{"mag_ratio": 4, "canvas_size": 2560},
{"mag_ratio": 4, "canvas_size": 4000},
]
# 3. 각 설정으로 OCR 수행
for i, setting in enumerate(settings, 1):
print(f"\n=== 설정 {i} ===")
print(f"mag_ratio={setting['mag_ratio']}, canvas_size={setting['canvas_size']}")
result = reader.readtext(
'2.jpeg',
mag_ratio=setting['mag_ratio'],
canvas_size=setting['canvas_size']
)
# 전체 결과 출력 (좌표, 텍스트, 신뢰도)
print("전체 결과:", result)
# 글자만 출력
print("\n인식된 텍스트:")
for box, text, prob in result:
print(text)
=== 설정 1 ===
mag_ratio=1, canvas_size=2560
인식된 텍스트:
NAVER
네이버한글날
삼 예뿐 한글 눈 고마문 한글
=== 설정 2 ===
mag_ratio=2, canvas_size=2560
인식된 텍스트:
NAVER
네이버 한글날
삼 데뿐 한글 눈 고마문 한글
=== 설정 3 ===
mag_ratio=4, canvas_size=2560
인식된 텍스트:
NAVER
네이버 한글날
삼 예뿐 한글 눈 고마운 한글
=== 설정 4 ===
mag_ratio=4, canvas_size=4000
인식된 텍스트:
NAVER
네이버 한글날
삼 예뿐 한글 눈 고마운 한글
아무리 해도 문 -> 운 으로 바뀐거 외엔 큰 변화는 없었다.
import easyocr
import itertools
import warnings
warnings.filterwarnings("ignore", category=UserWarning)
# 1. 비교할 이미지 하나
img_path = '2.jpeg' # 이미지 파일 경로
# 2. Reader 초기화
reader = easyocr.Reader(['ko','en'], gpu=False)
# 3. 옵션 후보값 정의
mag_ratios = [1.0, 2.0, 3.0, 4.0]
canvas_sizes = [1024, 2048, 3000, 4000]
contrast_ths_list = [0.05, 0.1, 0.2]
adjust_contrasts = [0.5, 0.7, 1.0]
text_thresholds = [0.3, 0.4]
low_texts = [0.2, 0.3]
slope_ths_list = [0.1, 0.2]
link_thresholds = [0.3, 0.4]
paragraphs = [True, False]
# 4. 옵션 조합 생성 (샘플링: 모든 옵션 조합)
option_combinations = list(itertools.product(
mag_ratios, canvas_sizes, contrast_ths_list, adjust_contrasts,
text_thresholds, low_texts, slope_ths_list, link_thresholds, paragraphs
))
# 5. 결과 저장용 리스트
results = []
# 6. 옵션 조합별 OCR 수행
for i, (mag_ratio, canvas_size, contrast_ths, adjust_contrast,
text_threshold, low_text, slope_ths, link_threshold, paragraph) in enumerate(option_combinations):
result = reader.readtext(
img_path,
mag_ratio=mag_ratio,
canvas_size=canvas_size,
contrast_ths=contrast_ths,
adjust_contrast=adjust_contrast,
text_threshold=text_threshold,
low_text=low_text,
slope_ths=slope_ths,
link_threshold=link_threshold,
paragraph=paragraph
)
# 7. OCR 결과에서 text만 안전하게 추출
texts = [item[1] if len(item) > 1 else '' for item in result]
results.append({
'option_index': i,
'mag_ratio': mag_ratio,
'canvas_size': canvas_size,
'contrast_ths': contrast_ths,
'adjust_contrast': adjust_contrast,
'text_threshold': text_threshold,
'low_text': low_text,
'slope_ths': slope_ths,
'link_threshold': link_threshold,
'paragraph': paragraph,
'texts': texts
})
# 8. 결과 출력
for res in results:
print(f"\n=== 옵션 조합 {res['option_index']} ===")
print(f"mag_ratio={res['mag_ratio']}, canvas_size={res['canvas_size']}, contrast_ths={res['contrast_ths']}, adjust_contrast={res['adjust_contrast']}, text_threshold={res['text_threshold']}, low_text={res['low_text']}, slope_ths={res['slope_ths']}, link_threshold={res['link_threshold']}, paragraph={res['paragraph']}")
print("인식된 텍스트:")
for t in res['texts']:
print(t)
Using CPU. Note: This module is much faster with a GPU.
=== 옵션 조합 0 ===
인식된 텍스트:
NAVER
네이버한글날 '참 예뿐 한글 눈 고마운 한글
=== 옵션 조합 1 ===
인식된 텍스트:
NAVER
네이버한글날 '참 예뿐 한글 눈 고마운 한글
=== 옵션 조합 2 ===
인식된 텍스트:
NAVER
네이버한글날 '참 예뿐 한글 눈 고마운 한글
=== 옵션 조합 3 ===
인식된 텍스트:
NAVER
네이버한글날 '참 예뿐 한글 눈 고마운 한글
=== 옵션 조합 4 ===
인식된 텍스트:
NAVER
네이버한글날 '참 예뿐 한글 눈 고마운 한글
=== 옵션 조합 5 ===
인식된 텍스트:
NAVER
네이버한글날 '참 예뿐 한글 눈 고마운 한글
=== 옵션 조합 6 ===
인식된 텍스트:
NAVER
네이버한글날 '참 예뿐 한글 눈 고마운 한글
=== 옵션 조합 7 ===
인식된 텍스트:
NAVER
네이버한글날 '참 예뿐 한글 눈 고마운 한글
=== 옵션 조합 8 ===
인식된 텍스트:
NAVER
네이버한글날 참 예뿐 한글 눈 고마운 한글 (( 얘
=== 옵션 조합 9 ===
인식된 텍스트:
NAVER
네이버한글날 참 예뿐 한글 눈 고마운 한글 (( 얘
=== 옵션 조합 10 ===
인식된 텍스트:
NAVER
네이버한글날 참 예뿐 한글 눈 고마운 한글 (( 얘
=== 옵션 조합 11 ===
인식된 텍스트:
NAVER
네이버한글날 참 예뿐 한글 눈 고마운 한글 (( 얘
=== 옵션 조합 12 ===
인식된 텍스트:
NAVER
네이버한글날 참 예뿐 한글 눈 고마운 한글 (( 얘
=== 옵션 조합 13 ===
인식된 텍스트:
NAVER
네이버한글날 참 예뿐 한글 눈 고마운 한글 (( 얘
=== 옵션 조합 14 ===
인식된 텍스트:
NAVER
네이버한글날 참 예뿐 한글 눈 고마운 한글 (( 얘
=== 옵션 조합 15 ===
인식된 텍스트:
NAVER
네이버한글날 참 예뿐 한글 눈 고마운 한글 (( 얘
'AI > easyOCR' 카테고리의 다른 글
| 5. EasyOCR github trainer (0) | 2025.11.17 |
|---|---|
| 4. EasyOCR github (1) | 2025.11.15 |
| 2. EasyOCR 단점. (0) | 2025.11.15 |
| 1. EasyOCR 시작하기. (0) | 2025.11.15 |
| colab + easyocr (0) | 2025.11.08 |