한글 OCR 인식률이 들쭉날쭉한 이유
스크린샷 하나는 글자가 토씨 하나 안 틀리고 뽑히는데, 손으로 찍은 영수증 사진은 절반이 이상한 문자로 나오는 경험을 해본 적이 있을 겁니다. 같은 OCR 기능인데 결과 차이가 이렇게 큰 이유는 프로그램이 아니라 사진 자체와 한글이라는 문자 체계의 특성에 있습니다. 이 글에서는 OCR이 글자를 알아보는 원리와, 인식률을 갈라놓는 실제 조건들을 짚어봅니다.
OCR은 글자 모양을 대조해서 맞히는 작업입니다
OCR(광학 문자 인식)은 사진 속 글자의 형태를 미리 학습해 둔 수많은 글자 모양 패턴과 비교해, 가장 비슷한 문자로 바꿔주는 기술입니다. 즉 사람처럼 문맥을 이해하고 읽는 것이 아니라, 픽셀로 이루어진 모양 하나하나를 훈련된 패턴과 견주어 확률적으로 가장 그럴듯한 글자를 고르는 방식에 가깝습니다. 그래서 사진 속 글자 모양이 학습 데이터가 익힌 전형적인 모양과 가까울수록 잘 맞히고, 형태가 흐트러지거나 왜곡되면 엉뚱한 글자로 착각하기 쉬워집니다.
한글은 라틴 알파벳보다 구분해야 할 모양이 훨씬 많습니다
영어 알파벳은 대문자와 소문자를 합쳐도 몇십 종류의 고정된 모양만 구분하면 됩니다. 반면 한글은 자음과 모음이 초성·중성·종성 자리에 조합되어 한 글자(음절 블록)를 이루는 방식이라, 조합될 수 있는 경우의 수 자체가 훨씬 많습니다. 유니코드 표준에 등록된 현대 한글 음절만 해도 11,172자에 달합니다. OCR 엔진 입장에서는 알파벳보다 훨씬 많은 모양을 서로 구분해 내야 한다는 뜻입니다. 게다가 자음과 모음이 한 블록 안에 촘촘하게 붙어 있다 보니, 사진이 살짝만 흐려지거나 획이 뭉개져도 비슷하게 생긴 다른 글자와 헷갈릴 여지가 알파벳보다 큽니다.
사진 한 장의 상태가 결과를 좌우합니다
같은 문서를 찍어도 어떤 조건에서 촬영했는지에 따라 인식 결과가 크게 달라집니다.
- 해상도 — 글자 하나를 표현하는 픽셀 수가 부족하면 획의 세밀한 차이가 뭉개져 구분이 어려워집니다.
- 조명과 그림자 — 글자와 배경의 대비가 약해지면 어디까지가 글자 획이고 어디부터가 배경인지 경계가 애매해집니다.
- 기울기 — 문서를 비스듬히 찍으면 글자가 반듯한 모양이 아니라 비뚤어진 모양으로 찍혀, 학습된 정면 모양과 어긋나게 됩니다.
- 배경 — 글자 주변에 무늬나 다른 텍스트, 잡다한 요소가 섞이면 그것까지 글자로 오인하는 경우가 생깁니다.
인쇄체와 손글씨는 아예 다른 문제입니다
책, 문서, 영수증에 쓰인 인쇄체 글자는 정해진 폰트 모양을 그대로 찍어낸 것이라, 학습 데이터가 익힌 전형적인 모양과 형태가 거의 일치합니다. 반면 손글씨는 쓰는 사람마다 획의 순서, 곡률, 크기, 기울기가 제각각이라 같은 글자라도 형태가 매번 조금씩 다릅니다. 그래서 인쇄체 위주로 학습된 인식 엔진은 인쇄물에서는 안정적으로 동작하지만, 손글씨 앞에서는 정확도가 뚝 떨어지는 경향을 보입니다.
스크린샷이 유독 잘 뽑히는 이유
스크린샷은 카메라로 실물을 찍은 사진이 아니라, 화면에 이미 디지털로 그려져 있던 글자를 그대로 캡처한 이미지입니다. 그래서 손 떨림으로 인한 흔들림, 조명 반사, 기울어진 촬영 각도 같은 문제가 애초에 끼어들 여지가 없고, 글자의 해상도도 화면 그대로 유지됩니다. 같은 OCR 엔진이라도 카메라로 찍은 종이 문서보다 스크린샷 쪽에서 훨씬 안정적인 결과가 나오는 이유가 여기에 있습니다.
원리를 알면 촬영 습관이 바뀝니다
결국 인식률을 끌어올리는 방법은 프로그램을 바꾸는 것이 아니라, OCR 엔진이 좋아하는 조건에 가깝게 사진을 찍는 것입니다. 문서를 평평하게 놓고 정면에서, 그림자 없이, 글자가 작지 않게 찍는 것만으로도 결과가 눈에 띄게 달라집니다. paper&honey의 사진 글자 추출 도구로 위 조건들을 바꿔가며 직접 결과 차이를 비교해 보면 이 글에서 설명한 원리를 체감할 수 있습니다.
자주 묻는 질문
Q. 한글이 영어보다 OCR이 어려운 이유를 한마디로 하면요? 알파벳은 몇십 가지 고정된 모양만 구분하면 되지만, 한글은 자모가 조합된 음절 블록 수가 만 자를 넘어 구분해야 할 모양의 가짓수 자체가 훨씬 많기 때문입니다. 조합 구조 특성상 획도 더 촘촘하게 붙어 있어 조금만 흐려져도 다른 글자와 헷갈리기 쉽습니다.
Q. 전문 스캔 앱과 이런 웹 기반 OCR은 뭐가 다른가요? 스캔 전용 앱은 촬영 단계에서 문서 테두리를 자동으로 잡고 기울기를 바로잡거나 대비를 보정해 주는 전처리 기능을 갖춘 경우가 많습니다. 웹 기반 OCR 도구는 그런 보정 없이 올린 사진을 그대로 분석하는 방식이 기본이라, 촬영 자체의 품질이 결과에 더 직접적으로 반영됩니다.
Q. 글자 크기가 작으면 왜 더 안 되나요? 글자가 작게 찍히면 그 글자를 표현하는 픽셀 수도 함께 줄어듭니다. 한글처럼 획이 여러 개 겹쳐진 문자는 픽셀이 부족해지면 자모 사이 경계가 뭉개져 다른 글자와 구분하기가 더 어려워집니다.