GSP927

Ringkasan
Document AI API adalah solusi pemahaman dokumen yang mengambil data tidak terstruktur, seperti dokumen dan email, lalu memudahkan data untuk dipahami, dianalisis, dan digunakan.
Di lab ini, Anda akan membangun pipeline pemrosesan dokumen untuk otomatis menganalisis dokumen yang diupload ke Cloud Storage. Pipeline ini menggunakan fungsi Cloud Run dengan pemroses formulir Document AI untuk mengekstrak data dan menyimpannya di BigQuery. Jika formulir menyertakan kolom alamat, data alamat akan dikirim ke topik Pub/Sub. Hal ini memicu fungsi Cloud Run kedua, yang menggunakan Geocoding API untuk menambahkan koordinat dan menulis hasilnya ke BigQuery.
Pipeline sederhana ini menggunakan pemroses formulir umum untuk mendeteksi data formulir dasar, seperti kolom alamat berlabel. Untuk dokumen yang lebih kompleks, Document AI menawarkan parser khusus (di luar cakupan lab ini) yang mengekstrak informasi mendetail meskipun tanpa label eksplisit. Misalnya, parser Invoice dapat mengidentifikasi detail alamat dan pemasok dari invoice yang tidak berlabel dengan memahami tata letak invoice umum.
Arsitektur keseluruhan yang akan Anda buat terlihat seperti berikut:

