Django DRF接收Base64图片调用AWS Textract报类型错误如何解决
问题原因
报错是因为你从序列化器validated_data中取出的image是Django的SimpleUploadedFile类型实例,不是AWS Textract接口要求的bytes类型对象,无需生成物理文件,直接读取该文件对象的内容即可得到字节流。
修复方案
仅需修改你代码中img_bytes的赋值逻辑,调用SimpleUploadedFile的read()方法读取内容:
import boto3 class ocrRequestSerializer(serializers.ModelSerializer): image = Base64ImageField(required=False) class Meta: model = ocrRequest fields = '__all__' def create(self, validated_data): image=validated_data.pop('image') ocr_request = ocrRequest.objects.create() # 直接读取文件对象内容得到bytes,无需落盘存储 img_bytes = image.read() textractmodule = boto3.client('textract') response = textractmodule.analyze_document(Document={'Bytes': img_bytes}, FeatureTypes=["FORMS"]) doc = Document(response) # 后续你的业务逻辑 return ocr_request
补充说明
如果后续你还需要复用这个image对象做其他操作,读完之后可以调用image.seek(0)重置文件指针到开头,避免后续读取内容为空。
内容的提问来源于stack exchange,提问作者Etienne
相关产品推荐
相关产品推荐

