Попытка передать изображение в кодировке base_64 для аутентификации google

Итак, я работаю над небольшим проектом (спокойный сервис, формат json, который не упоминается в коде), в котором код принимает данные изображения base_64 и декодирует их из изображения, я могу преобразовать его обратно в изображение, но Я не могу использовать Google Vision (googel ocr) на изображении для извлечения текста. Единственная часть, которая не работает, - это следующий блок кода:


from flask import Flask,request,jsonify
import os,io,re,glob,base64
from google.cloud import vision
from google.cloud.vision import types
from PIL import Image
app = Flask(__name__)
os.environ['GOOGLE_APPLICATION_CREDENTIALS']=r'date_scanner.json'
@app.route('/jason_example',methods=['POST'])
def jason_example():
    req_data=request.get_json()
    base_64_image_content=req_data['imgcnt']
#the issue starts from here 
    image = base64.b64decode(base_64_image_content)
    image=Image.open(io.BytesIO(image))
    image=vision.types.Image(content=content)
    response=client.text_detection(image=image)
    texts=response.text_annotations`
    enter code here

person AdmiralSandwich    schedule 25.11.2019    source источник
comment
Сообщите нам точную ошибку, которую вы получаете ... И дополнительную информацию о том, что на самом деле нужно сделать коду.   -  person Jonathan Alfaro    schedule 25.11.2019


Ответы (1)


В любом случае нет необходимости использовать Image.open, который, как мне кажется, является PIL методом. Вы должны иметь возможность декодировать это прямо в байтовую строку с помощью base64.decodebytes, как указано в этом ответе,

Код должен выглядеть так:

# the issue starts from here 
image_bytes = base64.decodebytes(base_64_image_content)
image = vision.types.Image(content=image_bytes)
response=client.text_detection(image=image)
texts=response.text_annotations
person v25    schedule 25.11.2019