OCR 인식 텍스트 후처리 - 오류 정리 자동화 방법
OCR로 추출한 텍스트에서 발생하는 글자 오인식, 공백 오류, 줄바꿈 문제를 자동으로 수정하는 후처리 방법과 도구를 설명합니다.
Q.OCR로 추출한 텍스트 오류를 어떻게 자동으로 수정하나요?
OCR 후처리는 세 단계로 진행합니다. 1) 패턴 기반 수정: 0/O 혼동, l/1 혼동 등 자주 발생하는 오인식을 정규식으로 일괄 수정합니다. 2) 사전 기반 검증: 한국어 맞춤법 검사기나 사용자 정의 사전으로 단어 오류를 잡습니다. 3) 맥락 기반 수정: 앞뒤 문맥을 분석해 의미적으로 맞는 단어로 교정합니다.
OCR(광학 문자 인식)의 평균 문자 인식률은 최신 엔진 기준 95-98%다. 얼핏 높아 보이지만, A4 한 페이지(약 1,800자)를 처리하면 오류가 36-90자 발생한다는 의미다. 수백 페이지 문서라면 후처리 없이는 실용적이지 않다.
OCR 오인식 패턴 목록
한국어 문서에서 자주 발생하는 OCR 오인식 패턴:
| 원본 | 오인식 예 | 발생 원인 |
|---|---|---|
| 0 (숫자) | O (영문) | 폰트에 따라 형태 유사 |
| l (소문자 L) | 1 (숫자) | 세리프 폰트에서 빈번 |
| 가 | 기 | 해상도 낮을 때 발생 |
| 공백 없음 | 단어 붙음 | 단어 간격 좁은 폰트 |
| 줄바꿈 위치 오류 | 문장 중간 줄바꿈 | 컬럼 레이아웃 문서 |
자동 후처리 코드
python
import re
def clean_ocr_text(text):
# 숫자 컨텍스트에서 O→0 변환
text = re.sub(r'(?<=d)O(?=d)', '0', text)
# 단어 중간 불필요한 줄바꿈 제거
text = re.sub(r'(?<=[가-힣])
(?=[가-힣])', '', text)
# 연속 공백 정리
text = re.sub(r' +', ' ', text)
# 문장 끝 줄바꿈 정규화
text = re.sub(r'
{3,}', '
', text)
return text.strip()
한국어 특화 후처리
한국어는 조사가 앞 단어에 붙어야 자연스럽다. OCR이 "사랑 해요" 처럼 조사를 분리했다면:
python
# 조사 분리 오류 수정 패턴
particles = ['이', '가', '을', '를', '은', '는', '에', '의', '로', '으로']
for p in particles:
text = re.sub(f'([가-힣]) ({p})(?=[\s]|$)', f'\1{p}', text)
신뢰도 기반 수동 검토 우선순위
OCR 엔진은 각 문자마다 신뢰도 점수를 반환한다. Tesseract의 경우 image_to_data() 함수로 신뢰도를 확인하고, 60점 미만 문자만 수동 검토 대상으로 표시하는 방식이 효율적이다.
---
이 글은 AI가 공개 자료를 기반으로 작성했습니다. OCR 인식률은 문서 품질과 폰트에 따라 크게 달라집니다.