Google App Engine: изображение в строку base64 для оптического распознавания символов (Python)Python

Программы на Python
Anonymous
Google App Engine: изображение в строку base64 для оптического распознавания символов (Python)

Сообщение Anonymous »

У меня есть следующий код в Google App Engine, который принимает изображение от пользователя и впоследствии выполняет распознавание этого изображения.

index.html:
main.py:

Код: Выделить всё

import requests

def image_to_text(encoded_string, content_type="jpeg"):

api_key = "API_KEY"
overlay = False
language = 'eng'

payload = {'isOverlayRequired': overlay,
'apikey': api_key,
'language': language,
'base64Image': "data:image/{};base64,{}".format(content_type,
encoded_string)
}

r = requests.post('https://api.ocr.space/parse/image',
data=payload)
return r.content.decode()

class Submit(webapp2.RequestHandler):
def post(self):
new_image = self.request.get("newImage")
if new_image is not '': # ie user uploads an image
IMG = UploadImage()
IMG.img = new_image # ndb.BlobProperty()
img_key = IMG.put() # stores it in datastore
img_key_url = img_key.urlsafe()
base64_string = new_image.encode('base64') # this is the step that I may be doing wrongly
text= image_to_text(base64_string)
Однако я получил сообщение об ошибке, сообщающее, что это недопустимое изображение в формате Base64.

Следующий код (для чтения изображения и преобразования его в строку base64) работает, когда я читаю файл с локального диска. (API OCR, который я использую, можно найти здесь: https://ocr.space/ocrapi#python

OCR.py:

Код: Выделить всё

import requests
import base64

def image_to_text(base64_encoded_string=None,content_type="jpeg"):
filename = 'image.jpg'
with open(filename, 'rb') as f:
encoded_string = base64.b64encode(f.read()).strip('\n')

api_key = "API_KEY"
overlay = False # Boolean value indicating if the overlay is required along with the image/pdf parsed result
language = 'eng'

payload = {'isOverlayRequired': overlay,
'apikey': api_key,
'language': language,
'base64Image':"data:image/{};base64,{}".format(content_type,
encoded_string)
}

r = requests.post('https://api.ocr.space/parse/image',
data=payload)
return r.content.decode()
Любая помощь будет принята с благодарностью. Спасибо!

Вернуться в «Python»