본문으로 건너뛰기
ezyPDF
문자 인식

OCR은 어떻게 글자를 읽나 — 원리와 한계

7분 분량

OCR의 정확도는 '어떤 문서를 넣느냐'가 절반 이상을 결정합니다. 원리를 알면 결과를 예측할 수 있습니다.

스캔 문서에는 글자가 없습니다

스캔한 PDF의 페이지는 한 장의 사진입니다. 사람 눈에는 글자로 보이지만 컴퓨터에게는 밝고 어두운 픽셀의 배열일 뿐이라, 검색도 복사도 되지 않습니다.

OCR(광학 문자 인식)은 이 픽셀 배열에서 '글자 모양'을 찾아 텍스트 데이터로 바꾸는 기술입니다. 결과 텍스트를 이미지 뒤에 투명하게 깔아 두면, 보기에는 원본 스캔 그대로인데 검색과 복사가 되는 '검색 가능한 PDF'가 됩니다.

인식은 몇 단계를 거칩니다

OCR은 대략 이런 순서로 동작합니다. 먼저 이미지를 정리하고(기울기 보정, 얼룩 제거), 페이지에서 글 영역과 그림 영역을 구분하고, 글 영역을 줄과 글자 단위로 쪼갠 뒤, 각 조각이 어떤 글자인지 판별합니다. 최신 엔진은 이 판별에 신경망을 쓰고, 앞뒤 문맥으로 애매한 글자를 보정합니다.

이 과정을 알면 실패 지점도 보입니다. 기울어진 스캔은 줄 분리 단계에서, 표는 영역 구분 단계에서, 흐린 글자는 판별 단계에서 문제가 생깁니다.

정확도를 좌우하는 것은 입력 품질입니다

같은 엔진이라도 입력에 따라 정확도가 극적으로 달라집니다. 300dpi 이상의 반듯한 흑백 인쇄물은 99% 이상 인식되지만, 저해상도 팩스, 구겨진 영수증, 손글씨가 섞인 서식은 인식률이 뚝 떨어집니다.

그래서 OCR 정확도를 높이는 가장 효과적인 방법은 엔진 교체가 아니라 입력 개선입니다. 300dpi 이상으로 스캔하고, 똑바로 놓고, 그림자 없이 밝게 찍는 것. 촬영본보다 스캔본이 유리한 이유도 조명과 각도가 일정하기 때문입니다.

한국어 인식의 특수성

한글은 자모가 조합된 음절 단위 문자라 글자 종류가 많고, 비슷한 모양의 글자 쌍(훈/훗, 대/태 등)이 인식 오류의 단골입니다. 국·한문 혼용 문서나 세로쓰기 옛 문서는 난도가 더 높습니다.

숫자와 영문이 섞인 문서에서는 0과 O, 1과 l(엘), 8과 B 같은 고전적인 혼동도 여전합니다. 계좌번호, 사업자번호, 금액처럼 숫자가 중요한 문서라면 OCR 결과의 숫자는 반드시 원본과 대조해야 합니다.

OCR 결과를 어디까지 믿을 것인가

'검색용'과 '전사용'을 구분하는 것이 실용적입니다. 문서 보관함에서 키워드로 파일을 찾는 용도라면 인식률 95%로도 충분히 유용합니다. 몇 단어가 틀려도 다른 단어로 검색되기 때문입니다.

반면 OCR 텍스트를 새 문서에 옮겨 쓰는 용도(계약 조항 인용, 표 데이터 이관)라면 이야기가 다릅니다. 5%의 오류는 스무 글자마다 하나가 틀린다는 뜻입니다. 이 경우 OCR은 타이핑을 줄여 주는 초벌 작업이고, 원본 대조 교정까지가 한 세트입니다.

브라우저에서 OCR이 어려운 이유

정확도 높은 OCR 엔진은 용량이 큰 인식 모델을 사용합니다. 서버 없이 브라우저 안에서만 처리하려면 이 모델 전체를 내려받아 실행해야 해서, 페이지 로딩과 처리 속도가 실용 수준을 벗어나기 쉽습니다. 한국어 모델은 문자 수가 많아 특히 무겁습니다.

이것이 서버 업로드 없는 브라우저 기반 도구들이 OCR 지원에 신중한 이유입니다. 파일을 서버로 보내는 OCR 서비스를 쓸 때는, 반대로 그 문서가 서버에 올라간다는 사실을 인지하고 민감 문서 여부를 판단하면 됩니다.