Я использую этот 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 он дает мне правильный результат
Я впервые в жизни использую облачные функции, пожалуйста, помогите
Используйте запрос в качестве параметра, анализируйте данные 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"
Вы поставили requests
в файле requirements.txt?
эта проблема решена. новая проблема TypeError: 'Request' object is not iterable
Я не получаю ничего в request_json = request.get_json()
@irumzahra использует '
вместо "
: -d '{"url": "http://dl.a9t9.com/ocrbenchmark/pdfscan.pdf"}'
теперь я получаю эту ошибку
Error: could not handle the request