- Mengupload formulir dengan data alamat ke Cloud Storage.
- Upload memicu panggilan fungsi Cloud Run untuk memproses formulir.
- Document AI dipanggil dari fungsi Cloud Run.
- Data JSON Document AI disimpan kembali ke Cloud Storage.
- Data Formulir ditulis ke BigQuery oleh fungsi Cloud Run.
- Fungsi Cloud Run mengirimkan alamat ke topik Pub/Sub.
- Pesan Pub/Sub memicu fungsi Cloud Run untuk pemrosesan GeoCode.
- Geocoding API dipanggil dari fungsi Cloud Run.
- Data geocoding ditulis ke BigQuery oleh fungsi Cloud Run.
Arsitektur contoh ini menggunakan fungsi Cloud Run untuk mengimplementasikan pipeline sederhana, tetapi fungsi Cloud Run tidak direkomendasikan untuk lingkungan produksi karena panggilan Document AI API dapat melebihi batas waktu yang didukung oleh fungsi Cloud Run. Cloud Tasks direkomendasikan untuk solusi serverless yang lebih tangguh.
Yang akan Anda pelajari
Di lab ini, Anda akan mempelajari cara:
- Mengaktifkan Document AI API
- Men-deploy fungsi Cloud Run yang menggunakan Document AI, BigQuery, Cloud Storage, dan Pub/Sub API.
Anda akan mengonfigurasi fungsi Cloud Run untuk:
- Memicu saat dokumen diupload ke Cloud Storage.
- Menggunakan library klien Document AI untuk Python.
- Memicu saat pesan Pub/Sub dibuat.
Penyiapan dan persyaratan
Sebelum mengklik tombol Start Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.
Mengaktifkan Cloud Shell
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
-
Klik Activate Cloud Shell
di bagian atas Konsol Google Cloud.
-
Klik jendela berikut:
- Lanjutkan melalui jendela informasi Cloud Shell.
- Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:
Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}
gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
- Klik Authorize.
Output:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
Untuk menetapkan akun aktif, jalankan:
$ gcloud config set account `ACCOUNT`
- (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project
Output:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Tugas 1. Mengaktifkan API dan membuat kunci API
Anda harus mengaktifkan API untuk Document AI, fungsi Cloud Run, Cloud Build, dan Geocoding untuk lab ini, lalu membuat kunci API yang diperlukan oleh fungsi Cloud Run Geocoding.
-
Klik Activate Cloud Shell
di bagian atas konsol Google Cloud.
-
Di Cloud Shell, masukkan perintah berikut untuk mengaktifkan API yang diperlukan oleh lab:
gcloud services enable documentai.googleapis.com
gcloud services enable cloudfunctions.googleapis.com
gcloud services enable cloudbuild.googleapis.com
gcloud services enable geocoding-backend.googleapis.com
-
Di konsol, pada Navigation menu (
), klik APIs & services > Credentials.
-
Pilih Create credentials, lalu pilih API key dari menu dropdown.
Kotak dialog API key created akan menampilkan kunci yang baru dibuat. Kunci API adalah string panjang yang berisi huruf besar dan kecil, angka, serta tanda hubung. Misalnya, a4db08b757294ea94c08f2df493465a1.
-
Klik tiga titik di bagian Actions, lalu klik Edit API key di kotak dialog.
-
Pilih Restrict key di bagian API restrictions untuk menambahkan pembatasan API untuk kunci API baru Anda.
-
Klik drop-down Select APIs dan di kotak filter, ketik Geocoding API.
-
Pilih Geocoding API, lalu klik OK.
-
Klik tombol Save.
Catatan:
Jika Anda tidak dapat menemukan Geocoding API di menu dropdown Restrict key, muat ulang halaman untuk memperbarui daftar API yang tersedia.
Memastikan semua API yang diperlukan telah diaktifkan.
Tugas 2. Mendownload kode sumber lab
Dalam tugas ini, Anda akan menyalin file sumber ke Cloud Shell. File ini mencakup kode sumber untuk fungsi Cloud Run dan skema untuk tabel BigQuery yang akan Anda buat di lab.
- Di Cloud Shell, masukkan perintah berikut untuk mendownload kode sumber untuk lab ini:
mkdir ./documentai-pipeline-demo
gcloud storage cp -r \
gs://spls/gsp927/documentai-pipeline-demo/* \
~/documentai-pipeline-demo/
Tugas 3. Membuat pemroses formulir
Buat instance pemroses formulir generik untuk digunakan di Document AI Platform menggunakan parser khusus Form Parser Document AI. Pemroses formulir generik akan memproses semua jenis dokumen dan mengekstrak seluruh konten teks yang dapat diidentifikasi dalam dokumen tersebut. Pemroses ini tidak terbatas pada teks cetak, tetapi juga dapat memproses teks tulisan tangan dan teks dengan orientasi apa pun, mendukung sejumlah bahasa, dan memahami bagaimana elemen data formulir saling berhubungan sehingga Anda dapat mengekstrak key-value pair untuk kolom formulir yang memiliki label teks.
-
Di Konsol Google Cloud, di kolom penelusuran, ketik Document AI dan klik hasil halaman produk.
-
Klik Explore Processors, lalu klik Form Parser untuk membuat pemroses baru.
-
Tetapkan nama pemroses sebagai form-processor, lalu pilih region US (United States) dari daftar.
-
Klik Create untuk membuat pemroses.
Anda akan mengonfigurasi fungsi Cloud Run nanti di lab ini dengan ID pemroses dan lokasi pemroses ini sehingga fungsi Cloud Run akan menggunakan pemroses khusus ini untuk memproses invoice sampel.
Tugas 4. Membuat bucket Cloud Storage dan set data BigQuery
Di bagian ini, Anda akan menyiapkan lingkungan dengan membuat resource Google Cloud yang diperlukan untuk pipeline pemrosesan dokumen Anda.
Membuat bucket Cloud Storage input, output, dan arsip
Buat bucket Cloud Storage input, output, dan arsip untuk pipeline pemrosesan dokumen Anda.
- Di Cloud Shell, masukkan perintah berikut untuk membuat bucket Cloud Storage untuk lab:
export PROJECT_ID=$(gcloud config get-value core/project)
export BUCKET_LOCATION="{{{my_primary_project.default_region|REGION}}}"
gsutil mb -c standard -l ${BUCKET_LOCATION} -b on \
gs://${PROJECT_ID}-input-invoices
gsutil mb -c standard -l ${BUCKET_LOCATION} -b on \
gs://${PROJECT_ID}-output-invoices
gsutil mb -c standard -l ${BUCKET_LOCATION} -b on \
gs://${PROJECT_ID}-archived-invoices
Membuat set data dan tabel BigQuery
Buat set data BigQuery dan tiga tabel output yang diperlukan untuk pipeline pemrosesan data Anda.
- Di Cloud Shell, masukkan perintah berikut untuk membuat tabel BigQuery untuk lab:
bq --location="US" mk -d \
--description "Form Parser Results" \
${PROJECT_ID}:invoice_parser_results
cd ~/documentai-pipeline-demo/scripts/table-schema/
bq mk --table \
invoice_parser_results.doc_ai_extracted_entities \
doc_ai_extracted_entities.json
bq mk --table \
invoice_parser_results.geocode_details \
geocode_details.json
Anda dapat membuka BigQuery di Konsol Cloud dan memeriksa skema untuk tabel di set data invoice_parser_results menggunakan ruang kerja SQL BigQuery.
Membuat topik Pub/Sub
Menginisialisasi topik Pub/Sub yang digunakan untuk memicu operasi pengayaan data Geocoding API di pipeline pemrosesan.
- Di Cloud Shell, masukkan perintah berikut untuk membuat topik Pub/Sub untuk lab:
export GEO_CODE_REQUEST_PUBSUB_TOPIC=geocode_request
gcloud pubsub topics \
create ${GEO_CODE_REQUEST_PUBSUB_TOPIC}
Periksa apakah Set Data BigQuery, bucket Cloud Storage, dan topik Pub/Sub telah dibuat.
Tugas 5. Membuat fungsi Cloud Run
Membuat dua fungsi Cloud Run yang digunakan pipeline pemrosesan data Anda untuk memproses invoice yang diupload ke Cloud Storage. Fungsi ini menggunakan Document AI API untuk mengekstrak data formulir dari dokumen mentah, lalu menggunakan GeoCode API untuk mengambil data geolokasi tentang informasi alamat yang diekstrak dari dokumen.
Anda dapat memeriksa kode sumber untuk kedua fungsi Cloud Run menggunakan Editor Kode atau editor lain pilihan Anda. Fungsi Cloud Run disimpan di folder berikut di Cloud Shell:
- Process Invoices -
scripts/cloud-functions/process-invoices
- Geocode Addresses -
scripts/cloud-functions/geocode-addresses
Fungsi Cloud Run utama, process-invoices, dipicu saat file diupload ke bucket penyimpanan file input yang Anda buat sebelumnya.
Folder fungsi scripts/cloud-functions/process-invoices berisi dua file yang digunakan untuk membuat fungsi Cloud Run process-invoices.
File requirements.txt menentukan library Python yang diperlukan oleh fungsi. Ini mencakup library klien Document AI serta library Google Cloud lainnya yang diperlukan oleh kode Python untuk membaca file dari Cloud Storage, menyimpan data ke BigQuery, dan menulis pesan ke Pub/Sub yang akan memicu fungsi yang tersisa di pipeline solusi.
File Python main.py berisi kode fungsi Cloud Run yang membuat klien Document-AI, BigQuery, dan Pub/Sub API serta fungsi internal berikut untuk memproses dokumen:
-
write_to_bq - Menulis objek kamus ke tabel BigQuery. Perhatikan bahwa Anda harus memastikan skema valid sebelum memanggil fungsi ini.
-
get_text - Memetakan anchor teks nama dan nilai formulir ke teks yang dipindai dalam dokumen. Ini memungkinkan fungsi mengidentifikasi elemen formulir tertentu, seperti nama dan Alamat Pemasok, serta mengekstrak nilai yang relevan. Prosesor Document AI khusus menyediakan informasi kontekstual tersebut langsung di properti entity.
-
process_invoice - Menggunakan API klien Document-AI asinkron untuk membaca dan memproses file dari Cloud Storage sebagai berikut:
- Membuat konten asinkron untuk memproses file yang memicu panggilan fungsi Cloud Run.
- Memproses data formulir untuk mengekstrak kolom invoice, yang hanya menyimpan kolom tertentu dalam kamus yang merupakan bagian dari skema yang telah ditentukan sebelumnya.
- Memublikasikan pesan Pub/Sub untuk memicu fungsi Cloud Run Geocoding menggunakan data formulir alamat yang diekstrak dari dokumen.
- Menulis data formulir ke tabel BigQuery.
- Menghapus file perantara (output) panggilan API Document AI asinkron.
- Menyalin file input ke bucket arsip.
- Menghapus file input yang diproses.
Fungsi Cloud Run process_invoices hanya memproses data formulir yang telah terdeteksi dengan nama kolom formulir berikut:
input_file_name
address
supplier
invoice_number
purchase_order
date
due_date
subtotal
tax
total
Fungsi Cloud Run lainnya, geocode-addresses, dipicu saat pesan baru tiba di topik Pub/Sub dan mengekstrak data parameternya dari pesan Pub/Sub.
Membuat fungsi Cloud Run untuk memproses dokumen yang diupload ke Cloud Storage
Membuat fungsi Cloud Run yang menggunakan pemroses formulir Document AI untuk mengurai dokumen formulir yang telah diupload ke bucket Cloud Storage.
- Jalankan perintah untuk mendapatkan alamat email agen layanan Cloud Storage project:
gcloud storage service-agent --project=$PROJECT_ID
- Jalankan perintah di bawah ini untuk mengizinkan izin yang diperlukan ke akun layanan Cloud Storage:
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
gcloud iam service-accounts create "service-$PROJECT_NUMBER" \
--display-name "Cloud Storage Service Account" || true
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com" \
--role="roles/pubsub.publisher"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountTokenCreator"
Catatan: Jika akun layanan Cloud Storage sudah ada, Anda dapat mengabaikan error tersebut.
- Membuat fungsi Cloud Run Invoice Processor:
cd ~/documentai-pipeline-demo/scripts
export CLOUD_FUNCTION_LOCATION="{{{my_primary_project.default_region|REGION}}}"
gcloud functions deploy process-invoices \
--no-gen2 \
--region=${CLOUD_FUNCTION_LOCATION} \
--entry-point=process_invoice \
--runtime=python39 \
--source=cloud-functions/process-invoices \
--timeout=400 \
--env-vars-file=cloud-functions/process-invoices/.env.yaml \
--trigger-resource=gs://${PROJECT_ID}-input-invoices \
--trigger-event=google.storage.object.finalize
Catatan: Jika perintah gagal dengan error izin, tunggu sebentar dan coba lagi.
Membuat fungsi Cloud Run untuk mencari data geocode dari suatu alamat
Membuat fungsi Cloud Run yang menerima data alamat dari pesan Pub/Sub dan menggunakan Geocoding API untuk menemukan alamat secara tepat.
- Membuat fungsi Cloud Run Geocoding:
cd ~/documentai-pipeline-demo/scripts
gcloud functions deploy geocode-addresses \
--no-gen2 \
--region=${CLOUD_FUNCTION_LOCATION} \
--entry-point=process_address \
--runtime=python39 \
--source=cloud-functions/geocode-addresses \
--timeout=60 \
--env-vars-file=cloud-functions/geocode-addresses/.env.yaml \
--trigger-topic=${GEO_CODE_REQUEST_PUBSUB_TOPIC}
Tugas 6. Mengedit variabel lingkungan untuk fungsi Cloud Run
Dalam tugas ini, Anda akan menyelesaikan konfigurasi fungsi Cloud Run dengan mengedit variabel lingkungan untuk setiap fungsi guna mencerminkan parameter khusus lab Anda melalui Konsol Cloud.
Mengedit variabel lingkungan untuk fungsi Cloud Run process-invoices
Tetapkan variabel lingkungan fungsi Cloud Run untuk fungsi process-invoices.
- Di Konsol Cloud, di kotak penelusuran, ketik
Cloud Run functions dan klik hasil halaman produk.
Anda akan dialihkan ke konsol Cloud Run, klik Go to Cloud Run functions 1st gen untuk melihat fungsi yang di-deploy, process-invoices dan geocode-addresses.
Catatan: Jika Anda tidak dapat melihat link untuk Go to Cloud Run functions 1st gen, refresh konsol Cloud Run.
- Klik fungsi Cloud Run process-invoices untuk membuka halaman pengelolaannya.
- Klik Edit.
- Klik Runtime, build, connections and security settings untuk meluaskan bagian tersebut.
- Di bagian Runtime environment variables, tambahkan variabel GCP_PROJECT dan nilai yang sesuai dengan Project ID Anda.
- Di bagian Runtime environment variables, perbarui nilai PROCESSOR_ID agar sesuai dengan ID pemroses Invoice yang Anda buat sebelumnya.
- Di bagian Runtime environment variables, perbarui nilai PARSER_LOCATION agar sesuai dengan region pemroses Invoice yang Anda buat sebelumnya. Nilainya adalah
us atau eu. Parameter ini harus berupa huruf kecil.
- Klik Next dan pilih .env.yaml, lalu perbarui nilai
PROCESSOR_ID, PARSER_LOCATION, dan GCP_PROJECT lagi untuk pemroses invoice Anda.

- Klik Deploy.
Men-deploy fungsi Cloud Run Process Invoices
Mengedit variabel lingkungan untuk fungsi Cloud Run geocode-addresses
Tetapkan variabel lingkungan fungsi Cloud Run untuk fungsi pengayaan data GeoCode.
- Klik fungsi Cloud Run geocode-addresses untuk membuka halaman pengelolaannya.
- Klik Edit.
- Klik Runtime, build, connections and security settings untuk meluaskan bagian tersebut.
- Di bagian Runtime environment variables, perbarui nilai API_key agar sesuai dengan nilai Kunci API yang dibuat di Tugas 1.
- Klik Next dan pilih .env.yaml, lalu perbarui nilai API_key agar sesuai dengan nilai Kunci API yang Anda tetapkan pada langkah sebelumnya.
- Klik Deploy.
Men-deploy fungsi Cloud Run Geocode Addresses
Tugas 7. Menguji dan memvalidasi solusi end-to-end
Upload data pengujian ke Cloud Storage dan pantau progres pipeline saat dokumen diproses dan data yang diekstrak ditingkatkan.
- Di Cloud Shell, masukkan perintah berikut untuk mengupload formulir sampel ke bucket Cloud Storage yang akan memicu fungsi Cloud Run
process-invoices:
export PROJECT_ID=$(gcloud config get-value core/project)
gsutil cp gs://spls/gsp927/documentai-pipeline-demo/sample-files/* gs://${PROJECT_ID}-input-invoices/
- Di Konsol Cloud, di kotak penelusuran, ketik
Cloud Run functions dan klik hasil halaman produk.
- Klik fungsi Cloud Run process-invoices untuk membuka halaman pengelolaannya.
- Klik Logs.
Anda akan melihat peristiwa yang terkait dengan pembuatan fungsi dan pembaruan yang dilakukan untuk mengonfigurasi variabel lingkungan, diikuti dengan peristiwa yang menunjukkan detail tentang file yang diproses, dan data yang terdeteksi oleh Document AI.

Amati peristiwa hingga Anda melihat peristiwa akhir yang menunjukkan bahwa eksekusi fungsi selesai dengan LoadJob. Jika error dilaporkan, periksa kembali bahwa parameter yang ditetapkan dalam file .env.yaml di bagian sebelumnya sudah benar. Pastikan ID Pemroses, lokasi, dan Project ID valid. Daftar peristiwa tidak otomatis diperbarui.
Di akhir pemrosesan, tabel BigQuery Anda akan diisi dengan entity yang diekstrak Document AI serta data yang diperkaya yang disediakan oleh Geocoding API jika Prosesor Document AI telah mendeteksi data alamat dalam dokumen yang diupload.
Membuka konsol BigQuery
- Di Konsol Google Cloud, pilih Navigation menu > BigQuery.
Kotak pesan Welcome to BigQuery in the Cloud Console akan terbuka. Kotak pesan ini menyediakan link ke panduan memulai dan catatan rilis.
- Klik Done.
Konsol BigQuery terbuka.
-
Luaskan Project ID Anda di Explorer.
-
Luaskan invoice_parser_results.
-
Pilih doc_ai_extracted_entities dan klik Preview.
Anda dapat melihat informasi formulir yang diekstrak dari invoice oleh pemroses invoice, dan Anda dapat melihat bahwa informasi alamat dan nama pemasok telah terdeteksi.
- Pilih geocode_details, lalu klik Preview.
Anda dapat melihat alamat, garis lintang, dan garis bujur yang diformat untuk setiap invoice yang telah diproses yang berisi data alamat yang dapat diekstrak oleh Document AI.
Memeriksa apakah pipeline end-to-end telah memproses data formulir dan alamat.
Selamat!
Anda telah berhasil menggunakan Document AI API dan layanan Google Cloud lainnya untuk membangun pipeline pemrosesan invoice end-to-end. Di lab ini, Anda mengaktifkan Document AI API, men-deploy fungsi Cloud Run yang menggunakan Document AI, BigQuery, Cloud Storage, dan Pub/Sub API, serta mengonfigurasi fungsi Cloud Run agar dipicu saat dokumen diupload ke Cloud Storage. Anda juga mengonfigurasi fungsi Cloud Run untuk menggunakan library klien Document AI untuk Python dan untuk dipicu saat pesan Pub/Sub dibuat.
Langkah berikutnya/Pelajari lebih lanjut
- Untuk membaca selengkapnya tentang autentikasi formulir ini, lihat panduan.
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 26 Agustus 2025
Lab Terakhir Diuji pada 29 Juli 2025
Hak cipta 2025 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.