Google Cloud Functions не возвращает ответ - PullRequest
1 голос
/ 28 мая 2019

Я использую этот API в облачных функциях Google https://ocr.space/ocrapi Это функция, которую я развернул

def ocr_space_url(request):
    request_json = request.get_json()
    request_args = request.args


    if request_json and 'url' in request_json:
        url = request_json['url']

    elif request_args and 'url' in request_args: 
        url = request_args['url']
    else:
        url = 'http://www.africau.edu/images/default/sample.pdf'

    headers = {
        'apikey': 'helloworld',
    }
     payload = {'url': url,
               }
    r = requests.post('https://api.ocr.space/parse/image',
                      headers=headers, data=payload,
                      )

    return r.content.decode()


Развернуто так:
gcloud functions deploy ocr_space_url --runtime python37 --trigger-http

Позвонив по:
curl -X POST "https://us-central1-prefab-environs-241910.cloudfunctions.net/ocr_space_url" -H "Content-Type:application/json" -d "{"url": "http://dl.a9t9.com/ocrbenchmark/pdfscan.pdf"}"

когда я вызываю это с типом контента, это выдает мне ошибку ниже

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>


если я назову это без типа контента, оно переходит в else, потому что я получаю request_json = None, а для url в else это дает правильный результат

Я впервые использую облачные функции, пожалуйста, помогите

1 Ответ

2 голосов
/ 28 мая 2019

Используйте запрос в качестве параметра, проанализируйте ваши данные POST как json (или что угодно)

#def ocr_space_url(url, overlay=False, api_key='helloworld', language='eng'):
def ocr_space_url(request):
    """ OCR.space API request with remote file.
        Python3.5 - not tested on 2.7
    :param url: Image url.
    :param overlay: Is OCR.space overlay required in your response.
                    Defaults to False.
    :param api_key: OCR.space API key.
                    Defaults to 'helloworld'.
    :param language: Language code to be used in OCR.
                    List of available language codes can be found on https://ocr.space/OCRAPI
                    Defaults to 'en'.
    :return: Result in JSON format.
    """

    request_json = request.get_json()
    if request_json and 'url' in request_json:
        url = request_json['url']
    else:
        url = 'http://www.africau.edu/images/defaultsample.pdf'

    payload = {'url': url,
               'isOverlayRequired': False,
               'apikey': 'helloworld',
               'language': 'eng',

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

Сделайте запрос с помощью --data '{"url": "http://www.africau.edu/images/defaultsample.pdf"}' -H "Content-Type: application/json"

...