alpaka206

OCR에서 특수기호를 패턴으로 인식하게 된 이유

date
Jun 1, 2025
slug
ocr-pattern-based-special-character-fix
author
status
Public
tags
펑타이그레이터차이나
summary
OCR에서 누락되는 특수기호 문제를 JPEG 패턴화 개념에서 착안한 후처리 방식으로 해결한 경험 공유
type
Post
thumbnail
category
✍️ Study
updatedAt
Jul 6, 2025 05:08 PM

배경

프론트엔드 개발자로 참여한 OCR 기반 검증 프로젝트에서, 후처리 로직 개선과 검증 자동화도 일부 개발하게 되었습니다. 이 과정에서 예상치 못한 특수기호 인식 오류 문제를 마주했습니다.
바로 +, -, =, * 같은 특수기호가 텍스트 맨 앞에 있을 때 OCR이 이를 인식하지 못하는 현상이었습니다.
  • 프로젝트 환경: GPU 없이 CPU만 사용 가능한 온프레미스 서버
  • 사용 모델: PaddleOCR + EasyOCR
  • 제약사항: 모델 재학습 불가, 이미지 전처리/후처리만 활용 가능

인사이트의 출처: "JPEG은 왜 디지털 풍화가 생길까?"

코딩애플님의 유튜브 영상을 보던 중 힌트를 얻었습니다.
JPEG은 이미지를 8×8 블록 단위로 나눈 뒤 DCT(이산 코사인 변환)을 적용하고 고주파 정보를 제거해 시각적으로 손실이 적은 정보만 남깁니다. 마지막으로 양자화(quantization)를 통해 이미지를 패턴처럼 정제해 저장하죠.
이 설명을 들으며 문득 이런 생각이 들었습니다.
"OCR이 놓친 기호도, 시각적인 패턴 기반 인식으로 복구할 수 있지 않을까?"

문제 상황

  • OCR 결과에서 특정 문장의 시작 부분이 비정상적으로 잘리거나 누락됨
  • 특히 , 특수기호앞에 올 경우 더 자주 발생
  • OCR 결과는 example인데 실제 이미지는 - example
이 때, 지정된 바운딩 박스 좌표는 그대로 주어지기 때문에 OCR이 인식하지 못한 범위의 픽셀을 직접 판별할 수 있다는 점에 주목했습니다.

해결 방법: 패턴 기반 후처리 방식 도입

핵심 아이디어

OCR 실패 영역의 이미지를 직접 분석하여 저장된 특수기호 패턴과 유사도를 비교 → 보정 삽입

적용 방법

  1. 기호 패턴 템플릿화
      • 자주 사용되는 특수기호 (+, -, =, *)를 정제된 이미지 형태로 저장
      • 각 기호 이미지를 벡터화하여 패턴 템플릿으로 구성
  1. OCR 후처리 로직
      • OCR 결과가 문자열 앞부분을 누락했을 경우, 해당 바운딩 박스의 좌측 픽셀 패턴을 추출
      • 템플릿과 90% 이상 유사한 경우, 해당 기호로 보정 삽입

예시

[원본 이미지] = formula [OCR 결과] formula [패턴 유사도] = 템플릿과 93% 일치 [최종 보정] = formula

이 방식의 장점

  • 기존 OCR이 인식하지 못한 특수기호를 복원 가능
  • JPEG 등 손실 이미지에서도 높은 인식 정확도 유지
  • 모델 수정 없이, 단순 후처리만으로 문제 해결 가능
  • 휴리스틱 기반이므로 추가 연산 부담이 적음

얻은 인사이트

기존에는 OCR 실패를 단순히 다음과 같이 해석하곤 했습니다:
  • "노이즈가 많아서 그런가?"
  • "해상도가 낮아서 그런가?"
하지만 이 경험을 통해 다음과 같은 새로운 관점을 얻을 수 있었습니다:
이미지 속 시각 정보도 패턴 단위로 해석하면 텍스트처럼 다룰 수 있다.
OCR이 놓친 영역도 시각적 패턴을 통해 복구가 가능하다.

마무리하며

이번 시도는 단순한 정확도 개선을 넘어서 이미지 인식 문제를 어떻게 “패턴”으로 해결할 수 있을까에 대한 탐구였습니다.
프론트엔드 개발자 입장에서, 모델 수정 없이 후처리와 UI 결과 정확도를 높이는 방식에 집중했던 경험이었습니다.
특히, 영상에서 얻은 개념을 실무에 녹여 실질적인 개선을 이끈 사례로 남았고, 이런 아이디에이션 중심의 협업 방식을 앞으로도 적극 이어가고 싶습니다.