MyScryptという手書き文字認識ライブラリがあります。
各種設定方法がすごくわかりずらいのでメモ。
OSはAndroidです。
日本語を認識できるようにする
日本語のAssetを↓からダウンロードします。
https://developer.myscript.com/support/recognition-assets
右の方にある Select a Language
から日本語を選択してダウンロードします。
ダウンロードしたzipを解凍してできた recognition-assets
フォルダの中の conf
と resources
フォルダを、Androidプロジェクトの assets
フォルダの中にコピーします。
で、だいたい↓のようなコードで日本語が認識できるようになります。
fun init(context: Context, certificate: ByteArray, dpi: Float = 300f) { val engine = Engine.create(certificate) val confDir = "zip://" + context.getPackageCodePath().toString() + "!/assets/conf" engine.configuration.setStringArray("configuration-manager.search-path", arrayOf(confDir)) val tempDir: String = context.getFilesDir().getPath().toString() + File.separator + "tmp" engine.configuration.setString("content-package.temp-folder", tempDir) val renderer = engine.createRenderer(dpi, dpi, null) val editor = engine.createEditor(renderer).let { it.setFontMetricsProvider(null) it.configuration.also { it.setStringArray("configuration-manager.search-path", arrayOf("zip://" + context.getPackageCodePath() + "!/assets/conf")) it.setString("lang", "ja_JP") } it } }
結果をJSONで取得する
val exportParams = engine.createParameterSet() exportParams.setBoolean("export.jiix.bounding-box", true) // bounding boxを含める val jiixString = editor.export_(editor.rootBlock, MimeType.JIIX, exportParams) // JSON
↑みたいなかんじでJSONが取得できます。
返却されるJSONについては↓にドキュメントがあります。
JIIX format reference | MyScript Developer
複数行認識をOFFにする
デフォルトでは行を認識しますが、OFFにしたい場合は以下のようにします。
editor.setBoolean("text.guides.enable", false)