投稿

9月, 2020の投稿を表示しています

Colaboratory環境でGoogle Cloud Storage(GCS)と連携する(gsutil,gcsfuse)

 本記事では、gsutilとgcsfuseを利用したColaboratory環境とGoogle Cloud Storage(GCS)との連携について見ていきます。 【目次】 [1]概要 (1)Vision APIに関連するGCSの利用シナリオ例 (2)GCSとの連携方法 (3)利用料金について [2]gsutil (1)Google Cloud Storage URI (2)一般公開データのダウンロード例 (3)認証 (4)プロジェクトの設定(オプション) (5)URIとワイルドカード (6)gsutil ls:バケットやオブジェクトの情報表示 (7)gsutil cp:ファイルやフォルダのコピー [3]Cloud Storage FUSE(gcsfuse) (1)インストール (2)認証 (3)マウントして利用する (4)マウントの解除 (5)他ツールとの共存:ディレクトリの扱いなどの問題 [1]概要 Google Cloud Storageは、公式ドキュメント( https://cloud.google.com/storage/docs?hl=ja )で以下のように説明されています。 Cloud Storage は、Google Cloud でオブジェクトを保存するためのサービスです。 オブジェクトとは、任意の形式のファイルで構成される不変のデータのことです。オブジェクトをバケットと呼ばれるコンテナに保存します。すべてのバケットがプロジェクトに関連付けられ、組織のプロジェクトをグループ化できます。 これは技術的側面からの説明ですが、大雑把に言えば、Google Cloud Platform(GCP)が提供するデータ保管サービスの一つです。利用方法によっては、OSのファイルのように扱うこともできます。 本記事では、Google Cloud Storageについての説明は行いませんが、記事『 Colaboratory+GoogleドライブでVision APIの実験環境を作る 』の流れから、Colaboratory環境からGoogle Cloud Storageを利用する方法を見ていきます。また、利用例などはVision APIの利用に関するものを中心としています。 以下は、Google Cloud StorageをGCSと略して書きます。 (1

Vision API OCR事始め(1):TEXT_DETECTIONとDOCUMENT_TEXT_DETECTIONの違い

イメージ
これまでの記事で、Google Vision APIの使い方の側面(特にPython)について見てきましたが、平行して、今回からOCR(光学文字認識)の機能面についても見ていきたいと思います。まずは、OCRにあたる2つの機能(特徴タイプ)であるTEXT_DETECTIONとDOCUMENT_TEXT_DETECTIONの違いについて見ていきます。 【目次】 [1]はじめに [2]Vision APIが提供する2つのOCR機能 [3]「~向けに最適化されます」とは? [4]簡単な実験での違いの例 (1)スパースと思われる画像の例 (2)高密度と思われる画像の例 (3)少し難しい漢字の例(文字の大きさによる違い) (4)手書き文書の例 (5)TEXT_DETECTIONとDOCUMENT_TEXT_DETECTIONの二つを同時に指定した場合の例 [5]実験から受ける印象 [6]最後に [1]はじめに Google Vision APIのOCRは評判が良く、私もデモを見て凄いなと思いました。昔、仕事でOCRをちょっとだけ使ったことがありますが、その頃を思うと、隔世の感があります。 そこで実際に使ってみようと思って、ドキュメント(ガイド)を読んだり、サンプルを試してみたりしました。それはなんとなく理解できるのですが、現実の問題に適用しようとすると、ある画像形式に対してどのような機能を使い、どのように結果を解釈するのが良いのか、など、もう少し自分なりに頭の整理が必要だと感じました。 というわけで、Googleが公開している資料や実験を通して、私なりに理解したことを共有していきたいと思います。 ただし、私はOCRや画像処理 、機械学習 の専門家ではありませんので、誤った理解もあるかもしれません。また、資料や実験結果は、記事を書いている時点のものであり、モデルのバージョンアップやサービス内容の変更によって、結果が異なる可能性があることをご了承ください。 [2]Vision APIが提供する2つのOCR機能 Vision APIでは、OCR機能として、「テキスト検出」と「ドキュメント テキスト検出(高密度テキスト / 手書き)」の2つを提供しています。 これらは、機能リスト( https://cloud.google.com/vision/docs/featu

Vision API Pythonクライアントライブラリを少し深堀りする(BatchAnnotateFiles編)

イメージ
本記事では、『 Vision API Pythonクライアントライブラリを少し深堀りする(BatchAnnotateImages編) 』に続いて、Vision APIのPythonクライアントライブラリを利用した、PDFファイルなどから特徴検出を行う同期メソッド(BatchAnnotateFilesに対応するメソッド)の使い方について少し深堀します。 <<お知らせ(2020/10/05)>> Vision API Pythonクライアントライブラリの新バージョン(v2.0.0)が2020年9月29日付でリリースされています。本記事の内容はv1.0.0をもとに書いていますので、v2.0.0とは異なる内容、V2.0.0では動作しないコードを含んでいます。 v2.0.0については、『 Vision API Pythonクライアントライブラリ v2.0.0リリース(BREAKING CHANGES 有り) 』を参照してください。 【目次】 [1]はじめに [2]BatchAnnotateFilesメソッド [3]batch_annotate_filesメソッド [4]リクエストデータの表現方法 (1)InputConfig:ファイルのバイナリデータを送信する場合 (2)InputConfig:Google Cloud Storageのパスを指定する場合 (3)Feature:検出したい特徴の指定 (4)ImageContext:特徴タイプ固有のパラメータを設定する場合 (5)pagesフィールド:検出対象ページの指定 [5]batch_annotate_filesの呼び出し (1)ローカルに保存されたファイルを使用する (2)Cloud Storage 上のファイルを使用する [6]レスポンスデータの扱い (1)概要 (2)リクエスト時のページ指定と結果ページの関係 [1]はじめに 本記事は、前回の記事『 Vision API Pythonクライアントライブラリを少し深堀りする(BatchAnnotateImages編) 』に続いて、PDFファイルなどから特徴検出を行う同期メソッド(BatchAnnotateFilesに対応するメソッド)について、少し深堀します。 Vision APIのPythonクライアントライブラリのパッケージ内容や、画像から

Vision API Pythonクライアントライブラリを少し深堀りする(BatchAnnotateImages編)

イメージ
本記事では、『 Vision API クライアントライブラリの概要(Python編) 』に続いて、Vision APIのPythonクライアントライブラリのパッケージ内容を概観し、画像から特徴検出を行う同期メソッド(BatchAnnotateImagesに関連するメソッド)について少し深堀します。 <<お知らせ (2020/10/05) >> Vision API Pythonクライアントライブラリの新バージョン(v2.0.0)が2020年9月29日付でリリースされています。本記事の内容はv1.0.0をもとに書いていますので、v2.0.0とは異なる内容、V2.0.0では動作しないコードを含んでいます。 v2.0.0については、『 Vision API Pythonクライアントライブラリ v2.0.0リリース(BREAKING CHANGES 有り) 』を参照してください。 【目次】 [1]はじめに (1)参考情報など (2)ライブラリを利用するための準備作業 [2]google.cloud.visionパッケージ概要 (1)vision.ImageAnnotatorClientクラス (2)vision.enums(定数定義) (3)vision.types(データ型定義) (4)補足 [3]BatchAnnotateImagesに関連するメソッドの構成 (参考)ImageAnnotatorClientクラスの実装構成 [4]リクエストデータの表現方法 (1)Image:画像のバイナリデータを送信する場合 (2)Image:画像のURIを指定する場合 (3)Feature:検出したい特徴の指定 (4)ImageContext:特徴タイプ固有のパラメータを設定する場合 [5]特徴タイプ毎のメソッド(text_detectionなど) (1)利用例 (2)Feature.modelに関する注意事項 [6]annotate_imageメソッド (1)利用例 (2)featuresに関する注意事項 [7]batch_annotate_imagesメソッド (1)利用例 [8]レスポンスデータとエラー [9]JSON、ディクショナリとの相互変換 (1)google.protobuf.json_format モジュール (2)Protocol Buffersのクラ