iT邦幫忙

0

如何 以path 形式連動google cloud 中的文件

  • 分享至 

  • xImage

如題~

情境描述:
在linebot上想讀取回傳的url
之前是以urllib.request.urlopen方式開啟,後來改成gs://也一樣,如下code 進一步顯示:input_file 變數進來的是http response,可是最底下image_open()需要path 或file 作文字偵測。(之前PO過同一段,但卡在其他問題,有覺得code 熟習的版上前輩不好意思了~)

def text_detected(user_id):
    input_file=f"gs://img_platecapture/{user_id}.jpg"
    with io.open(input_file, 'rb') as image_file:
        content = image_file.read()
    
    image = vision.Image(content=content)
    response = client.text_detection(image=image)
    
    if response.error.message:
        raise Exception(
            '{}\nFor more info on error messages, check: '
      'https://cloud.google.com/apis/design/errors'.format(
            response.error.message))

    img = Image.open(input_file)

找到的方式

  1. 網上找到的方法是要把它下載後存放到local端blob.download_as_bytes(),然後blob.download_to_filename(跳出error 表示 blob 沒有down_as_bytes 這個attribute)
  2. 另外看到可以直接用gs://{bucketname}/{blobname}當成path(但我跑出來是invalid argument,不知是否需要另外先做什麼處理?)

求解
想請問版上的前輩,有否什麼辦法可以解決上述問題
1.以path 形式連動google cloud 中的文件
2.或者有無什麼方式可以從http response 轉成file 形式,以讓另外一個程式讀取

froce iT邦大師 1 級 ‧ 2022-11-25 13:49:33 檢舉
沒code沒辦法看。
另外 gs:// 要裝對應的軟體,應該是 gsutil 才能處理。建議用1
ckp6250 iT邦好手 1 級 ‧ 2022-11-25 15:23:40 檢舉
把【google cloud】mount 到 server 中,當做一個資料夾,就可以用 path 方式處理。
froce iT邦大師 1 級 ‧ 2022-11-25 15:37:16 檢舉
https://cloud.google.com/python/docs/reference/storage/latest
你要用這個去接,你才能用blob.download_as_bytes()
https://medium.com/google-cloud/automating-google-cloud-storage-management-with-python-92ba64ec8ea8

要不然就像上面提到的用mount
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答