Introduction


Overview

본 문서는 SELVAS AI의 필기 인식 솔루션인 Selvy Pen SDK for Text의 API 가이드입니다.
Selvy Pen SDK for Text는 손글씨로 문자를 입력하면 디지털 텍스트로 변환해 주는 솔루션입니다.
표준 C언어 기반의 라이브러리로써 Android, iOS, Tizen, Windows, Linux 등의 플랫폼을 지원하며, 그 외 플랫폼 및 Non-OS는 커스터마이징을 통해 지원이 가능합니다.

Specification

  • 전세계 73개 언어의 손글씨를 텍스트로 변환할 수 있습니다.
  • 남아공 공용어 (남아프리카)
    아랍어 (아랍에미리트 연합)
    아제르바이잔어 (아제르바이잔)
    벨로루시어 (벨라루스)
    불가리아어 (불가리아)
    벵골어 (방글라데시)
    카탈로니아어 (스페인)
    체코어 (체코)
    덴마크어 (덴마크)
    독일어(오스트리아)
    독일어 (독일)
    그리스어 (그리스)
    영어 (아메리칸 사모아)
    영어 (캐나다)
    영어 (영국)
    영어 (미국)
    스페인어 (스페인)
    스페인어 (맥시코)
    에스토니아어 (에스토니아)
    바스크어(스페인)
    페르시아어 (이란)
    핀란드어 (핀란드)
    피지어 (피지 공화국)
    프랑스어 (프랑스)
    아일랜드어 (아일랜드)
    갈리시아어 (스페인)
    히브리어 (이스라엘)
    힌디어 (인도)
    크로아티아어 (크로아티아)
    헝가리어 (헝가리)
    인도네시아어 (인도네시아)
    아이슬란드어 (아이슬란드)
    이탈리아어 (이탈리아)
    일본어 (일본)
    카자흐어 (키릴 문자, 카자흐스탄)
    한국어 (대한민국)
    리투아니아어 (리투아니아)
    라트비아어 (라트비아)
    마오리어 (뉴질랜드)
    마케도니아어 (마케도니아)
    몽골리아어 (몽골)
    말레이어 (말레이시아)
    노르웨이어 (보크말)(노르웨이)
    네덜란드어 (벨기에)
    네덜란드어 (네덜란드)
    노르웨이어 (니노르스크)(노르웨이)
    오로모어 (아판)(케냐)
    폴란드어 (폴란드)
    포르투갈어 (브라질)
    포르투갈어 (포르투갈)
    루마니아어 (루마니아)
    러시아어 (러시아)
    슬로바키아어 (슬로바키아)
    슬로베니아어 (슬로베니아)
    알바니아어 (알바니아)
    세르비아어 (세르비아)
    스와트어 (스와질란드)
    소토어 (남아프리카 공화국)
    스웨덴어 (스웨덴)
    스와힐리어 (케냐)
    태국어 (태국)
    통가어 (통가)
    터키어 (터키)
    타타르어 (러시아)
    타히티어 (프랑스령 타히티섬)
    우크라이나어 (우크라이나)
    우르두어 (파키스탄)
    베트남어 (베트남)
    호사어 (남아프리카 공화국)
    중국어 (중국)
    중국어 (홍콩, 중국 특별행정구)
    중국어 (대만)
    줄루어 (남아프리카)
  • 다양한 필기 방식의 손글씨를 인식할 수 있습니다.
  • 정자 쓰기 인식

    낱자 또는 여러 글자를 정자로 필기한 손글씨를 인식하는 방식

    Card image cap
    흘려 쓰기 인식

    여러 낱자 및 단어를 연속된 획으로 이어서 필기한 손글씨를 인식하는 방식

    Card image cap
    겹쳐 쓰기 인식

    겹쳐서 필기한 손글씨를 인식하는 방식으로 스마트 워치 같은 화면이 작은 장치에 적합

    Card image cap

Prerequisite

Touch Event

필기 입력 구현을 위해서는 다음과 같은 터치 이벤트 사양이 요구됩니다.

  • Touch Down : 펜을 터치 디바이스상에 처음 대는 순간 발생하는 이벤트
  • Touch Move : 펜을 터치 디바이스에서 떼지 않은 상태로 있을 경우 발생하는 이벤트
  • Touch Up : 펜을 터치 디바이스 상에서 떼는 순간 발생하는 이벤트
    Touch Down이 발생한 경우라면 항상 Touch Up이 발생하여야 합니다. 즉, 사용자가 필기 도중 터치 패드 영역을 벗어난 경우에도 드라이버에서는 Touch Up 이벤트를 발생시켜야 합니다.

