in source/infer-ocr/src/infer_ocr_app.py [0:0]
def lambda_handler(event, context):
if 'body' not in event:
return {
'statusCode': 200,
'headers': {
'Access-Control-Allow-Headers': '*',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': '*'
}
}
if isinstance(event['body'], str):
body = json.loads(event['body'])
else:
body = event['body']
if 'url' in body:
uri = body['url']
base64_image = Base64Image.from_uri(uri)
else:
base64_image = Base64Image.from_base64_image_string(body['img'])
pil_image = base64_image.get_pil_image()
img = np.array(pil_image)[:, :, :3][:, :, ::-1]
dt_boxes, rec_res = text_sys(img)
boxes = dt_boxes
dt_results = list(zip(dt_boxes, rec_res))
dt_results.sort(key=lambda x: (x[0].min(0)[1]))
result = []
for row in dt_results:
row = {
"words": row[1][0],
"location": {
"top": int(row[0][0][1]),
"left": int(row[0][0][0]),
"width": int(row[0][2][0] - row[0][0][0]),
"height": int(row[0][2][1] - row[0][0][1])
},
"score": float(row[1][1])
}
result.append(row)
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json',
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST'
},
'body': json.dumps(result)
}