OCR 인식 검증 설계

AI · LLM4분 읽기

화면 자동화에서 OCR은 양날의 검입니다. API가 없는 프로그램에서 숫자를 읽어낼 수 있는 거의 유일한 수단이지만 OCR은 확률적입니다. 조명·해상도·폰트에 따라 8을 3으로, 0을 6으로 읽는 일이 실제로 일어납니다. 읽은 숫자가 곧 돈인 시스템이라면 "대체로 잘 읽는다"로는 부족합니다. 디지털 재화 수량을 화면에서 검증하는 무인 시스템을 만들며 정착시킨 OCR 인식 검증 설계를 정리합니다.

OCR을 믿지 말고, 검증 구조를 믿어라

출발점은 인식률을 올리는 것이 아니라 오인식을 걸러내는 구조를 만드는 것입니다. 어떤 OCR 엔진도 100%는 아니므로, 설계 질문은 "얼마나 잘 읽는가"가 아니라 "잘못 읽었을 때 시스템이 그걸 아는가"여야 합니다.

우리 시스템에서 잘못 읽기의 비용은 큽니다. 재화 수량을 잘못 확정하면 잘못된 거래가 실행됩니다. 그래서 검증을 세 겹으로 쌓았습니다.

1겹: 위치를 먼저 확정한다 (이미지 매칭)

숫자를 읽기 전에, 그 숫자가 정말 우리가 찾는 값인지부터 확정해야 합니다. 화면에는 온갖 숫자가 있습니다. 날짜, 개수, 다른 항목의 수량. 엉뚱한 숫자를 정확하게 읽는 것은 잘못 읽는 것보다 위험합니다.

그래서 첫 단계는 OCR이 아니라 이미지 템플릿 매칭입니다. 대상 재화의 아이콘 이미지를 미리 등록해 두고 화면에서 그 아이콘의 위치를 먼저 찾습니다. 화면 배율이 달라질 수 있어 여러 스케일로 매칭합니다. 아이콘이 확정되면, 그 아이콘과 같은 행에 있는 숫자만 읽기 대상으로 삼습니다.

이 순서가 핵심 규칙을 만듭니다. 아이콘이 없으면 읽지 않는다. 그리고 아이콘은 있는데 숫자를 읽지 못하면, 그 항목은 "수령 안전하지 않음"으로 판정해 처리를 멈춥니다. 위치 확정과 값 판독 중 하나라도 실패하면 진행하지 않는 보수적 AND 조건입니다.

2겹: 신뢰도 임계와 재시도

OCR 엔진은 판독 결과와 함께 신뢰도 점수를 돌려줍니다. 이 점수를 버리는 구현이 의외로 많은데, 우리는 임계값 0.85를 두고 그 아래의 판독은 결과가 아니라 실패로 취급했습니다. 실패하면 화면을 다시 캡처해 최대 3회까지 재시도합니다. 스크롤 애니메이션이나 로딩 중 캡처처럼 일시적인 요인은 재시도로 걸러집니다.

임계값은 정답이 있는 숫자가 아니라 트레이드오프입니다. 높이면 오인식은 줄지만 재시도와 사람 개입이 늘고 낮추면 그 반대입니다. 우리는 "잘못 확정하는 비용이 사람 확인 비용보다 훨씬 크다"는 사업 특성에 맞춰 높은 쪽을 택했습니다.

3겹: 그래도 애매하면 사람에게

세 번 재시도해도 판독이 안 되는 화면, 아이콘은 있는데 값이 비정상인 상황은 자동 판정하지 않습니다. 시스템이 증빙 화면을 캡처해 후보 값과 함께 운영자에게 보내고 운영자가 버튼으로 확정합니다. 이 승인 게이트의 설계는 RPA 사람 승인 게이트에서 자세히 다루는데, OCR 검증 관점에서 중요한 것은 "판정 불가"가 어엿한 정상 출력이라는 점입니다. 애매함을 억지로 이진 판정에 욱여넣는 순간 오인식이 사고가 됩니다.

장치거르는 것
위치 확정아이콘 템플릿 매칭(멀티스케일)엉뚱한 숫자를 읽는 오류
판독 검증신뢰도 임계 0.85 + 재시도 3회흐릿한 화면, 일시적 캡처 불량
사람 게이트증빙 + 후보 값 + 버튼 승인자동 판정이 불가능한 경계 사례

실무에서 배운 것들

첫째, 전처리보다 대상 축소가 효과적이었습니다. 화면 전체를 OCR에 넣고 후처리로 골라내는 것보다, 이미지 매칭으로 읽을 영역을 좁힌 뒤 그 영역만 판독하는 쪽이 정확도와 속도 모두 좋았습니다.

둘째, 실패 로그에 화면을 남겨야 합니다. 판독 실패 시점의 캡처가 있으면 원인(레이아웃 변경인지, 일시적 로딩인지)을 바로 알 수 있고 템플릿 갱신 같은 대응도 빨라집니다.

셋째, 화면 구조 변화는 OCR의 적입니다. 대상 프로그램이 업데이트되어 레이아웃이 바뀌면 템플릿 매칭이 먼저 실패하는데, 이는 오히려 안전장치로 동작합니다. 위치 확정이 실패하니 잘못 읽는 대신 멈추고 알림이 옵니다. 보수적 AND 조건의 가치가 여기서도 드러납니다.

이 검증 설계가 들어간 전체 시스템은 카카오톡 주문 자동화 사례에서 볼 수 있고 판정 이후의 처리·기록을 지키는 구조는 무인 자동화 안전장치 설계에서 이어집니다.

자주 묻는 질문

OCR 인식률을 높이는 것과 검증 구조, 뭐가 먼저인가요?

검증 구조가 먼저입니다. 인식률은 아무리 올려도 100%가 되지 않으므로, 남는 오인식을 시스템이 스스로 걸러내는 장치(신뢰도 임계, 재시도, 위치 확정, 사람 게이트)가 있어야 실사용이 가능합니다. 검증 구조가 있으면 인식률은 개입 빈도의 문제로 내려갑니다.

신뢰도 임계값은 어떻게 정하나요?

오판정 비용과 사람 개입 비용의 비율로 정합니다. 잘못 확정했을 때의 손실이 크면 임계를 높여 애매한 건을 전부 사람에게 넘기고 개입 인력이 부족하면 낮추는 대신 사후 검증을 강화합니다. 우리는 금전 처리 특성상 0.85로 높게 잡고 미달 시 재시도·승인으로 넘겼습니다.

화면의 숫자를 읽을 때 왜 이미지 매칭을 함께 쓰나요?

읽을 위치를 확정하기 위해서입니다. 화면에는 비슷한 숫자가 여럿 있어 엉뚱한 값을 정확히 읽는 사고가 OCR 오인식만큼 위험합니다. 기준 아이콘을 템플릿 매칭으로 먼저 찾고 같은 행의 숫자만 읽으면, "무엇의 값인가"가 구조적으로 보장됩니다.

대상 프로그램이 업데이트되면 어떻게 되나요?

템플릿 매칭이 먼저 실패하면서 시스템이 멈추고 알림이 옵니다. 잘못 읽고 진행하는 것이 아니라 못 읽고 정지하는 방향이라, 업데이트는 사고가 아니라 유지보수 이벤트가 됩니다. 실패 시점 캡처를 남겨 두면 템플릿 갱신도 빠르게 끝납니다.

#OCR#화면인식#검증설계#RPA

업무자동화 구축이 필요하신가요?

무료 상담 신청