Sampling Rate

'Sampling Rate’란 터치 디바이스에서 터치 이벤트를 체크하는 시간(or 양)을 말합니다.
필기 입력기 적용을 위해서는 보통 10~40ms(초당 25~100개의 터치 이벤트) 정도로 조정합니다.
유의할 점은 Sampling Rate가 40ms를 넘게 되면 필기한 모양이 자연스럽지 못하고 인식률도 떨어지게 됩니다. 대개의 경우 10~20ms를 권장합니다.

Delay time

인식 대기 시간은 필기 입력이 끝났다고 판단하는데 걸리는 시간입니다.
즉, 터치 디바이스에서 펜을 뗀 후 일정 시간 동안 필기 입력이 없으면, 사용자의 입력이 끝났다고 판단하고 인식 엔진을 호출하게 됩니다.
인식 대기 시간은 설정 메뉴를 통해 사용자가 적당한 값을 선택하도록 할 수도 있으며, 일반적으로 300~500ms의 값을 사용합니다.
물론, 인식 대기 시간을 활용하지 않고 버튼을 사용하여 시간에 관계없이 버튼을 클릭하면 바로 인식 엔진을 호출하도록 구현할 수도 있습니다.

Porting

Selvy Pen SDK for Text를 사용하기 위해 필요한 파일은 다음과 같습니다.

  • hdb/license_key/license.key는 플랫폼과 개발언어 상관없이 공통적으로 사용되는 파일입니다.
  • 그 외의 파일들은 플랫폼과 개발언어에 따라 파일 구성과 파일명이 다를 수 있습니다.
Selvy Pen SDK for Text - Windows/
│
├── hdb/
│   ├── ko_KR.hdb
│   ├── en_US.hdb
│   ├── de_DE.hdb
│   ├── es_ES.hdb
│   ├── zh_CN.hdb
│   └── ...
│
├── include/
│   ├── dhwr.h
│   ├── dhwr_define.h
│   ├── dhwr_gesture.h
│   ├── dhwr_ink.h
│   ├── dhwr_result.h
│   └── dhwr_setting.h
│
├── libs/
│   ├── win32_x86/
│   │   ├── libdhwr.dll
│   │   ├── libdhwr.lib
│   │   └── libdhwr-hwfs.dll
│   │
│   └── win32_x86_64/
│       ├── libdhwr.dll
│       ├── libdhwr.lib
│       └── libdhwr-hwfs.dll
│
├── license_key/
│   └── license.key
│
└── release_notes.md
  • hdb/
    인식엔진에서 사용하는 언어별 DB파일 입니다. ko_KR.hdb는 한국어(대한민국), en_US.hdb는 영어(미국) DB 파일입니다.
    파일명은 ISO 639-1의 코드명을 따릅니다.
    hdb 파일의 경로를 설정하는 API인 DHWRSetExternalResourcePath()를 호출 시 hdb 파일이 존재하는 디렉터리의 경로명를 파라미터로 입력합니다.
  • include/
    API명과 enum 값 등이 선언되어 있는 헤더 파일입니다.
    dhwr.h 파일 하나만 include하면 됩니다. (dhwr.h 내에서 나머지 헤더 파일을 include 합니다.)
  • libs/win32_x86/
    필기 인식 기능을 수행하는 32bit Main 엔진 라이브러리 파일입니다.
  • libs/win32_x86_64/
    필기 인식 기능을 수행하는 64bit Main 엔진 라이브러리 파일입니다.
  • libs/win32_xxx/libdhwr-hwfs.dll
    중국어 인식을 위한 라이브러리 파일입니다. 외부 라이브러리 경로를 설정하는 API인 DHWRSetExternalLibraryPath()를 호출 시 파일이 존재하는 디렉터리의 경로명를 파라미터로 입력합니다.
  • license_key/license.key
    Main 엔진을 초기화는 API인 DHWRCreate()를 호출 시 License 파일명이 포함된 경로명을 파라미터로 입력합니다.
    Warning
    라이브러리를 사용하기 위해서는 License 파일이 필요합니다.
    License 파일이 없으면 필기인식 기능은 동작하지 않습니다.
  • release_notes.md
    릴리즈 노트 파일입니다. SDK의 버전별 수정 이력이 정리되어 있습니다.
