def lambda_handler()

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)
    }