NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io




Task 1 $ 2


export SANAME=challenge

gcloud iam service-accounts create $SANAME

gcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID --member=serviceAccount:$SANAME@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com --role=roles/bigquery.admin

gcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID --member=serviceAccount:$SANAME@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com --role=roles/storage.admin

gcloud iam service-accounts keys create sa-key.json --iam-account $SANAME@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com

export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/sa-key.json

gsutil cp gs://$DEVSHELL_PROJECT_ID/analyze-images.py .

Task 3


import os

import sys


from google.cloud import storage, bigquery, language, vision, translate_v2



if ('GOOGLE_APPLICATION_CREDENTIALS' in os.environ):

if (not os.path.exists(os.environ['GOOGLE_APPLICATION_CREDENTIALS'])):

print ("The GOOGLE_APPLICATION_CREDENTIALS file does not exist.n")

exit()

else:

print ("The GOOGLE_APPLICATION_CREDENTIALS environment variable is not defined.n")

exit()



if len(sys.argv)<3:

print('You must provide parameters for the Google Cloud project ID and Storage bucket')

print ('python3 '+sys.argv[0]+ '[PROJECT_NAME] [BUCKET_NAME]')

exit()



project_name = sys.argv[1]

bucket_name = sys.argv[2]


# Set up our GCS, BigQuery, and Natural Language clients

storage_client = storage.Client()

bq_client = bigquery.Client(project=project_name)

nl_client = language.LanguageServiceClient()



# Set up client objects for the vision and translate_v2 API Libraries

vision_client = vision.ImageAnnotatorClient()

translate_client = translate_v2.Client()



# Setup the BigQuery dataset and table objects

dataset_ref = bq_client.dataset('image_classification_dataset')

dataset = bigquery.Dataset(dataset_ref)

table_ref = dataset.table('image_text_detail')

table = bq_client.get_table(table_ref)



# Create an array to store results data to be inserted into the BigQuery table

rows_for_bq = []



# Get a list of the files in the Cloud Storage Bucket

files = storage_client.bucket(bucket_name).list_blobs()

bucket = storage_client.bucket(bucket_name)



print('Processing image files from GCS. This will take a few minutes..')



# Process files from Cloud Storage and save the result to send to BigQuery

for file in files:

if file.name.endswith('jpg') or file.name.endswith('png'):

file_content = file.download_as_string()



# TBD: Create a Vision API image object called image_object

# Ref: https://googleapis.dev/python/vision/latest/gapic/v1/types.html#google.cloud.vision_v1.types.Image

from google.cloud import vision_v1

import io

client = vision.ImageAnnotatorClient()





# TBD: Detect text in the image and save the response data into an object called response

# Ref: https://googleapis.dev/python/vision/latest/gapic/v1/api.html#google.cloud.vision_v1.ImageAnnotatorClient.document_text_detection

image = vision_v1.types.Image(content=file_content)

response = client.text_detection(image=image)



# Save the text content found by the vision API into a variable called text_data

text_data = response.text_annotations[0].description



# Save the text detection response data in <filename>.txt to cloud storage

file_name = file.name.split('.')[0] + '.txt'

blob = bucket.blob(file_name)

# Upload the contents of the text_data string variable to the Cloud Storage file

blob.upload_from_string(text_data, content_type='text/plain')



# Extract the description and locale data from the response file

# into variables called desc and locale

# using response object properties e.g. response.text_annotations[0].description

desc = response.text_annotations[0].description

locale = response.text_annotations[0].locale



# if the locale is English (en) save the description as the translated_txt

if locale == 'en':

translated_text = desc

else:

# TBD: For non EN locales pass the description data to the translation API

# ref: https://googleapis.dev/python/translation/latest/client.html#google.cloud.translate_v2.client.Client.translate

# Set the target_language locale to 'en')

from google.cloud import translate_v2 as translate



client = translate.Client()

translation = translate_client.translate(text_data, target_language='en')

translated_text = translation['translatedText']

print(translated_text)



# if there is response data save the original text read from the image,

# the locale, translated text, and filename

if len(response.text_annotations) > 0:

rows_for_bq.append((desc, locale, translated_text, file.name))



print('Writing Vision API image data to BigQuery...')

# Write original text, locale and translated text to BQ

# TBD: When the script is working uncomment the next line to upload results to BigQuery

errors = bq_client.insert_rows(table, rows_for_bq)



assert errors == []









#############################################################################################################################3



-------------->>>>>>>>>>>run this in cloud shell:



python3 analyze-images.py $DEVSHELL_PROJECT_ID $DEVSHELL_PROJECT_ID





################################################################################################################################3





------------------>>>>>>>>>>>>>>>>>>>>Go to BigQuery, run:

SELECT locale,COUNT(locale) as lcount FROM image_classification_dataset.image_text_detail GROUP BY locale ORDER BY lcount DESC
     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.