직접 실험·검증한 가이드
작성 paper&honey 운영자 게시 수정
한글 OCR 인식률이 들쭉날쭉한 이유
스크린샷은 글자가 토씨 하나 안 틀리고 뽑히는데, 손으로 찍은 영수증 사진은 절반이 이상한 문자로 나옵니다. 같은 OCR 기능인데 왜 이렇게 다를까요. 같은 OCR 기능인데 결과 차이가 이렇게 큰 이유는 프로그램이 아니라 사진 자체와 한글이라는 문자 체계의 특성에 있습니다. 이 글에서는 OCR이 글자를 알아보는 원리와, 인식률을 갈라놓는 실제 조건들을 짚어봅니다.
OCR은 글자 모양을 대조해서 맞히는 작업입니다
OCR(광학 문자 인식)은 사진 속 글자의 형태를 미리 학습해 둔 수많은 글자 모양 패턴과 비교해, 가장 비슷한 문자로 바꿔주는 기술입니다. 즉 사람처럼 문맥을 이해하고 읽는 것이 아니라, 픽셀로 이루어진 모양 하나하나를 훈련된 패턴과 견주어 확률적으로 가장 그럴듯한 글자를 고르는 방식에 가깝습니다. 그래서 사진 속 글자 모양이 학습 데이터가 익힌 전형적인 모양과 가까울수록 잘 맞히고, 형태가 흐트러지거나 왜곡되면 엉뚱한 글자로 착각하기 쉬워집니다.
한글은 라틴 알파벳보다 구분해야 할 모양이 훨씬 많습니다
영어 알파벳은 대문자와 소문자를 합쳐도 몇십 종류의 고정된 모양만 구분하면 됩니다. 반면 한글은 자음과 모음이 초성·중성·종성 자리에 조합되어 한 글자(음절 블록)를 이루는 방식이라, 조합될 수 있는 경우의 수 자체가 훨씬 많습니다. 유니코드 표준에 등록된 현대 한글 음절만 해도 11,172자에 달합니다. OCR 엔진 입장에서는 알파벳보다 훨씬 많은 모양을 서로 구분해 내야 한다는 뜻입니다. 게다가 자음과 모음이 한 블록 안에 촘촘하게 붙어 있다 보니, 사진이 살짝만 흐려지거나 획이 뭉개져도 비슷하게 생긴 다른 글자와 헷갈릴 여지가 알파벳보다 큽니다.
사진 한 장의 상태가 결과를 좌우합니다
같은 문서를 찍어도 어떤 조건에서 촬영했는지에 따라 인식 결과가 크게 달라집니다.
- 해상도 — 글자 하나를 표현하는 픽셀 수가 부족하면 획의 세밀한 차이가 뭉개져 구분이 어려워집니다.
- 초점(흔들림) — 손이 흔들리거나 초점이 안 맞아 사진이 흐려지면 획의 경계 자체가 사라집니다.
- 조명과 그림자 — 글자와 배경의 대비가 약해지면 어디까지가 글자 획이고 어디부터가 배경인지 경계가 애매해집니다.
- 기울기 — 문서를 비스듬히 찍으면 글자가 반듯한 모양이 아니라 비뚤어진 모양으로 찍힙니다.
그중 뭐가 진짜 결정적일까 — 조건별 인식률
네 가지가 다 영향을 준다지만, 실제로는 어느 것이 얼마나 치명적인지 궁금해서 직접 실험했습니다. 같은 한글 문구("회의록 2026년 3월 15일 / 안건 예산 승인의 건")를 이미지로 만든 뒤 조건을 하나씩 망가뜨려가며, 맥에 내장된 OCR 엔진(Vision)으로 인식시켜 원문과 얼마나 일치하는지를 정확도로 쟀습니다. 결과가 통념과 꽤 달랐습니다.
| 망가뜨린 조건 | 인식 정확도 |
|---|---|
| 기울기 15°·25°·35°·45° | 전부 100% |
| 저대비(거의 흰 바탕에 연회색 글자) | 100% |
| 글자 작아짐 — 큼 / 중간 | 100% / 95% |
| 글자 더 작아짐 — 작음 / 아주 작음 | 43% / 0%(빈 결과) |
| 흐림 — 살짝 흔들림 | 81% (오독: "15일→15월", "안건→안전") |
| 흐림 — 조금 더 흔들림 | 0% (아예 못 읽음) |
놀랍게도 기울기는 45도로 눕혀도, 대비는 글자가 눈에 겨우 보일 만큼 연해도 100%였습니다. 요즘 OCR 엔진은 이 두 가지를 알아서 잘 보정합니다. "똑바로 찍어라", "밝은 데서 찍어라"는 흔한 조언이 생각만큼 결정적이지 않다는 뜻입니다. 진짜 적은 둘이었습니다 — 흐림(흔들림)과 글자 크기. 특히 흐림은 벼랑처럼 무너집니다. 살짝 흔들린 사진은 81%로 "15일"을 "15월"로 오독하기 시작하고, 조금만 더 흔들리면 아예 한 글자도 못 읽고 빈 결과를 내놓습니다. 글자 크기도 임계선이 있어서, 어느 선 아래로 작아지면 95%에서 43%로, 다시 0%로 급락합니다. 그래서 인식률을 지키는 실전 요령은 각도나 조명을 신경 쓰기보다, 흔들리지 않게(초점 맞게) 찍고, 글자가 화면에서 충분히 크게 잡히도록 가까이서 찍는 것입니다. 이 둘만 지키면 웬만한 조건은 엔진이 알아서 해결합니다.
한 가지 전제가 있습니다. 위 수치는 맥 내장 Vision 엔진 기준입니다. 이 엔진이 유독 강해서 기울기·대비에 끄떡없었던 것이고, 브라우저에서 도는 웹 OCR(이 사이트의 사진 글자 추출 도구를 포함해 Tesseract 계열)은 이보다 가벼운 만큼 기울기·대비에도 더 민감합니다. 그러니 "정면·선명·크게"라는 원칙은 어떤 엔진을 쓰든 지킬수록 안전하고, 특히 흐림과 작은 글자는 어느 엔진에서도 치명적이라는 결론은 어느 엔진에서든 변하지 않습니다.
인쇄체와 손글씨는 아예 다른 문제입니다
책, 문서, 영수증에 쓰인 인쇄체 글자는 정해진 폰트 모양을 그대로 찍어낸 것이라, 학습 데이터가 익힌 전형적인 모양과 형태가 거의 일치합니다. 반면 손글씨는 쓰는 사람마다 획의 순서, 곡률, 크기, 기울기가 제각각이라 같은 글자라도 형태가 매번 조금씩 다릅니다. 그래서 인쇄체 위주로 학습된 인식 엔진은 인쇄물에서는 안정적으로 동작하지만, 손글씨 앞에서는 정확도가 뚝 떨어지는 경향을 보입니다.
스크린샷이 유독 잘 뽑히는 이유
스크린샷은 카메라로 실물을 찍은 사진이 아니라, 화면에 이미 디지털로 그려져 있던 글자를 그대로 캡처한 이미지입니다. 그래서 손 떨림으로 인한 흔들림, 조명 반사, 기울어진 촬영 각도 같은 문제가 애초에 끼어들 여지가 없고, 글자의 해상도도 화면 그대로 유지됩니다. 같은 OCR 엔진이라도 카메라로 찍은 종이 문서보다 스크린샷 쪽에서 훨씬 안정적인 결과가 나오는 이유가 여기에 있습니다.
원리를 알면 촬영 습관이 바뀝니다
결국 인식률을 끌어올리는 방법은 프로그램을 바꾸는 것이 아니라, OCR 엔진이 좋아하는 조건에 가깝게 사진을 찍는 것입니다. 앞의 실측대로 우선순위를 두면 됩니다 — 무엇보다 흔들리지 않게 초점을 맞추고, 글자가 화면에서 충분히 크게 잡히도록 가까이서 찍는 것입니다. 각도나 조명은 그다음이라, 이 둘만 지켜도 결과가 눈에 띄게 달라집니다. paper&honey의 사진 글자 추출 도구로 위 조건들을 바꿔가며 직접 결과 차이를 비교해 보면 이 글에서 설명한 원리를 체감할 수 있습니다.
자주 묻는 질문
Q. 한글이 영어보다 OCR이 어려운 이유를 한마디로 하면요? 알파벳은 몇십 가지 고정된 모양만 구분하면 되지만, 한글은 자모가 조합된 음절 블록 수가 만 자를 넘어 구분해야 할 모양의 가짓수 자체가 훨씬 많기 때문입니다. 조합 구조 특성상 획도 더 촘촘하게 붙어 있어 조금만 흐려져도 다른 글자와 헷갈리기 쉽습니다.
Q. 전문 스캔 앱과 이런 웹 기반 OCR은 뭐가 다른가요? 스캔 전용 앱은 촬영 단계에서 문서 테두리를 자동으로 잡고 기울기를 바로잡거나 대비를 보정해 주는 전처리 기능을 갖춘 경우가 많습니다. 웹 기반 OCR 도구는 그런 보정 없이 올린 사진을 그대로 분석하는 방식이 기본이라, 촬영 자체의 품질이 결과에 더 직접적으로 반영됩니다.
Q. 글자 크기가 작으면 왜 더 안 되나요? 글자가 작게 찍히면 그 글자를 표현하는 픽셀 수도 함께 줄어듭니다. 한글처럼 획이 여러 개 겹쳐진 문자는 픽셀이 부족해지면 자모 사이 경계가 뭉개져 다른 글자와 구분하기가 더 어려워집니다.