目录
系统架构功能说明操作图&流程说明参考资料系统架构
功能说明
上传图片至S3辨识图片内的文字,并框出辨识到的文字操作图&流程说明
创建S3储存桶在搜寻栏输入S3,前往该页面
点击建立储存贮体
命名储存贮体
启用ACL
解除存取权限的封锁
接着点击"建立储存贮体",便可看到刚刚创建的储存贮体
进入储存贮体内
点击上传,选择图片并修改许可权后上传,成功后即可看到储存贮体内存在刚上传的图片
用同样的步骤上传opencv函式库(为了之后Lambda能使用opencv)
建立Lambda
在搜寻栏里输入Lambda,前往该页面
点击建立函式
命名此函式,并修改要使用的程式语言(对应到opencv的版本)
修改执行角色为LabRole
完成上述步骤后点击建立函式,成功后便可看到刚建立的函式
import jsonimport base64import boto3from datetime import datetimeimport numpy as npimport cv2import osimport timedef lambda_handler(event, context): s3 = boto3.client('s3') #bucket_name要改为自己储存贮体的名称 #file_name则是要从储存贮体拿来辨识的图片名称 bucket_name = 'detectword' file_name = "origin.png" img_data = s3.get_object(Bucket=bucket_name, Key=file_name) image_data = img_data['Body'].read() nparr = np.frombuffer(image_data, np.uint8) image = cv2.imdecode(nparr, cv2.IMREAD_COLOR) print('Bucket name: {}'.format(bucket_name)) print('Upload file name: {}'.format(file_name)) #get current unix time created = int(datetime.now().timestamp()) #OCR client=boto3.client('rekognition') response=client.detect_text(Image={'S3Object':{'Bucket':bucket_name,'Name':file_name}}) print(json.dumps(response)) # 获取文本区域的信息 text_detections = response["TextDetections"] # 绘制矩形 for detection in text_detections: # 检查是否检测到了文本 if "Geometry" in detection and "BoundingBox" in detection["Geometry"]: box = detection["Geometry"]["BoundingBox"] x = int(box["Left"] * image.shape[1]) y = int(box["Top"] * image.shape[0]) w = int(box["Width"] * image.shape[1]) h = int(box["Height"] * image.shape[0]) cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2) cv2.imwrite('/tmp/image.jpg', image) s3.upload_file('/tmp/image.jpg', bucket_name, f"result.png") return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }
接着,先回到S3创建的储存贮体内複製opencv的物件URL,在下一步会用到
完成后回到Lambda,点击左上角的这个图标
点击"层",并开始建立Layer
建立成功后回到Lambda的程式设计页面
将页面滑到最下面,开始将刚刚创立的Layer新增到此函式
点击"自订Layer",并选择刚刚建立的Layer和版本,接着点击"新增"
完成后会回到程式设计页面,接着点击"TEST"建立测试用事件
接着,为了预防程式运作时长过久而报错,要先修改程式运作时间
完成后回到"程式码",点击"TEST",若成功运作则会回传'Hello from Lambda!',否则会出现error
若成功运作的话,回到S3的储存贮体内会看到处理后的图(result.png)
点进去后要先到"许可"编辑物件的读取权,修改好后储存变更(若没修改则无法下载结果图)
接着点击"物件URL",便能下载结果图
参考资料
文字辨识: https://aws.amazon.com/tw/rekognition/
Lambda: https://docs.aws.amazon.com/zh_tw/lambda/latest/dg/lambda-python.html
框出文字: https://blog.csdn.net/weixin_38145317/article/details/89497616