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개 언어의 손글씨를 텍스트로 변환할 수 있습니다.
- 다양한 필기 방식의 손글씨를 인식할 수 있습니다.
정자 쓰기 인식
낱자 또는 여러 글자를 정자로 필기한 손글씨를 인식하는 방식
흘려 쓰기 인식
여러 낱자 및 단어를 연속된 획으로 이어서 필기한 손글씨를 인식하는 방식
겹쳐 쓰기 인식
겹쳐서 필기한 손글씨를 인식하는 방식으로 스마트 워치 같은 화면이 작은 장치에 적합
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
는 플랫폼과 개발언어 상관없이 공통적으로 사용되는 파일입니다.- 그 외의 파일들은 플랫폼과 개발언어에 따라 파일 구성과 파일명이 다를 수 있습니다.
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의 버전별 수정 이력이 정리되어 있습니다.
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의 버전별 수정 이력이 정리되어 있습니다.
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의 버전별 수정 이력이 정리되어 있습니다.