필기인식이란?


필기인식은 손으로 쓴 글씨를 디지털 문자로 변환하는 기술입니다.
키보드 입력을 대체하여 필기 입력을 사용함으로써 컴퓨터나 스마트폰 등의 단말기에 익숙하지 않은 사람들도 별도의 학습 없이 쉽고 편리하게 문자를 입력 할 수 있습니다.

필기인식은 입력 데이터의 특성에 따라 온라인(online) 필기인식과 오프라인(offline) 필기인식으로 구분합니다.

  • 온라인 필기인식은 터치스크린이나 스타일러스 펜과 같은 입력 장치를 통해 필기되는 정보를 즉각적으로 인식하는 방식입니다.
  • 오프라인 필기인식은 스캐너나 카메라 등을 이용하여 문자가 쓰인 영상 문서를 입력 받아 인식하는 방식입니다.

Note
Selvy Handwriting SDK는 온라인 필기인식을 제공합니다.

온라인과 오프라인 필기인식은 입력 장치가 다르므로 인식기에 입력되는 데이터에도 차이가 있습니다. 온라인에서는 터치 센서(sensor)의 궤적에 따른 (x, y) 좌표가 시간 순서대로 입력되고, 오프라인에서는 스캐너나 카메라로부터 이차원 이미지가 입력됩니다.

온라인 필기인식은 터치 센서에 필기되는 순서에 따라 들어오는 (x, y) 좌표 벡터를 가지고 어떤 문자인지를 판단합니다.
입력된 좌표의 순서와 위치를 이용할 수 있으므로, 위치 정보만으로 인식을 수행하여야 하는 오프라인 인식보다 많은 정보를 이용할 수 있기 때문에 더 높은 인식 성능을 얻을 수 있습니다. 또한 이미지와는 달리 정보량도 적어 인식하는 데 필요한 계산양이 일반적으로 적은 편입니다.
이러한 입력 데이터에서 불필요한 변형을 줄이는 작업을 거쳐 이미 저장된 모델 패턴(model pattern)과 비교하여 가장 근접한 것을 인식된 결과로 반환 합니다.

온라인 필기인식 과정


온라인 필기인식 과정은 일반적으로 아래 그림과 같이 크게 전처리(pre-processing), 대분류(pre-classification), 상세분류(matching), 그리고 후처리(post-processing)의 네 단계로 나눌 수 있습니다.

Note
•  필기 모델 :  언어를 사용하는 사용자들의 필기 특성/습관 등이 모델링된 데이터
•  언어 모델 :  언어의 어휘정보, 단어 간 확률 등 언어적인 통계정보가 모델링된 데이터

전처리 (pre-processing)

전처리 단계에서는 필기의 다양한 변형을 가능한 줄여서 대분류와 상세분류에서 정확도를 높이기 위한 처리를 합니다. 사용자나 터치 센서에 따라서 동일한 글자를 필기하더라도 입력되는 데이터가 조금씩 달라질 수 있습니다.
사용자마다 필기하는 행태가 다르기 때문에 발생할 수 있는 변형으로는 삐침(hook), 필기 크기(size), 필기 속도(speed), 그리고 필기 기울기(skew) 등이 있습니다.

전처리에서는 이러한 변형을 판단하여 글자의 기울기를 보정하는 처리를 하게 됩니다. 필기하는 사람에 따른 문자의 변화들을 보정하여 대분류 단계나 상세분류 단계에 사용할 특징을 추출합니다.

필기인식 알고리즘(algorithm)과 별도로 필기 샘플의 모델링 단계가 필요합니다.
필기 모델링이란 기준이 되는 모델들을 구축하고 그와 비슷한 필기가 입력되었을 때 이와 비교해서 유사한 문자를 찾기 위한 단계입니다. 필기한 문자를 인식하기 위해서는 각 글자에 대한 모델이 있어야 합니다. 이 모델들이 있어야 상세분류 단계에서 모델과 비교해서 가장 유사한 모델의 문자 코드가 인식된 결과로 출력할 수 있습니다.
예를 들면 숫자 ‘8’의 경우 사람마다 쓰는 방식이 다르기 때문에 여러 가지 모델이 필요합니다. 많은 사람들의 필기 데이터를 수집할수록 다양한 필기 형태를 잘 인식하는 데 도움이 됩니다.

대분류 (pre-classification)

대분류 단계는 필기 모델에 포함된 샘플의 수가 많을 경우 상세분류 단계에 소요되는 시간을 줄이기 위한 단계로서 1~2 가지의 간단한 특징만을 이용하여 분류할 수 있습니다. 예를 들어 대분류 단계에 사용하는 특징으로는 획의 수나 시작점, 끝점 등을 사용할 수 있습니다.

상세분류 (matching)

상세 분류 단계는 필기를 인식하는 단계로 여러 가지 패턴 인식 알고리즘을 사용할 수 있습니다. 패턴 인식을 위한 알고리즘의 예로는 Linear Matching, Elastic Matching, Neural Network, HMM(Hidden Markov Model), SVM(Support Vector Machine) 등이 대표적입니다.

Note
Selvy Handwriting SDK는 Neural Network 중의 하나인 LSTM(Long Short-Term Memory Units)을 사용합니다.

후처리 (post-processing)

마지막으로 후처리 단계에서는 대상 언어의 언어적 정보를 모델링하여 언어모델을 구축한 후에 필기인식 결과에 나타날 수 있는 오류를 이러한 언어모델을 이용하여 수정하고 문맥에 맞게 교정하여 자연스러운 문장이 되도록 하는 단계입니다.
이러한 과정을 통해서 최종적으로 디지털 문자가 반환됩니다.

필기 방식에 따른 기술 난이도


필기 인식은 필기 방식에 따라 낱자쓰기(character), 정자쓰기(run on), 흘려쓰기(cursive), 겹쳐쓰기(overlapped)로 필기 대상을 나눌 수 있으며, 필기 방식에 따라서 기술 난이도가 달라집니다.

  • 낱자 인식은 낱자 단위로 구분된 박스에 한 번에 한 자씩만 낱자쓰기 한 후에 인식하는 방법으로 문자 분할이 필요 없어서 문자 분할 오류가 발생하지 않습니다. 응용 방법에 따라서 문자박스를 여러 개 구성하여 연속필기처럼 사용할 수 있습니다.
  • 정자 인식은 낱자 단위로 구분된 박스가 없이 여러 개의 글자를 연속적으로 정자쓰기 한 후에 인식하는 방법으로 문자분할이 필요하여 기술 난이도가 비교적 높습니다. 다만 정자체 인식은 글자 간에 한 획으로 이어쓰지 않아야 하는 제약조건이 있어서 획 단위로 문자 분할을 할 수 있는 정보가 제공되는 특징이 있습니다.
  • 흘림체 인식은 정자 인식과는 달리 글자 간에 획이 끊어져야 하는 제약 조건이 없는 흘려쓰기 방식으로 기술 난이도가 가장 높습니다. 이러한 흘려쓰기는 사용자에게 제약조건을 부과하지 않아서 가장 자연스러운 필기 방식입니다.
  • 겹쳐쓰기 인식은 같은 공간에 글자를 계속해서 겹쳐서 필기한 다음 인식하는 방식입니다. 스마트 워치, 차량용 조그 셔틀 등 필기 입력 공간이 협소한 장치에 적합한 필기 방식입니다.

정자 쓰기

Card image cap

흘려 쓰기

Card image cap

겹쳐 쓰기

Card image cap