Cloud Storage に画像ファイルをアップロードし、Vision API と Translation API を使用して画像からテキストを抽出、変換する方法を示します。
もっと見る
このコードサンプルを含む詳細なドキュメントについては、以下をご覧ください。
コードサンプル
Go
package ocr
import (
"context"
"fmt"
"log"
)
// ProcessImage is executed when a file is uploaded to the Cloud Storage bucket you
// created for uploading images. It runs detectText, which processes the image for text.
func ProcessImage(ctx context.Context, event GCSEvent) error {
if err := setup(ctx); err != nil {
return fmt.Errorf("ProcessImage: %v", err)
}
if event.Bucket == "" {
return fmt.Errorf("empty file.Bucket")
}
if event.Name == "" {
return fmt.Errorf("empty file.Name")
}
if err := detectText(ctx, event.Bucket, event.Name); err != nil {
return fmt.Errorf("detectText: %v", err)
}
log.Printf("File %s processed.", event.Name)
return nil
}
Java
import com.google.cloud.functions.BackgroundFunction;
import com.google.cloud.functions.Context;
import com.google.cloud.pubsub.v1.Publisher;
import com.google.cloud.translate.v3.DetectLanguageRequest;
import com.google.cloud.translate.v3.DetectLanguageResponse;
import com.google.cloud.translate.v3.LocationName;
import com.google.cloud.translate.v3.TranslationServiceClient;
import com.google.cloud.vision.v1.AnnotateImageRequest;
import com.google.cloud.vision.v1.AnnotateImageResponse;
import com.google.cloud.vision.v1.Feature;
import com.google.cloud.vision.v1.Image;
import com.google.cloud.vision.v1.ImageAnnotatorClient;
import com.google.cloud.vision.v1.ImageSource;
import com.google.protobuf.ByteString;
import com.google.pubsub.v1.ProjectTopicName;
import com.google.pubsub.v1.PubsubMessage;
import functions.eventpojos.GcsEvent;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.logging.Level;
import java.util.logging.Logger;
@Override
public void accept(GcsEvent gcsEvent, Context context) {
// Validate parameters
String bucket = gcsEvent.getBucket();
if (bucket == null) {
throw new IllegalArgumentException("Missing bucket parameter");
}
String filename = gcsEvent.getName();
if (filename == null) {
throw new IllegalArgumentException("Missing name parameter");
}
detectText(bucket, filename);
}
}
Node.js
/**
* This function is exported by index.js, and is executed when
* a file is uploaded to the Cloud Storage bucket you created
* for uploading images.
*
* @param {object} event A Google Cloud Storage File object.
*/
exports.processImage = async event => {
const {bucket, name} = event;
if (!bucket) {
throw new Error(
'Bucket not provided. Make sure you have a "bucket" property in your request'
);
}
if (!name) {
throw new Error(
'Filename not provided. Make sure you have a "name" property in your request'
);
}
await detectText(bucket, name);
console.log(`File ${name} processed.`);
};
Python
def process_image(file, context):
"""Cloud Function triggered by Cloud Storage when a file is changed.
Args:
file (dict): Metadata of the changed file, provided by the triggering
Cloud Storage event.
context (google.cloud.functions.Context): Metadata of triggering event.
Returns:
None; the output is written to stdout and Stackdriver Logging
"""
bucket = validate_message(file, "bucket")
name = validate_message(file, "name")
detect_text(bucket, name)
print("File {} processed.".format(file["name"]))
次のステップ
他の Google Cloud プロダクトに関連するコードサンプルの検索およびフィルタ検索を行うには、Google Cloud のサンプルをご覧ください。