はじめに
iPadを使って手書き入力した文字をテキスト変換してデータ保存するアプリを作るため、無料で使えるOCRを調査していたところGoogle Cloud Pratform(Cloud Vision API)が見つかりました。
機能を確認してみたので、その結果です。(2020/11時点)
iOS14のPencilkitに手書き入力のテキスト化が導入されたのですが、英語、中国語にしか対応していないため、他の機能を調査していました。
結論
2020/11時点では、Google Cloud Pratform(Cloud Vision API)で日本語手書き文字認識は実用レベルには達していないと感じました。
その他の企業のAPIでは有料(結構高額)であれば、機能を提供していますが、個人開発者にとっては厳しいです。
テスト
こちらのサイトでお試しが可能です。
https://cloud.google.com/vision/docs/handwriting?hl=ja
実装をしなくても試せるので、とてもありがたいです。
以下のサンプルを用いました。
不特定多数の人が入力するので、多少汚い達筆であっても認識してほしいと思い、以下のサンプルを使用しました。
1.手書き日本語
手順
GCPのバケットにデータを保存していますが、画像のリンクを作るのが簡単なのでそのようにしています。
1.GCPのプロジェクトを作成
2.バケットを作成し、好きな画像を保存
3.以下のコードで確認
{
"requests": [
{
"image": {
"source": {
"imageUri": "gs://バケット名/ファイル名"
}
},
"features": [
{
"type": "DOCUMENT_TEXT_DETECTION"
}
],
"imageContext": {
"languageHints": [
"ja-t-i0-handwrit"
]
}
]
}
以下の選択部分にそのままコピペして上書きできます。
EXECUTEボタンをクリックするとGoogleアカウントへのサインインを求められます。
結果
1.手書き日本語
全然読み取れない。
{
"responses": [
{
"textAnnotations": [
{
"locale": "und",
"description": "ch n\n出\n「十\n사\n中\n",
以下省略
「"description": "ch n\n出\n「十\n사\n中\n",」のように跡形もございません。
2.テキストアルファベット
読み取れる。
{
"responses": [
{
"textAnnotations": [
{
"locale": "en",
"description": "UPLOAD FOLDER\n",
以下省略
「"description": "UPLOAD FOLDER\n",」となり、正しく読み取れていました。
3.テキスト日本語
読み取れる。
{
"responses": [
{
"textAnnotations": [
{
"locale": "ja",
"description": "プロジェクト情報\n",
以下省略
「"description": "プロジェクト情報\n",」となり、正しく読み取れていました。
まとめ
Google Platformの日本語手書き入力の認識は2020/11時点では実用的には厳しいと判断しました。
一方で、テキストであれば、十分に利用できそうです。
例えば、PDFファイルのテキスト変換には十分に利用できそうです。
その他の無料のAPIも試してみましたが、手書き入力としては満足のいく結果が得られませんでした。
https://ocr-api.hblab.ai/ocr (手書きは不能。テキスト変換は優秀)
有料APIも低額なものを試してみようと思います。
Pencilkitの日本語対応を切に望みます。。
参照記事
https://dev.classmethod.jp/articles/crop-ocr-with-lambda-using-cloud-vision-api/
https://techblog.nhn-techorus.com/archives/12925