Google Vision API のOCR機能が強化されている


スポンサーリンク

ずいぶん前に一度試してから放置した。5月時点で正式提供版になり、以前試したときから地味に進化している。

a244.hateblo.jp

ざっくりいうと、OCR向けのタイプが一つ増えているのと、返却されるJSONにキーが新たに追加されている。

光学式文字認識(OCR)  |  Google Cloud Vision API ドキュメント  |  Google Cloud

ざっくりいうといつの間にかオプションが増えている。

今までの文字認識にくわて、ページの構造についての情報も返すようになった模様。

今まではOCRさせたいときは画像の特徴(feature)のタイプとしてTEXT_DETECTIONを指定していたけど、いつの間にかもう一つ増えている。

{
  "requests":[
    {
      "image": "base64encode-image"
      },
      "features":[
        {
          "type": "TEXT_DETECTION"
        }
      ]
    }
  ]
}

というようにTEXT_DETECTIONというタイプを指定してリクエストを送っていた。いつの間にかDOCUMENT_TEXT_DETECTIONというタイプが追加されている。

何が違うかというと、新しく追加された方は、レイアウト情報(ページ、ブロック、段落、単語、改行など)を含む。

A DOCUMENT_TEXT_DETECTION response includes additional layout information, such as page, block, paragraph, word, and break information. (The sample below uses a simplified example; the response from a dense document is too long to display on this page.)

"dense text" はフォーマルな会社の文書のような画像内にある程度密に文字が入ったものを指しているんだろうと思う(反対語はsparse text)。 

なお、両方指定した場合は後者のDOCUMENT_TEXT_DETECTIONが優先されると書いてある。しかしながら、従来どおりにリクエストを送った場合も、fullTextAnnotationというキーと値が追加されて返ってくる。

まとめると、

  • "type": "TEXT_DETECTION"でリクエストを送ると、従来形式+新形式のデータ
  • "type": "DOCUMENT_TEXT_DETECTION"でリクエストを送ると、新形式のデータ

返却されるJSONデータの詳細はリファレンスを参照。なお、レスポンスのJSON内の座標系は左上原点系。

JSONのパースが面倒っぽいので、変換サービスを使ってコードを生成するのがいいと思う。

quicktype.io

アプリに組み込むとなるとAPIキーの管理をどうするかという問題が悩みどころ。

とりあえずここまで。

広告