SDK 시작하기


Selvy Pen SDK for Math는 손글씨로 필기한 수식의 좌표 (x, y) 값을 입력받아 인식한 후, 인식한 수식을 LaTex로 반환해 주는 API를 제공합니다.
중등 수학과정을 지원하는 87개 수식 심볼과 분수, 루트, 제곱 등 7개의 수식 구조를 인식할 수 있습니다.
또한, 중등 과학과정을 지원하는 60개 심볼과 5개의 화학식 구조를 인식할 수 있습니다.

SDK는 헤더 파일과 라이브러리 파일의 모음으로 제공됩니다.
Android, iOS, Windows, Linux 등 거의 모든 플랫폼에서 사용이 가능하며, C/C++, C#, Java 등 다양한 개발언어를 지원합니다.

파일 구성


Selvy Pen SDK for Math는 다음과 같은 파일로 구성되어 있습니다.

Note
파일명과 파일 구성은 플랫폼에 따라 조금씩 다를 수 있습니다.
예를 들어 Linux의 경우 Shared Libary로 제공되며, Library 파일은 libdhwr.so, libdhwr-core.so, libdhwr-base로 구성됩니다.
  • hdb/license_key/license.key는 플랫폼과 개발언어 상관없이 공통적으로 사용되는 파일입니다.
  • 그 외의 파일들은 플랫폼과 개발언어에 따라 파일 구성과 파일명이 다를 수 있습니다.
Selvy Pen SDK for Math - Windows/
│
├── hdb/
│   ├── ma_CF.hdb
│   └── ma_EX.hdb
│
├── include/
│   ├── dhwr.h
│   ├── dhwr_define.h
│   ├── dhwr_gesture.h
│   ├── dhwr_ink.h
│   ├── dhwr_result.h
│   └── dhwr_setting.h
│
├── libs/
│   ├── win32_x86/
│   │   ├── libspmath.dll
│   │   └── libspmath.lib
│   │
│   └── win32_x86_64/
│       ├── libspmath.dll
│       └── libspmath.lib
│
└── license_key/
    └── license.key
  • hdb/
    인식 엔진에서 사용하는 DB 파일입니다.
    hdb 파일의 경로를 설정하는 API인 DHWRSetExternalResourcePath()를 호출 시 hdb 파일이 존재하는 디렉터리의 경로명을 파라미터로 입력합니다.
    • ma_CF.hdb : 화학식 인식을 위한 DB 파일
    • ma_EX.hdb : 수식 인식을 위한 DB 파일
  • include/
    API명과 enum 값 등이 선언되어 있는 헤더 파일입니다.
    dhwr.h 파일 하나만 include 하면 됩니다. (dhwr.h 내에서 나머지 헤더 파일을 include 합니다.)
  • libs/win32_x86/
    수식 인식 기능을 수행하는 32bit Main 엔진 라이브러리 파일입니다.
  • libs/win32_x86_64/
    수식 인식 기능을 수행하는 64bit Main 엔진 라이브러리 파일입니다.
  • license_key/license.key
    Main 엔진을 초기화는 API인 DHWRCreate()를 호출 시 License 파일명이 포함된 경로명을 파라미터로 입력합니다.
    Warning
    라이브러리를 사용하기 위해서는 License 파일이 필요합니다.
    License 파일이 없으면 수식 인식 기능은 동작하지 않습니다.
Selvy Pen SDK for Math - Windows/
│
├── hdb/
│   ├── ma_CF.hdb
│   └── ma_EX.hdb
│
├── src/
│   └── Hwr.cs
│
├── libs/
│   ├── win32_x86/
│   │   ├── libspmath.dll
│   │   └── libspmath.lib
│   │
│   └── win32_x86_64/
│       ├── libspmath.dll
│       └── libspmath.lib
│
└── license_key/
    └── license.key
  • hdb/
    인식 엔진에서 사용하는 DB 파일입니다.
    hdb 파일의 경로를 설정하는 API인 SetExternalResourcePath()를 호출 시 hdb 파일이 존재하는 디렉터리의 경로명을 파라미터로 입력합니다.
    • ma_CF.hdb : 화학식 인식을 위한 DB 파일
    • ma_EX.hdb : 수식 인식을 위한 DB 파일
  • src/Hwr.cs
    API명과 Error Code값 등이 정의되어 있는 C# 소스 파일입니다.
  • libs/win32_x86/
    수식 인식 기능을 수행하는 32bit Main 엔진 라이브러리 파일입니다.
  • libs/win32_x86_64/
    수식 인식 기능을 수행하는 64bit Main 엔진 라이브러리 파일입니다.
  • license_key/license.key
    Main 엔진을 초기화는 API인 Create()를 호출 시 License 파일명이 포함된 경로명을 파라미터로 입력합니다.
    Warning
    라이브러리를 사용하기 위해서는 License 파일이 필요합니다.
    License 파일이 없으면 수식 인식 기능은 동작하지 않습니다.