Selvy Pen SDK for Text - Windows/
│
├── hdb/
│   ├── ko_KR.hdb
│   ├── en_US.hdb
│   ├── de_DE.hdb
│   ├── es_ES.hdb
│   ├── zh_CN.hdb
│   └── ...
│
├── src/
│   └── Hwr.cs
│
├── libs/
│   ├── win32_x86/
│   │   ├── libdhwr.dll
│   │   ├── libdhwr.lib
│   │   └── libdhwr-hwfs.dll
│   │
│   └── win32_x86_64/
│       ├── libdhwr.dll
│       ├── libdhwr.lib
│       └── libdhwr-hwfs.dll
│
├── license_key/
│   └── license.key
│
└── release_notes.md
  • hdb/
    인식엔진에서 사용하는 언어별 DB파일 입니다. ko_KR.hdb는 한국어(대한민국), en_US.hdb는 영어(미국) DB 파일입니다.
    파일명은 ISO 639-1의 코드명을 따릅니다.
    hdb 파일의 경로를 설정하는 API인 SetExternalResourcePath()를 호출 시 hdb 파일이 존재하는 디렉터리의 경로명를 파라미터로 입력합니다.
  • src/Hwr.cs
    API명과 Error Code값 등이 정의되어 있는 C# 소스 파일입니다.
  • libs/win32_x86/
    필기 인식 기능을 수행하는 32bit Main 엔진 라이브러리 파일입니다.
  • libs/win32_x86_64/
    필기 인식 기능을 수행하는 64bit Main 엔진 라이브러리 파일입니다.
  • libs/win32_xxx/libdhwr-hwfs.dll
    중국어 인식을 위한 라이브러리 파일입니다. 외부 라이브러리 경로를 설정하는 API인 SetExternalLibraryPath()를 호출 시 파일이 존재하는 디렉터리의 경로명를 파라미터로 입력합니다.
  • license_key/license.key
    Main 엔진을 초기화는 API인 Create()를 호출 시 License 파일명이 포함된 경로명을 파라미터로 입력합니다.
    Warning
    라이브러리를 사용하기 위해서는 License 파일이 필요합니다.
    License 파일이 없으면 필기인식 기능은 동작하지 않습니다.
  • release_notes.md
    릴리즈 노트 파일입니다. SDK의 버전별 수정 이력이 정리되어 있습니다.
Selvy Pen SDK for Text - Android/
│
├── hdb/
│   ├── ko_KR.hdb
│   ├── en_US.hdb
│   ├── de_DE.hdb
│   ├── es_ES.hdb
│   ├── zh_CN.hdb
│   └── ...
│
├── src/
│   └── com/
│       └── diotek/
│           └── dhwr/
│               └── DHWR.java
│
├── libs/
│   ├── android_armeabi-v7a/
│   │   ├── libdhwr-base.so
│   │   ├── libdhwr-core.so
│   │   ├── libdhwr-hwfs.so
│   │   ├── libdhwr.so
│   │   └── libstlport_shared.so
│   │
│   └── android_arm64-v8a/
│       ├── libdhwr-base.so
│       ├── libdhwr-core.so
│       ├── libdhwr-hwfs.so
│       ├── libdhwr.so
│       └── libstlport_shared.so
│
└── license_key/
    └── license.key
  • hdb/
    인식엔진에서 사용하는 언어별 DB파일 입니다. ko_KR.hdb는 한국어(대한민국), en_US.hdb는 영어(미국) DB 파일입니다.
    파일명은 ISO 639-1의 코드명을 따릅니다.
    hdb 파일의 경로를 설정하는 API인 SetExternalResourcePath()를 호출 시 hdb 파일이 존재하는 디렉터리의 경로명를 파라미터로 입력합니다.
  • src/com/diotek/dhwr/DHWR.java
    API명과 Error Code값 등이 정의되어 있는 Java 소스 파일입니다.
  • libs/android_armeabi-v7a/
    필기 인식 기능을 수행하는 ARM 32bit CPU용 엔진 라이브러리 파일입니다.
  • libs/android_arm64-v8a/
    필기 인식 기능을 수행하는 ARM 64bit CPU용 엔진 라이브러리 파일입니다.
  • libs/android_xxx/libdhwr-hwfs.so
    중국어 인식을 위한 라이브러리 파일입니다. 외부 라이브러리 경로를 설정하는 API인 SetExternalLibraryPath()를 호출 시 파일이 존재하는 디렉터리의 경로명를 파라미터로 입력합니다.
  • license_key/license.key
    Main 엔진을 초기화는 API인 Create()를 호출 시 License 파일명이 포함된 경로명을 파라미터로 입력합니다.
    Warning
    라이브러리를 사용하기 위해서는 License 파일이 필요합니다.
    License 파일이 없으면 필기인식 기능은 동작하지 않습니다.
  • release_notes.md
    릴리즈 노트 파일입니다. SDK의 버전별 수정 이력이 정리되어 있습니다.