13
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AzureのAI-OCR機能(Read API)で「日本語の手書きテキスト」を読み取ってみる Part.1 (2022年2月 Public Preview版)

Posted at

Public Previewが開始!Read API v3.2 で「日本語の手書きテキスト」を読み取る

2022年2月14日に、Azure Cognitive Services の Vision API(画像認識)で提供されているOCR機能(Read API v3.2)に、「日本語の手書きテキスト」 を認識する機能が、Public Preview版として追加されました。
この記事では、「日本語の手書きテキスト」機能の使い方と、実際に試した認識精度をご紹介します。

【マイクロソフト社公式情報 - Public Preview の開始】

気になる認識精度は?

まずはこちらをご覧ください。
認識精度の比較.png

お分かり頂けるだろうか…
上段の画像データは、あの有名なセリフを日本語で手書きしたもの。
下段左が旧Read API v3.2 で読み取った結果の抜粋、せっかくのカッコイイセリフが台無しです。
そして右が新Read API v3.2 Public Preview で読み取った結果の抜粋。バッチリですね。
驚くべき事に、わざと略字で書いた「時間」の「間」の文字も、正しく読み取っています。これは想定以上。

もともと手書き文字のサポートは英語のみだったので、[旧] Read API v3.2 のほうは「精度が悪い」というよりも、「手書き文字の認識は想定されていない」と言うべきでしょうか。
これまで、ある程度「綺麗な」手書き文字は日本語でも何となく(無理矢理に)認識されていましたが、それと比べると精度が爆上がりしている印象です。

Read APIの使い方

それでは、この新しい機能をさっそく試してみましょう。Read API v3.2 のAPI仕様書は次の通り。

Read API と Get Read Result API の呼び出し方法を図解するとこんな感じ。
仕組み01.png
image.png

そして、今回Public Previewで追加された 「日本語の手書きテキスト」 の認識を試す際に必要な情報は次の通り。

ポイントとして、Read API(/vision/v3.2/read/analyze)を呼び出す際に、 「model-version=2022-01-30-preview」 をパラメータに追加すれば良いだけ。
こんな感じ。

https://{endpoint}/vision/v3.2/read/analyze?model-version=2022-01-30-preview

これで Get Read Result のJSON応答に"appearance"フィールドが出現し、"style" が "name": "handwriting" になっているので、手書きテキストで認識している事が分かります。

{
    "status": "succeeded",
    "createdDateTime": "2022-02-24T02:02:19Z",
    "lastUpdatedDateTime": "2022-02-24T02:02:20Z",
    "analyzeResult": {
        "version": "3.2.0",
        "modelVersion": "2022-01-30-preview",
        "readResults": [
            {
                "page": 1,
                "angle": -0.8383,
                "width": 4032,
                "height": 3024,
                "unit": "pixel",
                "lines": [
                    {
                        "boundingBox": [
                            660,
                            1210,
                            2644,
                            1191,
                            2646,
                            1471,
                            665,
                            1510
                        ],
                        "text": "3分間待ってやる。",
                        "appearance": {
                            "style": {
                                "name": "handwriting",
                                "confidence": 1
                            }
                        },
                        "words": [
                            {
...(略)

注意点(調査中)

最初、Read API 呼び出し時に、model-version 以外に、"language=ja" の指定も必要かと思ったが、これだと上手く機能しない。
逆に、上記のように "language=ja" を指定しないと上手く行く(指定しないと自動認識で日本語になる模様)

https://{endpoint}/vision/v3.2/read/analyze?language=ja&model-version=2022-01-30-preview

こうすると、JSONの応答が "name": "handwriting" にならずに、"name": "other" になってしまう。
そもそも、language=ja は必要なパラメータだと思っていたので、これが正しい挙動なのかどうか疑問。
(私の環境だけかも。調査中)

まとめ

今回はRead API v3.2 で「日本語の手書きテキスト」を読み取る仕組みを説明しました。
次回は、このAI-OCRを簡単に(=コードを書かずに)試してみる方法をご紹介します。

13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?