Selvy Pen SDK for Math - Android/
│
├── hdb/
│   ├── ma_CF.hdb
│   └── ma_EX.hdb
│
├── src/
│   └── com/
│       └── selvy/
│           └── spmath/
│               └── DHWR.java
│
├── libs/
│   ├── android_armeabi-v7a/
│   │   ├── libspmath-base.so
│   │   ├── libspmath-core.so
│   │   ├── libspmath.so
│   │   └── libstlport_shared.so
│   │
│   └── android_arm64-v8a/
│       ├── libspmath-base.so
│       ├── libspmath-core.so
│       ├── libspmath.so
│       └── libstlport_shared.so
│
└── license_key/
    └── license.key
  • hdb/
    인식 엔진에서 사용하는 DB 파일입니다.
    hdb 파일의 경로를 설정하는 API인 SetExternalResourcePath()를 호출 시 hdb 파일이 존재하는 디렉터리의 경로명을 파라미터로 입력합니다.
    • ma_CF.hdb : 화학식 인식을 위한 DB 파일
    • ma_EX.hdb : 수식 인식을 위한 DB 파일
  • src/com/selvy/spmath/DHWR.java
    API명과 Error Code값 등이 정의되어 있는 Java 소스 파일입니다.
  • libs/android_armeabi-v7a/
    수식 인식 기능을 수행하는 ARM 32bit CPU용 엔진 라이브러리 파일입니다.
  • libs/android_arm64-v8a/
    수식 인식 기능을 수행하는 ARM 64bit CPU용 엔진 라이브러리 파일입니다.
  • license_key/license.key
    Main 엔진을 초기화는 API인 Create()를 호출 시 License 파일명이 포함된 경로명을 파라미터로 입력합니다.
    Warning
    라이브러리를 사용하기 위해서는 License 파일이 필요합니다.
    License 파일이 없으면 수식 인식 기능은 동작하지 않습니다.

API 호출 순서


수식 인식 기능을 수행하기 위한 API 호출 순서를 설명합니다. 더 자세한 코드는 Example 코드를 참고하시기 바랍니다.

A Flowchart showing API Call Process

  • DHWRCreate
    인식 엔진을 생성합니다.
  • DHWRSetExternalResourcePath
    hdb 파일이 존재하는 경로를 설정합니다.
  • DHWRSetExternalLibraryPath
    외부 라이브러리 파일이 존재하는 경로를 설정합니다.
    외부 라이브러리를 사용하지 않는다면 호출할 필요는 없습니다.
  • DHWRCreateInkObject
    Ink Object를 생성합니다.
    Ink Ojbect에 필기 좌표 값이 저장됩니다.
  • DHWRCreateSettingObject
    Setting Object를 생성합니다.
    Setting Object에 인식 범위, 인식 방식 등의 설정 값이 저장됩니다.
  • DHWRCreateResultObject
    Result Object를 생성합니다.
    Result Object에 인식된 후보 문자의 정보가 저장됩니다.
  • DHWRSetRecognitionMode
    어떤 글자(낱자/여러 글자/겹쳐 쓴 글자)를 인식할지 설정합니다.
  • DHWRAddLanguage
    인식할 언어(수식)와 타입을 설정합니다
    // 중등 수학 설정
    DHWRAddLanguage(setting_obj, DLANG_MATH_MIDDLE_EXPANSION, DTYPE_MATH_EX);
  • DHWRSetAttribute
    사용할 Setting Object를 지정합니다.
  • DHWRAddPoint
    필기 좌표 값을 입력합니다.
    // 필기 좌표 값을 입력
    DHWRAddPoint(x1, y1);
    DHWRAddPoint(x2, y2);
    DHWRAddPoint(x3, y3);
  • DHWREndStroke
    필기 좌표 값 입력 중 하나의 획이 끝나면(보통 Touch Up 이벤트가 발생 시) 호출해 줍니다.
    DHWRAddPoint(x5, y5);
    DHWREndStroke(); // 하나의 획이 끝나면 호출
    DHWRAddPoint(x6, y6);
  • DHWRecognize
    필기 좌표 값 입력이 모두 끝났으면 (필기가 끝났으면) 인식을 실행합니다.
  • DHWRGetCandidate
    인식된 후보 문자를 얻어 옵니다.
  • DHWRDestroyInkObject
    Ink Object를 소멸시킵니다.
  • DHWRDestroySettingObject
    Setting Object를 소멸시킵니다.
  • DHWRDestroyResultObject
    Result Object를 소멸시킵니다.
  • DHWRClose
    인식 엔진를 소멸시킵니다.
    Warning
    DHWRCreate()을 호출하여 생성된 엔진은 더이상 사용하지 않을 경우 반드시 DHWRClose()을 호출하여 소멸시켜야 합니다.